CSS:为什么使用 "div#container" 语法而不只是 #container?

CSS: why is the "div#container" syntax used instead of just #container?

我看到 "div#container" 语法在 CSS 中使用,我想知道它是如何工作的。有人有资源吗?

从 CSS 标准本身,a chart of selector syntaxes

您要查找的已接近尾声:

E#myid  Matches any E element with ID equal to "myid".

换句话说,该选择器将匹配 <div id="container">

当然,id 值必须是唯一的,因此您不需要指定元素名称。您可以使用 *#container 或仅使用 #container,很多人都这样做。显式输入元素名称可能被认为是更自记录的。

http://www.w3schools.com/css/css_selectors.asp

试着看看这个。这将告诉您这是如何工作的。

#abc {
text-align: center;
color: blue; }

现在,无论您在何处使用#abc,文本都将居中对齐,并且文本颜色将为蓝色。

您也可以根据需要进行自定义。

除了如上所述作为唯一参考外,ID 还增加了特异性(我强烈建议您阅读这篇文章或一篇类似的文章 http://www.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/,了解 css 中的特异性将使您的生活更轻松) .

我将尝试用一个简短的例子来解释 - 采用以下内容:

  div#item { background: blue}

  <div id="item" class="item">Hello world</div>

这表示将任何 div 的 ID 'container' 设置为蓝色,但如果您随后在样式表中添加以下样式

  #item {background: purple} 
  .item {background: green}

假设容器是绿色的,因为样式表是级联的,并且 class 绿色背景排在最后。然而,情况并非如此,ID 具有更高的优先级,并且将覆盖 class,即使 class 稍后出现也是如此。此外,该项目不会是紫色的,因为您之前在 id 之前添加了 div。 div 和 id 进一步提高了特异性。

人们经常像这样指定 css 中的项目:div#container 以增加样式的额外重要性或明确声明只有带有 id 容器的 DIVS 可以是蓝色的。

我建议不要这样做它会变得更难覆盖,如果你想让其他东西的背景为蓝色,那么样式就会变得不可用。因此,例如以下内容不会使段落变为蓝色,因为样式明确指出 divs.

 div#item {background: blue;}

 <p id="item">Hello world</p>

如果您想将 div#item 覆盖为粉红色而不是蓝色,您可能需要执行以下操作。

  div#item.item {background: pink}

这看起来还不错,但是当您开始构建复杂的网站时,这会使您的 css 非常笨拙。

我的建议是让您的 css 尽可能重复使用,例如以下内容可以轻松覆盖并在任何标签上重复使用。

 .item { background: blue;}

希望对您有所帮助!认真阅读css特异性,它真的会帮助你。