Understanding CSS Text Decoration Override
In CSS, the text-decoration property allows for the addition or removal of text effects such as underlines or strikethroughs. However, you may encounter situations where your override attempts to remove text decoration do not seem effective. This is because text-decoration behaves differently from other text styling properties like font-weight.
Nested Element Propagation
The key to understanding this behavior lies in the propagation of text decoration styles. When you apply text-decoration to an element, it will affect not only that element but also any nested elements within it. This means that setting text-decoration: none on a parent element will only remove the decoration from the parent element itself, but any child elements will inherit the parent's decoration.
Example
In the example provided, you have the following CSS:
ul > li { text-decoration: none; } ul > li.u { text-decoration: underline; } ul > li > ul > li { text-decoration: none; } ul > li > ul > li.u { text-decoration: underline; }
And the following HTML:
<ul> <li>Should not be underlined</li> <li class="u">Should be underlined <ul> <li>Should not be underlined</li> <li class="u">Should be underlined</li> </ul> </li> </ul>
Applying this CSS to the HTML will result in the nested list items (
To remove the decoration from the nested list items, you need to specify text-decoration: none on each level of nesting. This would look like:
ul > li { text-decoration: none; } ul > li.u { text-decoration: underline; } ul > li > ul > li { text-decoration: none; } ul > li > ul > li.u { text-decoration: none; /* Added */ }
Further Considerations
Keep in mind that browser behavior can vary regarding text-decoration propagation. Some browsers interpret the specification more strictly and apply it as described above, while others may propagate the decoration even with text-decoration: none set on descendant elements.
The above is the detailed content of Why Doesn't `text-decoration: none` Always Remove Text Decorations in Nested CSS Elements?. For more information, please follow other related articles on the PHP Chinese website!