开始我是有找下解决的方法。
一般last-child
都是用在菜单或者列表用边框分隔的时候,把最后面一个border
的设定去掉。
一种方法是给最后一项添加一个class
,例如.last-child
,把border
设为none
值。(这个不便于数据绑定,不然又得判断最后一个,麻烦)。
一种方法是通过js把最后最后一项的边框值去掉,达到last-child的目的:
if ($('html').hasClass('lt-ie9')) {
$('[data-fix-last-child]').each(function () {
var $me = $(this);
var element = $me.data('fix-last-child');
$me.find(element).last().css({ 'border': 'none','background': 'none' });
});
}
但是上面两种方法都是所有浏览器下都生效,也就是不用last-child
都可以了。当然也可以判断是IE678的时候才使用上面的方法,但没什么必要。
还有一种方法是使用:
expression(this.nextSibling==null?'0':'1px');
没试过,因为不支持IE8。
纯css2方法:
有一种很简单的方法,纯CSS实现。
就是使用element+element
即一个元素紧接着另一个元素选择器。因为last-child元素是没有紧跟这的元素的,element+element
为CSS2选择器。
举个栗子:
<ul>
<li>sample text</li>
<li>sample text</li>
<li>sample text</li>
<li>sample text</li>
<li>sample text</li>
<li>sample text</li>
</ul>
我们希望在每条记录之间加上分隔符,一般会加border-bottom属性,但是最后一个<li>
下面不能有,我们可以使用li+li
选择符,改用border-top
属性即可实现。
li+li{border-top: 1px dotted #999;}
效果图: