Html 如何在CSS中否定条件

Html 如何在CSS中否定条件,html,css,Html,Css,下面是我的代码,我对HTML/CSS很幼稚,如果我遗漏了任何东西,请告诉我 。下拉菜单>li>a{ 填充物:3px 5px; } 如果在第一个li中存在,则可以使用:第一个子选择器 .dropdown-menu > li:first-child > a { padding: 0; } 或者您可以使用a标记的id或class名称 <li> <a id="btn-other-1" href="#" class="icon">

下面是我的代码,我对HTML/CSS很幼稚,如果我遗漏了任何东西,请告诉我

。下拉菜单>li>a{
填充物:3px 5px;
}

  • 如果在第一个
    li
    中存在,则可以使用
    :第一个子
    选择器

    .dropdown-menu > li:first-child > a {
      padding: 0;
    }
    
    或者您可以使用
    a
    标记的
    id
    class
    名称

    <li>
        <a id="btn-other-1" href="#" class="icon">            <!–- I do not want apply css for this anchor tag because it has i inside –->
            <i class="fa fa-check" aria-hidden="true"></i>   
            <span> Other stuff-1? </span>
        </a>
    </li>
    <li>
        <a id="btn-other-2" href="#">
            <span> Other stuff-2 </span>
        </a>
    </li>
    
    .dropdown-menu > li > a:not(.icon) {
          padding: 3px 5px;
    }
    
  • .下拉菜单>li>a:非(.icon){ 填充物:3px 5px; }
    如果第一个
    li中有,则可以使用
    :first child
    选择器

    .dropdown-menu > li:first-child > a {
      padding: 0;
    }
    
    或者您可以使用
    a
    标记的
    id
    class
    名称

    <li>
        <a id="btn-other-1" href="#" class="icon">            <!–- I do not want apply css for this anchor tag because it has i inside –->
            <i class="fa fa-check" aria-hidden="true"></i>   
            <span> Other stuff-1? </span>
        </a>
    </li>
    <li>
        <a id="btn-other-2" href="#">
            <span> Other stuff-2 </span>
        </a>
    </li>
    
    .dropdown-menu > li > a:not(.icon) {
          padding: 3px 5px;
    }
    
  • .下拉菜单>li>a:非(.icon){ 填充物:3px 5px; }
    在此处检查组合器:,但我认为不会有直接组合器可用

    最简单的选择是为带有i标记的锚点分配一个伪类名,并为不带i标记的锚点分配一个不同的类名

    <li>
        <a id="btn-other-1" href="#" class="itag">            <!–- I do not want apply css for this anchor tag because it has i inside –->
            <i class="fa fa-check" aria-hidden="true"></i>   
            <span> Other stuff-1? </span>
        </a>
    </li>
    <li>
        <a id="btn-other-2" href="#" class="noitag">
            <span> Other stuff-2 </span>
        </a>
    </li>
    

    在这里检查组合器:,但我认为不会有直接组合器可用

    最简单的选择是为带有i标记的锚点分配一个伪类名,并为不带i标记的锚点分配一个不同的类名

    <li>
        <a id="btn-other-1" href="#" class="itag">            <!–- I do not want apply css for this anchor tag because it has i inside –->
            <i class="fa fa-check" aria-hidden="true"></i>   
            <span> Other stuff-1? </span>
        </a>
    </li>
    <li>
        <a id="btn-other-2" href="#" class="noitag">
            <span> Other stuff-2 </span>
        </a>
    </li>
    

    css
    中没有任何方法可以将选择应用于其父项。因此,您必须使用
    jquery
    javascript

    $('.dropdown-menu a i').parent().css('padding','0');
    

    希望它能对您有所帮助。

    css
    中没有任何方法可以将选择应用于他们的家长。因此,您必须使用
    jquery
    javascript

    $('.dropdown-menu a i').parent().css('padding','0');
    

    希望它能对您有所帮助。

    正如kravisingh所说,CSS中目前没有父选择器

    在不更改HTML的情况下,您的示例有一个变通方法:您可以将填充应用于链接的子项,好消息是-在您的示例中-您可以在纯CSS中轻松区分这两种情况下的子项

    我使用了
    :only child
    来选择一个没有任何同级元素的span元素(因此前后都没有I元素),如下所示。
    工具箱中还有:

    • :第一个子项(如果
      span
      匹配,则表示前面没有
      i
    • :最后一个孩子
    • +
      相邻的兄弟姐妹(
      i+a{/**/}
      严格遵循
      i
      ?)
    • ~
      一般同级(
      i~a{/**/}
      a
      i
      之后,可能中间有其他元素?)
    • :not()
      (例如:
      span:not(:独生子)
      span
      元素在其父元素中不是唯一的,它们的前面或后面可以是其他
      span
      i
      或…)
    注:

    • 此解决方案不适用于所有样式和案例:/
    • 在父级上添加类比较容易(请参见Amit的答案),但在某些情况下,您无法修改标记,或者CSS解决方案比修改生成标记的后端/前端函数更容易(尽管这样维护代码IMHO会更困难)

    /*来自问题的CSS(示例#1)*/
    .on link>li>a{
    显示:内联块;
    填充物:3px 5px;
    背景颜色:浅绿色;
    }
    /*示例2*/
    /*适用于i+span*/
    .关于儿童i{
    /*填充:3px0 3px5px*/
    背景颜色:浅蓝色;
    }
    .关于儿童i+span{
    /*填充:3px 5px 3px 0*/
    背景颜色:粉红色;
    }
    /*适用于任何不带图标的范围(之后或之前)
    注意:第一个子项允许在链接的末尾有一个图标*/
    .关于儿童的跨度:独生子女{
    填充物:3px 5px;
    背景色:番茄;
    }
    /*演示*/
    .关于儿童i:以前{
    内容:"我";;
    }
    样式链接(来自OP的原始样式)
    

    链接的样式(我的答案)

    正如kravisingh所说,CSS中目前没有父选择器

    在不更改HTML的情况下,您的示例有一个变通方法:您可以将填充应用于链接的子项,好消息是-在您的示例中-您可以在纯CSS中轻松区分这两种情况下的子项

    我使用了
    :only child
    来选择一个没有任何同级元素的span元素(因此前后都没有I元素),如下所示。
    工具箱中还有:

    • :第一个子项(如果
      span
      匹配,则表示前面没有
      i
    • :最后一个孩子
    • +
      相邻的兄弟姐妹(
      i+a{/**/}
      严格遵循
      i
      ?)
    • ~
      一般同级(
      i~a{/**/}
      a
      i
      之后,可能中间有其他元素?)
    • :not()
      (例如:
      span:not(:独生子)
      span
      元素在其父元素中不是唯一的,它们的前面或后面可以是其他
      span
      i
      或…)
    注:

    • 此解决方案不适用于所有样式和案例:/
    • 在父级上添加类比较容易(请参见Amit的答案),但在某些情况下,您无法修改标记,或者CSS解决方案比修改生成标记的后端/前端函数更容易(尽管这样维护代码IMHO会更困难)

    /*来自问题的CSS(示例#1)*/
    .on link>li>a{
    显示:内联块;
    填充物:3px 5px;
    背景颜色:浅绿色;
    }
    /*示例2*/
    /*适用于i+span*/
    .关于儿童i{
    /*填充:3px0 3px5px*/
    背景颜色:浅蓝色;
    }
    .关于儿童i+span{
    /*填充:3px 5px 3px 0*/
    背景颜色:粉红色;
    }
    /*适用于任何不带图标的范围(之后或之前