【发布时间】:2013-11-06 03:40:16
【问题描述】:
我正在使用 <ul> 和 <li> 元素创建一个类似于标签的功能,我注意到 CSS background-color: inherit 的这种意外行为。
有人会认为inherit 实际上并不是指transparent,而是child.background-color == parent.background-color(请原谅伪代码)。
我的代码很简单,但我有一个问题:我正在为可变条件开发。这意味着我永远无法知道我的代码将使用什么背景颜色,而且我不想介绍我自己的。
我准备了一个JSFiddle,其中背景是在页面加载时随机设置的,以模仿我的代码目的地的随机性。明显的问题是活动选项卡的背景颜色预设看起来很糟糕。所以,我把它改成了background-color: inherit。 (见JSFiddle 2)
虽然这显然解决了背景问题,但下方元素 (cg_content) 的边框再次开始显示,因为 inherit 属性的作用类似于 transparent,而不是在设置背景时的作用-颜色。
问题是:有没有办法让它在不使用 Javascript 的情况下继承实际的背景颜色?
如果没有,您能否建议一种更好的方法来使这些标签看起来不错没有预设颜色?
P.S.:内容 <div> 不应是 <li> 元素的子元素,因为这些选项卡共享一些内容。
P.S.2:我不能再清楚了,我显然知道如何用 JS 做到这一点。我只是不想。
【问题讨论】:
-
我的解决方案,如果您只需要一个不会与文本颜色冲突的非透明背景:在父子元素上,我使用了
currentColor和filter的组合:@987654337 @、contrast、brightness,有时还有grayscale。此技巧适用于浅色、深色甚至彩色主题的动态主题,无需明确指定任何颜色值。 -
嗨@JoeDF,听起来很有趣!我认为它并没有直接回答这个问题,因为这个问题是关于未知环境的,但请随时发表您的评论作为答案,因为我认为它可能会帮助其他读者!
标签: html css tabs background-color