首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

:has 语法,终于可以用了

多年来,CSS 开发者一直希望能够根据元素内容选择元素。虽然 CSS 提供了许多基于特征选择元素的选择器,但直到最近才有了根据元素内容选择元素的方法。 幸运的是,:has() 的引入改变了这一点。...以下是一些可能的示例: 在应用的某些页面上,你可能想要更改 body 元素的全局字体大小或背景颜色。在引入 :has 伪之前,我们通常需要通过后端根据页面类型切换某些 HTML 。...我们可以使用 相邻兄弟组合器 + 选择紧跟在另一个元素后面的元素。例如,要选择一个标题后面跟着一个副标题,可以使用 title:has(+.subtitle)。...结论 :has 伪CSS 选择器工具中的一个强大补充。它允许你根据元素内容选择元素,从而简化了许多情况,使你的代码更易于维护。通过使用组合器,你可以进一步细化选择并实现更高级的效果。...学习如何使用组合器和其他伪实现更高级的效果。

17320

如何在 React 中高效管理 CSS

通过使用条件样式(conditional CSS classes),可以轻松实现这些变化,这些根据特定条件进行应用或移除。 在 React 中,这些通常根据组件的 prop 值或状态进行应用。...CSS 如何被应用到元素上的。...保存文件后,您将得到同样漂亮的按钮: 这种方法可以进一步优化,在应用相应的 CSS 之前检查 prop 是否具有有效值,而不是在 prop 的值为 true 时应用与任何 prop 相关联的 CSS...cva 和 clsx 之间的关键区别在于,需要在 cva 中显式指定在渲染组件时根据不同 props 值的存在组合应用于组件的样式。...更大的控制力:通过显式定义每个 prop 值和组合,此方法为您提供了更大的组件外观控制权。 消除意外的副作用:cva 库的语法通过确保根据组件的 prop 值设置,消除了意外的副作用。

10010
您找到你想要的搜索结果了吗?
是的
没有找到

CSS 变量由浅入深,提升效率必备知识!

