我正在试着做一些花哨的自动色彩对比度校正工作.我使用的是TailWind,我正在try 创建一些当对比度太低时自动更改 colored颜色 的CSS规则.

假设以下情况:

.bg-white .text-white {
  color: black;
}

很简单.我们自动将白色背景上的白色文本更改为白色背景上的黑色文本.每当有人指定.text-white时,他们就不必再担心指定的另一个更高的背景 colored颜色 超出了他们的控制范围,会违反WCAG可访问性指南.

然而,这就是我们的问题开始的地方.以下HTML将使白色文本变得难以辨认:

<div class="bg-white">
   <div class="bg-black">
      <span class="text-white">I was legible until you tried to be smart.</span>
   </div>
</div>

有很多方法可以解决这个难题;但我想知道的是,是否有一种方法可以使用:has() Select 器来实现这一点.

我想要一些类似以下的东西:

.bg-white:not(:has(class*="bg-")) .text-white {
  color: black;
}

我希望我说的是" Select BG-白色内的任何文本-白色,它没有任何其他具有类似于"BG-"的类的元素",因为这会改变背景 colored颜色 .

我的目标是让它只有最直接改变 colored颜色 的类被推定为背景 colored颜色 .

推荐答案

你差不多很棒了.你快错过[]米了

.bg-white:not(:has([class*="bg-"])) .text-white {
  color: red;
}
<div class="bg-white">
  <div class="bg-black">
    <span class="text-white">I was legible until you tried to be smart</span>
  </div>
</div>

<div class="bg-white">
    <span class="text-white">I was legible until you tried to be smart.</span>
</div>

Css相关问答推荐

大型菜单的CSS动态布局,根据菜单项的数量以行或列形式读取

为什么我的Angular material css文件不工作?

可以在 JavaFX CSS 中同时使用 dropshadow 和 insideshadow 吗?

是否可以在元素之间对齐渐变?

CSS 中的 :not(style) ~ :not(style) 是什么?

为什么 CSS Calc() 函数只需要+或-运算符前后有空格

为什么删除 AnimatePresence framer.div 时会出现轻微卡顿?

如何禁用亚像素渲染或强制浏览器将属性舍入到最近的像素?

在嵌套的弹性框中创建弹性项目之间的空间

弹簧靴.一个文件捕获 CSS 其他没有

位置绝对混乱的 CSS Flexbox

Twitter Bootstrap:进度条居中文本

控制表格单元格之间的间距

在 中制作等宽的列

在固定高度的输入字段中垂直对齐文本而不显示:表格或填充?

删除所有填充和边距表格 HTML 和 CSS

我应该如何组织我的 CSS 文件的内容?

Unicode 通过 CSS :before

bootstrap.css 和 bootstrap-theme.css 有什么区别?

我应该在我的 Bootstrap 项目中使用 normalize.css 吗?