TailwindCSS - 有没有办法不多次写入相同的前缀?例如“悬停:”

2023-12-01

问题:

class="hover:bg-blue-400 hover:-translate-y-2 hover:-translate-x-2 hover:scale-110 hover:shadow-2xl hover:shadow-blue-400 hover:text-white"

在这里你可以看到,有相同的前缀重复。
hover:foo hover:bar hover:hello hover:world hover:某物hover:another

我想知道是否有办法不写多次hover: prefix?


想法:

是做类似的事情:

hover:(class class class class class)

用括号或类似的东西,所以里面的所有类()将像一个类一样并自动添加到hover:

我认为顺风中有这个想法,但我不知道其语法。


如果可能的话,该解决方案还需要适用于所有其他前缀

enter image description here


简单的示例演示:

// not important, only for deleting the console.warn() 
console.clear();
<script src="https://cdn.tailwindcss.com"></script>

<body class="flex h-screen">
  <button class="m-auto p-4 rounded-md  bg-blue-200 transition hover:bg-blue-400 hover:-translate-y-2 hover:-translate-x-2 hover:scale-110 hover:shadow-2xl hover:shadow-blue-400 hover:text-white">
     hello world
   </button>
</body>

我看了所有的文档,都没有讨论这个概念:https://tailwindcss.com/docs/hover-focus-and-other-states#hover-focus-and-active

如果有人在这方面有经验,那将会很有帮助!


就像他在评论中@diego 所说的那样,这在技术上仅靠顺风是不可能的。


Tailwind 框架替代方案

也许你使用顺风框架,比如windiCSS https://windicss.org/features/variant-groups.html

具有此功能的:

<div class="hover:(bg-gray-400 font-medium) bg-white font-light"/>

javascript vanilla(简单脚本)

只想要顺风?

所以我想也许我们可以创建一个简单的JS脚本来解决这个问题。

enter image description here

twHover();

function twHover() {
  // get only the elements that have the hover attribute
  let hoverEls = document.querySelectorAll("[data-hover]");

  // loop through the elements that have the hover attribute
  hoverEls.forEach((el) => {
    // we get the string inside the attribute
    // and then make it into a array
    let twHoverClasses = `${el.dataset.hover}`.split(" ");

    // loop through the classes inside the element's attributes
    twHoverClasses.forEach((className) => {
      // add the class for you `hover:className`
      el.classList.add(`hover:${className}`);
    });
  });
}
<script src="https://cdn.tailwindcss.com"></script>

<body class="flex h-screen">
  <!-- original -->
  <button class="m-auto p-4 rounded-md  bg-blue-200 transition hover:bg-blue-400 hover:-translate-y-2 hover:-translate-x-2 hover:scale-110 hover:shadow-2xl hover:shadow-blue-40 hover:text-white">original</button>
  <!-- with script -->
  <button data-hover="bg-blue-400 -translate-y-2 -translate-x-2 scale-110 shadow-2xl shadow-blue-40 text-white" class="m-auto p-4 rounded-md  bg-blue-200 transition">with script</button>
</body>

想从 JS 脚本中获得更多信息吗?

  • also :focus, :lg, :sm, 等等。

用这个:

// this can be any preudo class that tailwind can have
twPseudo("focus");
// if there is nothing as parameter, we use hover
twPseudo();

function twPseudo(pseudo = "hover") {
  // get only the elements that have the hover attribute
  let hoverEls = document.querySelectorAll(`[data-${pseudo}]`);

  // loop through the elements that have the hover attribute
  hoverEls.forEach((el) => {
    // we get the string inside the attribute
    // and then make it into a array
    let twHoverClasses = `${el.dataset[pseudo]}`.split(" ");

    // loop through the classes inside the element's attributes
    twHoverClasses.forEach((className) => {
      // add the class for you `hover:className`
      el.classList.add(`${pseudo}:${className}`);
    });
  });
}
<script src="https://cdn.tailwindcss.com"></script>