用例四:CSS Grid CSS 变量对于网格非常有用。 假设希望网格容器根据定义的首选宽度显示其子项。 与为每个变体创建并复制CSS相比,使用变量更容易做到这一点。...另一个有用的例子是使用CSS变量继承定制CSS动画: @keyframes breath { from { transform: scale(var(--scaleStart)); }...如果我们想根据元素调整alpha值,这样做可以提供灵活性。唯一的缺点是无法使用DevTools颜色选择器调整rgba值。 另一个例子是将它与background属性一起使用。...根据CSS规范: @keyframes规则中使用的任何自定义属性都会受到动画污染,这将影响通过动画属性中的var()函数引用它时如何处理它。 如果我们希望上述动画能够正常工作,则应采用老式的方法。...注意不同的变化以及更改--size值如何导致化身的大小变化。

2.1K20

10分钟内就可以学会的几个CSS高招

5、 Clamp it down 现在,当我们谈论响应式布局时,有 90% 的时间我们谈论的是根据设备或视口上的可用空间更改某些内容的宽度。有很多方法可以做到。...7、 变量的变量 注意我们如何在多个地方使用相同的颜色值,如果我们决定更改颜色,我们需要修改引用它的每一行代码,更好的方法是在根选择器上定义一个全局变量。 ?...然后,可以在任何需要的地方引用,现在当你决定更改它时,你只需修改一行代码变量级联,就像 CSS 中的其他所有内容一样,这意味着你可以通过在树的更深处重新定义它们覆盖它们: ?...你还可以将它们组合成更复杂的值,例如我们可以根据其他三个变量的值定义我们的 RGB 颜色,这种灵活性将通过允许你快速更换网站的不同主题真正改变。 ?...那是当你使用 JavaScript 管理状态时,还有另一个称为 focus-within 的伪

1.4K20

Jump Start Bootstrap 第1章

通过阅读本书,你也将见证Bootstrap如何成为专业程序员的福音。 Bootstrap,它为什么而存在?...响应式网页通常是流畅的,他们根据屏幕的大小调整自己,并且与移动设备的触控界面兼容。通过使用响应式网页设计,开发者可以创建强大的网页应用,取代iOS和Android等平台上的原生应用。...我们将使用它展示如何对其默认设计进行一些更改: 从这个按钮上删除圆角 改变填充量 调整字体大小 改变背景颜色 让我们使用开发工具检查这个按钮。...注意,我们使用了Bootstrapbtn和btn - primary覆盖CSS样式。从此以后,每当您使用Bootstrap的按钮组件时,它将会有一个类似于上图的更改样式。...CSS文件中删除CSS样式。 如果您想要更改web页面中仅一个特定按钮的样式,而不是针对Bootstrap的选择器,请使用ID应用CSS更改

3.5K40

编写模块化CSS:命名空间

一个叫.main-nav,另一个叫.button。 .button存在于.main-nav内。 然后现在你想把这个button的颜色从blue变成green。...你又如何能确保您的项目中的每个开发人员都以同样的方式来接受呢? 即使您的所有开发人员都拷贝了这个方案(因此也是以同样的方式),您如何知道您是否没有引入副作用(破坏了网站的另一部分)?...此更改表单的HTML可能是: ? 并且各自的(S)CSS更改是: ? 还有一件事。 注意到了我混合了一个对象和组件在.c-form__button里么?...那么更好的方式就是改变我们的CSS样式。所以或许这么改? ? 虽然改动CSS的版本稍微好一点,但是在排版风格方面,解决问题方式定不会只有一种。你能找出30种不同的组合也只是一个时间的问题。...我必须立即知道组件是否使用JavaScript。 我必须立即知道是否可以安全地编辑一个而不会影响其他任何其他CSS。 我必须立即知道每个class是适合于什么,以防止大脑过载。

2.6K70

WordPress主题开发基础:Body 指南

例如,如果要更改特定类别下的特定作者的文章外观。 如何添加自定义body WordPress有一个过滤器,您可以在需要时使用它添加自定义body。...不要忘记单击“保存更改”按钮存储您的设置。 接下来,您可以直接编辑WordPress网站上的任何文章或页面。...不要忘记单击“保存更改”按钮存储您的设置。 接下来,您可以直接编辑WordPress网站上的任何文章或页面。...将分类名称添加到单个文章页面的body中 假设您要根据单个文章的分类来自定义它们的外观。您可以使用body实现此目的 首先,您需要在单个文章页面上将分类名称添加为CSS。...然后,您可以根据需要使用CSS对其进行样式设置。

2K20

Tailwind CSS那些事儿

下面呢,我们就以我相对熟悉的技术(Vite+React)演示如何在项目中使用Tailwind CSS。 1. 创建项目 我们是用Vite创建一个React+TS项目。.../src/index.css作为主css。当然,我们可以安装项目的不同,根据情况引入。 4....解析潜在的 tailwind 名以检查它们是否真的是 tailwind 名。 如果是,则从中生成一些 CSS。 用生成的 CSS 替换原始的 css 文件中的 @tailwind 规则。 5....而且,这种方法还有另一个缺点:通过 props 接受工具可能会使确保一致的组件视图变得更加困难。这种方法鼓励在应用程序中为相同组件使用任何工具组合,这可能导致视觉一致性的缺失。...这种方法的另一个好处是,它使维护变得更加简单:对工具更改可以在一个地方进行,然后传播到应用程序中每个该变体的组件。

41420

如何正确使用:has和:nth-last-child

在某些情况下,一个组件或一个布局可能会根据子元素的数量而改变。 这在CSS中已经存在很多年了,但现在通过CSS :has,它变得更加强大。...介绍:nth-last-child 这篇文章的主要要素之一是:nth-last-child伪。我们可以使用该选择器模拟计算子元素。 来看看它是如何工作的。我将尽可能用直白的话解释。...不可能根据元素的数量设计父元素的样式 想象一下,当有5个或更多的项时,我们需要为每个添加display: flex。我们不能用 :nth-last-child 伪选择器做这个。...CSS :nth-last-child伪是构建条件性布局的关键。通过将它与CSS :has选择器相结合,我们可以检查一个父元素是否至少有特定数量的项,并对其进行相应的样式设计。...使用案例 基于子项数量而变化的Grid 当我们需要基于子项数量而更改gird布局时,这在目前的CSS中是不可能的。在CSS的grid中,我们可以使用minmax()基于可用空间动态改变grid。

17030

CSS Modules VS. styled-components,哪个才是解决 CSS 不足之处的更好方案?

它的 CSS-in-JS 思想以及通过 props 动态更改样式跟 React 的开发理念一脉相承,并且还基于 React Context API 还提供了自己的的主题切换能力。... ); }; 复制代码 注意,根据 CSS Modules 的官方规范,更推荐以驼峰式的命名方式定义名,而非 kebab-casing。...默认的哈希算法是[hash:base64],但是可以通过设置 localIdentName的属性更改哈希算法的规则。....globalTitle { color: green; } 复制代码 组合 (Composition) 除了局部作用域,CSS Modules 的另一个很重要的特性是组合(Composition...注意,当一个从不同文件中组合多个时,被组合的规则的应用顺序是不可预测的。因此,应该要避免来自不同文件的多个名中为同一属性定义不同的值。

7.3K72

Tailwind CSS 真有那么好吗?讨厌它的前六大原因

,你就可以轻松地知道每个元素的功能,并通过编辑 CSS 文件更改其外观。...你可以轻松地通过查看其知道按钮的功能,并通过编辑 CSS 文件更改其外观。使用 Tailwind CSS,你必须记住很多名及其含义,并且每次想要调整设计时都必须修改 HTML。...它不具有可扩展性和可重用性 Tailwind CSS另一个问题是它不具有可扩展性和可重用性。Tailwind CSS 鼓励你通过对其应用多个实用程序单独设置每个元素的样式。...例如,你仍然需要知道如何使用 flexbox、grid 或 position 属性布局你的元素,但是你不是直接在你的 CSS 文件中使用它们,而是使用模仿它们的 Tailwind CSS 。...例如,你仍然需要知道如何使用 flexbox、grid 或 position 属性布局你的元素,但是你不是直接在你的 CSS 文件中使用它们,而是使用模仿它们的 Tailwind CSS

62410

编写优秀 CSS 代码的 8 个策略

首先,如果大多数样式被定义为你所知道的实用程序和,那么你就不必花费大量时间刷新和重新创建应用程序中已存在的样式。...3.在CSS中定义实用工具干你的CSS 我们将’utilities’定义为一个CSS,实际上它只用来做一件特定的事情,而不是封装整个元素。...如果它是一次性样式,或者如果你认为组合样式会经常使用,那么可能它作为CSS将可以更好地工作。 4.除非绝对需要,否则避免嵌套 假设有一些复选框的表单。在这个特定的情况下,你需要复选框内联(并排)。...例如,如果你希望手机屏幕显示某些内容,则必须使用另一个!important重写.hide以显示它。 我一直找不到使用!important的有效借口,除了在别人错误使用!...根据我的经验,除非你想知道它是如何工作的,否则自己写这些东西其实并没有多大的好处。有许许多多的边缘情况可以让你自己动手编写代码,所以为什么不使用别人已经写好的免费又能工作良好的代码呢?

1K60

【Java 进阶篇】CSS语法格式详解

在前端开发中,CSS(层叠样式表)用于控制网页的样式和布局。了解CSS的语法格式是学习如何设计和美化网页的关键。...它们可以根据元素的类型、名、ID、属性等选择元素。例如,h1选择所有元素,.btn选择所有名为"btn"的元素,#header选择ID为"header"的元素。...CSS注释 CSS中可以使用注释添加说明或注释掉不需要的代码。CSS注释以/*开始,以*/结束,之间的内容会被视为注释并被浏览器忽略。...CSS选择器、属性和值定义不同元素的样式。...你可以根据自己的需求和设计创建自定义的CSS规则。 8. 总结 CSS的语法格式是前端开发中的重要基础知识。通过选择器、属性和值的组合,你可以定义网页的外观和布局。

19910

web 编写优秀 CSS 代码的 8 个策略

首先,如果大多数样式被定义为你所知道的实用程序和,那么你就不必花费大量时间刷新和重新创建应用程序中已存在的样式。...3.在CSS中定义实用工具干你的CSS 我们将’utilities’定义为一个CSS,实际上它只用来做一件特定的事情,而不是封装整个元素。...如果它是一次性样式,或者如果你认为组合样式会经常使用,那么可能它作为CSS将可以更好地工作。 4.除非绝对需要,否则避免嵌套 假设有一些复选框的表单。在这个特定的情况下,你需要复选框内联(并排)。...例如,如果你希望手机屏幕显示某些内容,则必须使用另一个!important重写.hide以显示它。 我一直找不到使用!important的有效借口,除了在别人错误使用!...根据我的经验,除非你想知道它是如何工作的,否则自己写这些东西其实并没有多大的好处。有许许多多的边缘情况可以让你自己动手编写代码,所以为什么不使用别人已经写好的免费又能工作良好的代码呢?

2.2K00

前端练级攻略(第一部分)

语义标记 HTML 和 CSS 的最佳实践之一是编写语义标记。好的 web 语义意味着使用适当的 HTML 标签和有意义的 CSS 表示结构的意义。...另一个例子是footer标签 ,它告诉我们元素属于页面底部。 有关进一步,请阅读 CSSTricks 的 正确的 HTML5 语义 和 什么是语义名的构成要素。...CSS 后处理器在由预处理器手写或编译后对 CSS 应用更改。 例如,PostCSS 等一些后处理器具有自动添加浏览器供应商前缀的插件。...CSS体系结构:重构你的 CSS 是重构代码的入门指南。 ? 在重构代码时,有几件事需要问问自己。 * 你的取的是否有歧义? 6个月后,你还能理解你的名是什么意思吗?...从这些样式指南中需要注意的关键问题是,基于组件的 HTML 和 CSS 方法如何允许重用代码保持代码的清爽(DRY)。

1.3K00

如何编写类型安全的CSS模块

在本文中,我们将讨论CSS模块是什么,探讨它们的开发者体验缺陷,并学习如何通过使用TypeScript自动化解决这些问题。让我们开始吧! 什么是CSS模块?...然后在 JavaScript 中使用生成的引用 CSS,从而使 CSS 模块化和可重用,避免名冲突或不必要的重复。...此外,TypeScript 编译器不会在名不存在时通知你。 开发者体验的改进 CSS模块是一个很好的工具,但由于名是在运行时生成的并且在构建之间发生更改,因此很难以类型安全的方式使用它们。...引用不存在或打错字的 CSS 将无法按预期样式化 HTML,这可能很快演变成开发人员失去对工具的信任。让我们学习如何自动化它! 自动化 在这种情况下,自动化解决方案很简单。...", 有了这两个脚本,现在可以自动保持 CSS 模块类型定义的同步,并检查类型是否保持最新。 根据项目的不同,你可能更喜欢在本地或服务器上运行这些脚本,可能作为你的 CI 流水线的一部分。

96730

50个有价值的CSS编写规则,让你写出更好的CSS

12、使用速记 有时你想指定 padding-top 或 border-right ,但根据经验,我经常回到这些添加更多,所以,我习惯于总是使用速记,以便在不指定很多属性的情况下更容易更改,代码更少。...对我来说,这些是像带有显示 flex 或网格的 center 这样的东西,所以我创建了一个 .center-flex 和 .center-grid。创建实用程序来自动化这些重复的样式组合。...更改 CSS 属性值比更改 HTML 中的所有文本要快得多,而且国际化也更好,因为它允许你根据需要编写文本并使用 CSS 操纵它的外观。...比添加 CSS 并在出于样式原因更改 HTML 之前尽力而为。 47 、连字符还是下划线? 名和 id 名称最常见的分隔符是连字符,但无论你选择什么,都要坚持使用。...这些工具将查看你的 CSS 和 HTML,以确定你需要哪些样式。 如果你不确定你是否需要这个,考虑使用浏览器工具查找你的代码覆盖率,它会告诉你是否正在发布未使用的样式。

2.3K20

CSS编写规范

style标签定义样式(嵌入式),而由于行内样式与style标签定义的样式优先级比以CSS文件引入样式(外部样式表)优先级要高: 导致无法被以简单的选择器样式覆盖 导致以js的addClass添加的简单选择器样式优先级低而无无法起作用...不便于交接 4)不合理使用CSS选择器(组合、属性选择器)和id选择器 导致无法被以简单的选择器样式覆盖 导致以js的addClass添加的简单选择器样式优先级低而无无法起作用 不便于交接 当然...相关原则有: 1、常用控件、表格、布局和页面做出一套或者多套模板 单选、复选框、按钮、轮播图的上一张/下一张按钮等,应该根据不同场合提前做好一套或者数套模板,每次使用这些控件时应该在这些模板的基础上进行相应更改...5、表现与结构分离:CSS样式都应写在CSS文件中,且尽量少用id、组合、属性选择器和行内样式以及style标签样式 为避免在CSS文件使用选择器和使用js添加选择器进行样式覆盖时因优先级问题而无法覆盖成功...,所有样式的编写都应尽量使用单一的选择器编写样式,应尽量少用或不用id选择器、组合/层级选择器和属性选择器,这也可以减少浏览器的查找时间;同时,使用层级/组合选择器时对布局的依赖性太大,耦合性太强,

2.6K30

使用 :has() 选择前一个相邻元素

使用 CSS :has() 选择前一个兄弟姐妹 CSS 更令人抓狂的限制之一是长期以来它无法根据其子元素或前一个兄弟元素来选择元素。...可以使用相邻同级组合选择另一个之前的任何特定元素。...我们可以使用两个相邻的同级组合选择前第二个同级: .box:has(+ * + .circle) { width: 40px; height: 40px; } 如果您愿意,您可以将选择器的范围等同于一个...+您可以根据需要继续添加相邻同级组合器 ( ),以选择任意第 n 个前面的元素。...,可以将:has()伪与通用同级组合器 ( ~) 组合,只要第二个元素位于第一个元素之后,无论其位置如何,它都会匹配第二个元素: .box:has(~ .circle) { width: 40px

23630
领券