CSS - 简单的特异性问题 - '#div-id ul' - 不会覆盖"ul"的列表样式



这是一个非常简单的CSS特异性问题,但我真的无法以某种方式弄清楚。

在我的样式表中,我有一个简单的规则,可以从列表中删除列表样式:

ul { list-style: none; }

然后,对于某些列表,我想指定一个列表样式,但无论如何,它只是不会覆盖上述规则?

#product ul { list-style: bullet !important; }

问题是 UL 通常会被输入到 CMS 中的所见即所得框中,我不想强迫用户必须用 html 编写并给 UL 一个特定的 ID,所以我们经常会得到这样的代码:

<div id="product">
  <ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
  </ul>
</div>

我有点惊讶这不起作用,除了使用 javascript 为 $('#product ul') 提供特定的类或 css 样式之外,没有办法解决这个问题吗?

--

JSBIN: http://jsbin.com/ohuzuz/4

--

编辑:哎呀,对不起,我有:

<div id="#product">

JSBIN中的一个临时错误,但不是我的原始代码。我的错误,但问题确实是无效的

list-style: disc
bullet不是

有效的列表样式类型值。

另外,如果这不是问题所在,请检查您是否在任何地方都没有li样式。li元素的样式将覆盖ul元素的样式,无论其特殊性如何。

您的ID有误

改变:

id="#product"

自:

id="product"

这是正确的代码。您有错误的 id #product 应该是您的div 中的产品。

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
  article, aside, figure, footer, header, hgroup, 
  menu, nav, section { display: block; }
  ul { list-style: none; }
  #product ul, #product ul li { list-style: disc; }
</style>
</head>
<body>
  <p id="hello">Hello World</p>
  <div id="product">
    <ul>
      <li>One</li>
      <li>Two</li>
      <li>Three</li>
    </ul>
  </div>
</body>
</html>

我会选择这样的东西,

ul { list-style:none; }
#product ul {list-style:disc inside none; }

看起来你的 html 中有一个额外的字符

<div id="#product">

取下#,它应该可以工作。

最新更新