<body class="grid grid-cols-2 place-items-center h-screen">
  <!-- original -->
  <div>
    <h2 class="text-3xl font-bold text-blue-500 mb-4">original</h2>

    <!-- hover -->
    <button class="m-auto p-4 rounded-md bg-blue-200 transition hover:bg-blue-400 hover:-translate-y-2 hover:-translate-x-2 hover:scale-110 hover:shadow-2xl hover:shadow-blue-40 hover:text-white">hover</button>

    <!-- focus -->
    <button class="m-auto p-4 rounded-md bg-blue-200 transition focus:bg-blue-400 focus:-translate-y-2 focus:-translate-x-2 focus:scale-110 focus:shadow-2xl focus:shadow-blue-40 focus:text-white">focus</button>
  </div>

  <!-- with script -->
  <div>
    <h2 class="text-3xl font-bold text-blue-500  mb-4">with script</h2>

    <!-- hover -->
    <button data-hover="bg-blue-400 -translate-y-2 -translate-x-2 scale-110 shadow-2xl shadow-blue-40 text-white" class="m-auto p-4 rounded-md bg-blue-200 transition">hover</button>

    <!-- focus -->
    <button data-focus="bg-blue-400 -translate-y-2 -translate-x-2 scale-110 shadow-2xl shadow-blue-40 text-white" class="m-auto p-4 rounded-md bg-blue-200 transition">focus</button>
  </div>
</body>

enter image description here

还要确保将脚本代码放在页面末尾或内部DomContentLoaded event


优点:

  • 减少输入重复字符

enter image description here

保存超过 25 个字符(仅在您的示例中)

  • 多行属性

enter image description here

正如您所看到的,您可以将您的课程写在一行中,
以及另一行的悬停逻辑。使其易于调试。

  • 开箱即用。
    只需复制并粘贴,然后调用该函数即可。
    使用正确的参数(focus, sm, lg, xl, 2xl)或不带任何参数(将是hover)
// just call it at the end of the page
twPseudo();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TailwindCSS - 有没有办法不多次写入相同的前缀?例如“悬停:” 的相关文章

  • 如何在 PHP 的 HTML 页面中显示错误消息?

    我有以下登录表单 login php 其中要求输入用户名和密码
  • 指南针字体输出错误的字体文件路径

    font face font family HelveticaNeueLTStd Lt src url css fonts HelveticaNeueLTStd Lt otf format opentype 这是我的指南针代码的输出 inc
  • 为什么我的列表项项目符号与浮动元素重叠

    我有一个 XHTML Strict 页面 我在其中将图像浮动在常规文本段落旁边 一切都很顺利 除非使用列表而不是段落 列表的项目符号与浮动图像重叠 更改列表或列表项的边距没有帮助 边距是从页面左侧开始计算的 但浮动会将列表项推到右侧insi
  • 如何在 select2 下拉列表中换行?

    我正在使用 select 2 下拉菜单 然后在其内容中显示一些长句子 我想在句子的正确位置添加换行符 但下拉菜单是自动调整的 For example the content of the dropdown right now looks l
  • CSS:仅显示字符串的前两个字母

    是否可以使用纯 CSS 仅显示字符串的前两个字母 到目前为止我已经尝试过 没有成功 first letter 仅针对第一个字母 无论如何对我不起作用 nth of everything 需要额外的 javascript 文本溢出 省略号 正
  • 来自 HTML5 的 Phonegap Bonjour/Zeroconf 或 Websocket IP 发现

    我正在尝试实现一个 Phonegap HTML5 应用程序 该应用程序连接到 Websocket 服务器 在嵌入式设备中运行 也有 Bonjour 服务 以在家庭网络内交换数据 我想知道使用 Phonegap 检测服务器 IP 的最佳方法
  • socket.io 的良好初学者教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • @media语法/可能的组合

    我见过其中一些 media print media screen handheld print projection media all media all and property value media screen and prope
  • 使用 css 简单地将对象居中,无需修改

    我想使用 CSS 将对象居中 而不需要任何技巧 这可能吗 如何实现 我已经尝试过了 但是我的 p 标签消失了 centered position fixed top 50 left 50 有多种方法可以使元素居中 但这取决于您的元素是什么以
  • 将图像作为框架放置在 iframe 周围?

    我有一个网站尝试以移动格式显示 但在宽屏幕上 我确信 iframe 是正确的选择 我正在尝试将 iframe 加载到 iPhone 的图像中 你可以看一个例子here http webfro gs south tour iframe tes
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • 图像无法在带有 DOM 的 IE 中加载:控制台中的 7009 错误(无法解码)

    当在 IE 中的单个页面上加载许多图像时 在 IE11 中重现 其中一些图像开始加载失败 并在控制台中出现类似以下警告的内容 DOM7009 无法解码 URL 处的图像 某些唯一的 url 当我查看网络流量时 似乎确实从服务器收到了每个图像
  • 最大宽度调整以适应文本?

    不是最好的标题 但无论如何 我有一个元素max width和一些文字 如果文本长度超过一行所能容纳的长度 我会得到以下结果 My text here hello everyone 换句话说 它占据了完整的最大宽度 但由于单词向下移动 右侧有
  • CSS 类命名约定

    在网页上 有两个控件块 主要和次要 大多数人会使用什么类名 选择一 div class primary controls div
  • php - 解析html页面

    div divbox div p para1 p p para2 p p para3 p table class table tr td td tr table p para4 p p para5 p 有人可以告诉我如何解析这个 html
  • 使用 CSS 使一行 div 高度相同

    我有一排必须具有相同高度的 div 但我无法提前知道该高度可能是多少 内容来自外部源 我最初尝试将 div 放置在封闭的 div 中并将它们向左浮动 然后我将它们的高度设置为 100 但这没有明显的效果 通过将封闭 div 的高度设置为固定
  • 不可勾选的单选按钮与专有的复选框

    从 UI 角度来看 是拥有一组具有取消选中功能的单选按钮更好 还是拥有一组独占的复选框 意味着一次只能选中一个 更好 Update 我没想到对此会有如此负面的反应 如果我给出一个更接近其使用方式的示例 也许会有所帮助 我有一个充满数据绑定内
  • CSS3 信封形状

    正如您可能已经猜到的 该图像是邮件信封形状的一部分 如果可能的话 我想使用 CSS3 创建该形状 我已经制作了其他部分 但这个很棘手 该形状需要两侧都有三角形切口和圆角 大概是 border radius bottom left borde
  • 使用css bootstrap时如何仅向一列添加右边框?

    我正在尝试使用CSS引导框架 http getbootstrap com css tables在我的项目中 我正在使用带有以下类的表table table bordered table striped 我想删除除第一列之外的所有列的边框 这
  • HTML 锚点,禁用样式

    我有一些 html 锚链接代码 与文档的其余部分不同 我希望它看起来不是链接 有没有一种简单的方法可以禁用由于将文本包装在锚标记中而引起的样式更改 而不必强行使其相同 即 如果我更改正文字体样式 我不必也更改其他一些 link东西 将颜色设

