如何匹配不包含另一个的标签?

时间:2014-05-02 11:34:43

标签: html css css-selectors less

当我不想包含另一个标签ul / li时,我想以不同的方式设置样式。

更新了,因为我理解我的问题是误导性的,我明确地添加了完整的范围(抱歉)。

小提琴是http://jsfiddle.net/stephanedeluca/v7nxB/

html如下:

Two-level nesting:

<ul>
    <li>Grain&nbsp;:
        <ul>
            <li>Baisse du rendement</li>
            <li>Sénescence plus rapide la plante</li>
            <li>Sensibilisation accrue à la fusariose des tiges</li>
        </ul>
    </li>
    <li>Baisse du rendement</li>
    <li>Sénescence plus rapide la plante</li>
</ul>

One level:
<ul>
    <li>Baisse du rendement</li>
    <li>Sénescence plus rapide la plante</li>
    <li>Sensibilisation accrue à la fusariose des tiges</li>
</ul>

当前的CSS(实际上是lessCSS代码)如下:

ul { 
    &>li {
        &:after {
            content: " ;";
        }
        &:last-child:after {
            content: ".";
        }

        &>ul { 
            li:after {
                content: " (end)";
            }
            li:last-child:after {
                content: " (final end)";
            }
        }
    }
}

它产生的结果如下:

Two-level nesting:

   o Grain
    — Baisse du rendement (end)
    — Sénescence plus rapide la plante (end)
    — Sensibilisation accrue à la fusariose des tiges (final end)
    ;
   o Baisse du rendement ;
   o Sénescence plus rapide la plante.

One level:
   o Baisse du rendement ;
   o Sénescence plus rapide la plante ;
   o Sensibilisation accrue à la fusariose des tiges.

一个级别没问题,但是两个级别不是我想要的。

当一级保持静止时,两级应如下:

   o Grain
    — Baisse du rendement ;
    — Sénescence plus rapide la plante ;
    — Sensibilisation accrue à la fusariose des tiges.
    (final end)
   o Baisse du rendement ;
   o Sénescence plus rapide la plante.

正如您所理解的,一旦CSS工作,我将用空字符串替换(最终结束)。

有什么想法吗?

更新2:我刚刚在一个班级的帮助下找到了一个临时工作(不是很好,但它有效)(fiddle

2 个答案:

答案 0 :(得分:1)

你需要这样的东西,

检查此 demo jsFiddle

结果

o Grain
    — Baisse du rendement ;
    — Sénescence plus rapide la plante ;
    — Sensibilisation accrue à la fusariose des tiges.
    (final end)

CSS

ul { 
    &>li {
        &:after {
            content: " ;";
        }
        &:last-child:after {
            content: "(final end)";
        }

        &>ul { 
            li:last-child:after {
                content: " .";
            }
        }
    }
}

100% Worked

答案 1 :(得分:0)

我发现有一项临时工作可以利用以下单独的课程:

Two-level nesting:

<ul>
    <li class="compact">Grain&nbsp;:
        <ul>
            <li>Baisse du rendement</li>
            <li>Sénescence plus rapide la plante</li>
            <li>Sensibilisation accrue à la fusariose des tiges</li>
        </ul>
    </li>
    <li>Baisse du rendement</li>
    <li>Sénescence plus rapide la plante</li>
</ul>

我命名的班级&#34; compact&#34;是告诉不要应用处理ul / li后缀的规则。

CSS如下:

ul { 
    &>li {
        &:after {
            content: " ;";
        }
        &:last-child:after {
            content: ".";
        }

        &.compact:after {
            content: "";
        }
    }
}

不方便的原因是您需要向数据源添加信息,而这些信息不具有真正的语义。但它现在有效。

希望有人可能找到更好的方法来继续