当前位置: 首页 > 面试题库 >

如何从公共CSS样式中隔离div?

乐正烨熠
2023-03-14
问题内容

我在HTML中有一些代码例如

<html>
 <body>
  <img src='an image source'/>
  <h1>Hi it's test</h1>
  <div id='mydiv'>
    <img src='an image source'/>
    <h1>Hi it's test</h1>
  </div>
 </body>
</html>

如果我使用以下CSS代码进行样式设置:

img{
   width:100px;
   height:100px;
}
h1{
   font-size:26px;
   color:red;
}

问题是:如何防止和隔离mydiv div标签内的标签,使其免受公共标签样式的影响?


问题答案:

CSS层叠和继承级别3介绍了all速记属性和该unset关键字,这一起,让您方便地实现这一目标。

例如,如果作者all: initial元素上指定,它将阻止所有继承并重置所有属性,就像级联的作者,用户或用户代理级别中没有规则一样。

这对于不希望继承外部页面样式的页面中包含的“窗口小部件”的根元素很有用。但是请注意,应用于该元素的任何“默认”样式(例如,display: block来自UA样式表上的块元素,例如<div>)也将被吹走。

您需要将其应用于all: initialdiv all: unset及其后代:

#mydiv {
  all: initial; /* blocking inheritance for all properties */
}
#mydiv * {
  all: unset; /* allowing inheritance within #mydiv */
}

您可能要在div上使用一个类而不是一个id,这样,您编写的用于为其后代设置样式的任何规则都不必匹配或超过此规则中使用的高特异性。

为了真正安全起见,您可能也希望在潜在的伪元素后代中阻止样式:

#mydiv::before,
#mydiv::after,
#mydiv *::before,
#mydiv *::after {
  all: unset;
}

另外,为了获得更广泛的浏览器支持,您可以all通过设置所有已知的CSS属性来手动尝试执行操作(不要忘记带前缀的版本):

#mydiv {
  /*
   * using initial for all properties
   * to totally block inheritance
   */
  align-content: initial;
  align-items: initial;
  align-self: initial;
  alignment-baseline: initial;
  animation: initial;
  backface-visibility: initial;
  background: initial;
  ...
}

#mydiv::before,
#mydiv::after,
#mydiv *,
#mydiv *::before,
#mydiv *::after {
  /*
   * using inherit for normally heritable properties,
   * and initial for the others, as unset does
   */
  align-content: initial;
  align-items: initial;
  align-self: initial;
  ...
  color: inherit;
  ...
}


 类似资料:
  • 本文向大家介绍如何在JavaFX中使用CSS设置分隔符的样式?,包括了如何在JavaFX中使用CSS设置分隔符的样式?的使用技巧和注意事项,需要的朋友参考一下 分隔符是水平或垂直线,用于分隔应用程序的UI元素。在JavaFX中,javafx.scene.control.Separator类代表一个分隔符,要创建一个分隔符,您需要实例化该类。您可以使用CSS控制分隔符的外观。 通过创建CSS文件并在

  • 问题内容: 我正在开发页面,现在以我的CSS样式我有以下代码行 为我的页面。现在,我的某些页面不需要此行 我可能会在页面的内部CSS中覆盖它,这将导致原始行为被忽略? 问题答案: 使用不推荐,但在这种情况下,我想你应该- 在您的内部CSS中编写此代码-

  • 问题内容: 我使用PHP显示来自MySQL的数据。这是我的css语句: 它们用于显示表,表头,表日期。我是php CSS的新手,所以我只是想知道如何在php中使用上述CSS样式显示代码: 问题答案: 级联样式表(CSS)是一种样式表语言,用于描述以标记语言编写的文档的表示语义(外观和格式)。 : CSS不是一种编程语言,并且没有服务器端语言(如PHP)随附的工具。但是,我们可以使用服务器端语言来生

  • vite配置引入了公共的scss文件,打包后,每个css文件都重复引入了global.scss文件中的内容,如何提取出一个公共的css文件?

  • 本文向大家介绍请解释下什么是cookie隔离?为什么要隔离?如何隔离?相关面试题,主要包含被问及请解释下什么是cookie隔离?为什么要隔离?如何隔离?时的应答技巧和注意事项,需要的朋友参考一下 什么是 Cookie 隔离? 或者说:请求资源的时候不要让它带 cookie 怎么做 cookie 隔离技术和传统的多域名拆分请求,提高浏览器并发请求数有点类似,均是采用多域名来处理请求 传统做法是将 c

  • Epoch 图表使用 css 设置填充颜色、笔画等。默认情况下,图表使用 D3分类颜色。您可以轻松地覆盖这些默认颜色或创建您自己的自定义类别。 主题 Epoch 以主题的形式安排类似于图表的样式。主题可以通过特殊的类名添加到任何HTML容器中。目前,Epoch船有两个内置主题: epoch-theme-default-基于d3分类颜色的默认主题 epoch-theme-dark-黑色背景下使用的主