代码之家  ›  专栏  ›  技术社区  ›  thoni56

我可以用类定义重写#id ulli行为吗

  •  16
  • thoni56  · 技术社区  · 14 年前

    我有一个由#id标识的区域,有一个CSS,比如:

    #id ul li {
        margin:0;
    }
    

    对于该区域的特定UL,我可以覆盖边距设置吗?我知道#id在评估格式时具有非常高的优先级。

    我试过:

    .myclass ul li {
        margin-left: 20px;
    }
    

    #id ul.myclass {
    

    #id li.myclass {
    

    有可能吗?

    5 回复  |  直到 14 年前
        1
  •  23
  •   ScottS    14 年前

    我同意斯威克,避免 !important

    #id ul.myclass li {
    

    或者。。。

    #id ul li.myclass {
    

    关键是提高选择器的特异性,上面提到的和SWilk的解决方案就是这样做的。原来的解决方案不起作用的原因是没有包含另一个标记( ul li #id 加上 .myclass .

    如果您的html是这样的(如您在评论中所述):

    <div id="ja-col2">
      <div>.... 
        <ul class="latestnews">
          <li class="latestnews">
    

    您当前的css是(如另一条评论所述):

    #ja-col1 ul li, 
      #ja-col2 ul li { 
        margin:0; padding-left:15px; 
      } 
    #ja-col2 .latestnews ul li, /*does not exist*/
      .latestnews #ja-col2 ul li, /*does not exist*/
      .latestnews ul li, /*does not exist*/
      ul.latestnews li.latestnews { 
         list-style:disc outside url("../images/bullet.gif"); 
         margin-left:15px; padding-left:15px; 
      } 
    ul li { line-height:180%; margin-left:30px; }
    

    您没有看到任何更改的原因是,您的html结构中不存在三个选择器路径,而通过特定性获胜的是第一组。您需要:

    #ja-col2 ul.latestnews li
    

    #ja-col2 ul li .

        2
  •  6
  •   HurnsMobile    14 年前
    .myclass ul li {
        margin-left: 20px !important;
    }
    

    应该做到这一点:)

        3
  •  4
  •   Benn    7 年前

    使用伪假:非ID

    .myclass:not(#f) ul li {
        margin-left: 20px;
    }
    

    #hello .hello-in{
      color:red;
    }
    
    .hello-in:not(#f){
      color:blue;
    }
    <div id="hello">
      <div class="hello-in">
       Hello I am red
      </div>
    </div>

    你甚至可以用 :not(#♥) 或任何html4/5(取决于页面类型)字符

        4
  •  2
  •   SWilk    14 年前

    避免使用!重要的

    您需要放置比上一个更具体的选择器。只需在一个选择器中使用class和id部分。

    尝试使用其中一个

    #id .myclass ul li {
        margin-left: 20px;
    }
    

    .myclass #id  ul li {
        margin-left: 20px;
    }
    

    根据具有“myclass”类的元素在DOM树中的位置-如果它是#id元素的父元素,请使用第一个示例,否则使用第二个示例。 如果要独立于#id元素,请尝试使用:

    #id .myclass ul li,
    .myclass #id ul li,
    .myclass ul li {
        margin-left: 20px;
    }
    

    这将适用于所有li的inside ul inside.myclass元素,而且树中是否有任何#id元素也无关紧要。

    顺致敬意, 泳衣

        5
  •  0
  •   Gavrisimo    14 年前