2

例如,如果我们需要设置 adivfont-sizeto 22px,有没有办法让 this 的后代仍然从fromdiv继承?(或任何可继承的样式,感谢@Sourabh 指出不是继承的)。font-sizebodybackground

我认为一个关键点是这样我们就可以改变body或一些父级的风格并让它通过,即使有一个中间风格的改变。所以最好,我们不会这样做:

body, #foo * { font-size: 16px }
#foo { font-size: 22px }

这与使用事件委托时如何解决 iPad 上的闪烁问题中所述的情况有关?,这里-webkit-tap-highlight-color需要设置为 a div,但是 this 的后代div最好继承 this 之上的东西(thisdiv的父级div)。

我可以使用 JavaScript 将 this 的样式div放在一个临时变量中,然后更改div's 的样式,然后将 this 的直接子级的样式更改为该div临时变量的值,然后再设置为的风格body不会被那些孩子或他们的后代继承。

4

4 回答 4

1

不会。在 DOM 中,后代元素将继承父元素的任何可继承 CSS。您可以通过再次声明它来“重置”它以匹配父项,但您不能完全按照您的要求进行操作,这只会更改 BODY 样式声明。

在我的脑海中,我能想到的一个解决方案不是依赖从body元素的纯继承,而是创建一个类并将其用于您想要从一个声明控制方面的所有元素。不过,由于 CSS 的特殊性,这仍然可能很棘手。

于 2013-06-24T04:35:37.380 回答
0

如果我正确理解您的问题,您可以像这样使用 > 组合器:

工作示例

body, #foo { background: yellow }
#foo>* { background: blue }

或者像这样:

工作示例2

body {
    background: yellow;
}
#foo {
    background: blue;
}
#foo>* {
    background: yellow;
}
于 2013-06-23T16:18:54.447 回答
0

答案并不完全

可以使用 css 关键字将属性重置为其初始值initial,这对于这些用户代理集样式(如-webkit-tap-highlight-color)特别有用

看到这个 jsFiddle

但是请注意,如果父级不存在,这不是默认设置的值,而是浏览器的默认设置。特别是,没有考虑body级别格式。


我还包含了default关键字,这实际上与根本不包含任何字体大小说明符相同 - 它沿着级联链向上查找具有指定字体大小的关键字,在本例中为元素名称选择器.

于 2013-06-24T05:24:53.310 回答
0

W3Cbackground-color统计

初始:透明

继承:无

所有元素都是透明的,无论其父级的background-color. 但是这种颜色是transparent这样的,父母的颜色在孩子身上是可见的。所以基本上,如果你想让它们继承颜色,你不能(至少不能使用 CSS)(可能有一个我不知道的技巧)。如果您不希望它是,则必须为每个元素指定颜色transparent

于 2013-06-23T17:01:27.587 回答