2013-07-18 76 views
0

我:针对li元素?

<ul> 
<li></li> 
<li></li> 
<li></li> 
<li></li> 
<li></li> 
</ul> 

我想不同的宽度添加到每个华里。

我不想这样做内联。

我该如何使用CSS2(而不是CSS3)来定位每个li?

有没有办法,或者我需要给每个李的类名?

感谢

+0

每个'li'单独或全部他们一样吗? –

+0

每个li需要不同的宽度 – beans

+2

@beans:它看起来很愚蠢,但它是一个纯粹的CSS2解决方案。 ** [JSBin Demo](http://jsbin.com/igisid/1/edit)**。 –

回答

0

你也可以用梳子CSS,你必须添加类各立在CSS E:G-

li {} 
li + li {} 
li + li + li {} 
li + li + li + li {} 
li + li + li + li + li {} 
+0

好。只有建议是在每个声明中使用“li:first-child”作为第一个li。因为它消除了CSS的递归处理的不必要的数量。当然,我们正在谈论的是百万分之一秒。 :) – ProfileTwist

1

为什么不使用nth-of-type

ul li:nth-of-type(1){} /* First */ 
ul li:nth-of-type(2){} /* Seconds */ 

,如果你担心旧的浏览器,有一个很大的library,增加了CSS3伪类给他们。

唯一的CSS2方法是将类添加到每个LI。

编辑

其实每LI不同类别并不是唯一的方式CSS2。 @Hashem Qolami对原始问题的评论有一个体面的CSS2解决方案,但就像他说的,它看起来有点愚蠢。

+0

在CSS2中,你可以像'li + li {/ *样式为第二个li和* /} li + li + li {/ *将样式重置为默认值,使特殊样式适用于第二个li只有* /}'等等。但是这种“穷人的孩子选择者”是非常无效的。 –

+1

'唯一的CSS2方法是将类添加到每个LI'不正确,请检查我的评论;) –

+1

只有在我发布此答案后才看到。你是对的,你的解决方案是最好的方法,而不用改变他的HTML。 – dotty

0

如果你想使用纯粹的CSS2,你必须给他们类的名称。这可以通过:nth-of-type() psuedoclass选择器来完成,但这是一个CSS3功能。

这对jQuery来说也很简单(如果你想避免依赖CSS3但不想将类名添加到你的标记中)。这也可以让你根据需要动态改变宽度(而不是像CSS类那样硬编码属性值)。

0

“每个李”你是指每个李元素单独?如果是这样,第n个选择器可能是你的朋友,尽管它是CSS3。

0

你可以给所有你的李的类名,并设置为显示块,与浮动。

样品fiddle

li{ 
    display:block; 
    float:left; 
    background:blue; 
} 
li.small{ 
     width:50%; 
} 
li.big{ 
    width:100%; 
}