如何将'div”容器与公共 CSS 样式隔离并防止其子级继承全局样式?
将 Div 与公共 CSS 样式隔离
问题
考虑以下 HTML 代码:
<code class="html"><div id="mydiv"> <img src="an image source" /> <h1>Hi it's test</h1> </div></code>
应用以下内容CSS 样式表:
<code class="css">img { width: 100px; height: 100px; } h1 { font-size: 26px; color: red; }</code>
问题出现了:我们如何防止为所有 定义的样式?和
标签会影响 #mydiv 容器中的元素吗?
解决方案
要将 #mydiv 中的元素与全局 CSS 样式隔离,我们可以利用 all 简写属性和中引入的 unset 关键字CSS 级联和继承级别 3。
通过在 #mydiv 上设置 all:initial,我们阻止所有属性的继承并将其重置为默认值。这可以防止全局样式级联到容器中。
为了允许在 #mydiv 内继承,我们可以在其后代上设置 all: unset。通过这样做,我们可以使容器内定义的规则生效,而不受外部样式的干扰。
这是修改后的CSS代码:
<code class="css">#mydiv { all: initial; } #mydiv * { all: unset; }</code>
需要注意的是,这种技术适用于所有可能的 CSS 属性,包括供应商前缀的属性。为了确保广泛的浏览器支持,建议也以伪元素为目标:
<code class="css">#mydiv::before, #mydiv::after, #mydiv *::before, #mydiv *::after { all: unset; }</code>
替代方法
或者,为了更广泛的浏览器兼容性,您可以手动将每个 CSS 属性设置为其初始值#mydiv 上的值并继承其后代,如以下代码所示:
<code class="css">#mydiv { align-content: initial; align-items: initial; align-self: initial; ... color: inherit; ... } #mydiv::before, #mydiv::after, #mydiv *, #mydiv *::before, #mydiv *::after { align-content: initial; align-items: initial; align-self: initial; ... color: inherit; ... }</code>
浏览器支持
以下浏览器支持 all 简写属性:
- Chrome 37
- Firefox 27
- Safari 9.1
- Edge 79
- Opera 24
适用-最新浏览器支持信息,请参考官方文档。
以上是如何将'div”容器与公共 CSS 样式隔离并防止其子级继承全局样式?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

您是否曾经在项目上需要一个倒计时计时器?对于这样的东西,可以自然访问插件,但实际上更多

格子呢是一块图案布,通常与苏格兰有关,尤其是他们时尚的苏格兰语。在Tartanify.com上,我们收集了5,000多个格子呢