随机推荐

  • php pdo多数组插入

    我已经玩了几个小时并试图解决这个问题 但看起来很难解决 我能够进行单个数组插入 person array name gt Wendy age gt 32 但如果我想要多个这样的 person array array name gt Dan
  • GCE + K8S - 访问推荐IP地址

    通过 Google Container Engine 上的标准 Kubernetes 部署 要包含使用 Kubernetes 负载均衡器设置配置的服务来创建网络负载均衡器 是否可以在应用程序中访问用户 或引用 的 IP 地址 对于 PHP
  • 将 utf8 字符串拆分为字符数组

    我正在尝试拆分utf8将字符串编码为字符数组 我现在使用的功能曾经可以工作 但由于某种原因它不再工作了 可能是什么原因 更好的是 我该如何解决它 这是我的字符串 Zelf heb ik maar n vraag wie ben jij 这是
  • 不允许用户保存 TFS 凭据

    这是这个问题的后续问题 加载 Visual Studio 时 如何更改用于连接到 Visual Studio Online TFSPreview 的默认凭据 我遇到的问题是 如果用户选中了 记住我的凭据 框 我需要按照我链接的问题中给出的答
  • 向 UIView 添加宽度边框,显示外面的小背景

    我正在尝试添加圆形边框UIView以绿色背景 我创建了简单的UIView具有 borderWidth cornerRadius 和 borderColor 属性的子类 我从故事板中设置它 IBDesignable class Rounded
  • 从现有集合中初始化对象初始值设定项中的仅获取集合

    我有一个具有仅获取集合属性的类 我想使用现有集合中的值来初始化集合 我知道可以初始化集合使用集合初始值设定项 我还可以创建该对象然后使用AddRange在集合上添加现有集合的项目 然而 这将创建具有空列表的对象 然后添加现有项目 有没有办法
  • 在 Shell 中重命名逆序编号的文件

    我正在寻找一种实用的方法来在 shell 中进行此练习 我有这些文件 1 txt 2 txt 3 txt 4 txt 5 txt 50 txt 我想这样重命名 50 txt 1 txt 49 txt 2 txt 48 txt 3 txt 以
  • MySQL计算N行的移动平均值

    我正在尝试计算移动平均值ofN 行 for单个查询中的所有行 在示例中 我尝试计算 50 行的移动平均值 SELECT h1 date h1 security id SELECT AVG last50 close FROM SELECT h
  • jsdom.env 不是将 svg 导出到图像的函数

    我正在尝试根据以下教程将 d3 svg 图像转换为图像 https github com hugolpz svgcreator node js 我安装以下语句 sudo npm install g jsdom d3js npm instal
  • 如何在我的 Netbeans 项目中包含外部 jar

    当我运行 清理并构建 时 jar正在创建的文件仅在以下情况下运行lib文件夹与 jar file 因此 如果我将 jar 文件移动到桌面并保留lib文件夹中的dist文件夹中 jar 文件会给我一个例外 我该如何处理这个问题 我通过仅创建一
  • docker run 命令出现“Exec 格式错误”

    我有这个基于 Golang 的 Dockerfile FROM golang latest RUN mkdir p app WORKDIR app COPY bin huru CMD huru 我检查了一下 huru 二进制文件位于工作目录
  • X11 - 图形渲染改进

    我目前正在将无符号整数数组渲染到窗口上的二维图像 但是 对于我想要用它完成的任务来说 它太慢了 这是我的代码 int x 0 int y 0 GC gc XGCValues gcv gc XCreateGC display drawable
  • 我们怎样才能让 Watir-Webdriver 处理 IE 无效证书屏幕?

    我们在测试时可能都见过这个屏幕 您所需要的只是一个带有自签名证书的 HTTPS 站点 然后您会看到 此网站的安全证书有问题 屏幕 这需要您单击链接才能继续 对于 Watir 这不是问题 我可以像处理任何其他网页一样自动化屏幕 根据其文本或
  • 将数据框列和外部列表传递给 withColumn 下的 udf

    我有一个具有以下结构的 Spark 数据框 bodyText token 具有标记 已处理 单词集 我有一个定义关键字的嵌套列表 root id string nullable true body string nullable true
  • Discord.py - 服务器静音用户

    我正在使用discord py 但不使用命令 我无意改变 为了解释机器人的目标 我将使用一个小方案 服务器成员发送如下消息 Start user 0001 ping 到的用户的服务器静音 任何人都听不到他在任何语音聊天中的声音 10秒过去
  • PHP日期计算

    PHP 中计算指定格式的两个日期之间的天数差异的最佳方式是什么 与日期格式无关的方式 我尝试了以下功能 function get date offset start date end date start time strtotime st
  • T/SQL 中的日期范围

    对于我正在工作的当前项目 我需要返回基于日期范围的汇总报告 我有 3 种类型的报告 年度 月度和日报 为了帮助返回此报告 我需要一个函数来返回一个大范围内的所有日期时间子范围 因此 例如 如果我对于 2006 01 01 11 10 00
  • 无服务器 - Numpy - 无法找到良好的绑定路径格式

    我已经为此奋斗了一个多星期 并浏览了各种论坛问题和帖子 但无法解决 我正在尝试将 numpy 打包在一个函数中 单独构建需求 我有多个函数 其中有多个需求 我想将它们分开 环境 Windows 10 家庭版 适用于 Windows 的 Do
  • 使用回收器视图播放 YouTube 视频

    我正在尝试从数据库获取 youtube id 来播放视频 然后在我的布局中使用 recyclerview 我想将其显示在我的设备上 我通过使用字符串数组来完成此操作 我只想在回收视图中播放 youtube 的视频 但我不断收到错误 java
  • TailwindCSS - 有没有办法不多次写入相同的前缀?例如“悬停:”

    问题 class hover bg blue 400 hover translate y 2 hover translate x 2 hover scale 110 hover shadow 2xl hover shadow blue 40