开发者社区> 问答> 正文

在IE678下用什么方法解决伪类last-child?

我知道可以通过给最后一个添加class,但是这个是所有浏览器下都添加class,那last-child不用都可以了。

这问题应该放在新手下面的,但习惯性直接在首页撰写,所以...

开始我是有找下解决的方法。
一般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。

展开
收起
a123456678 2016-03-26 14:01:25 2605 0
2 条回答
写回答
取消 提交回答
  • 天道酬勤
    这个只能给最后一个元素增加多一个类名,用类名来控制,比如:
    那li:last-child就可以直接用.last来表示了
    2019-07-17 19:16:06
    赞同 展开评论 打赏
  • 有一种很简单的方法,纯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选择符,改用border-top属性即可实现。

    全选复制放进笔记li+li{border-top: 1px dotted #999;}

    2019-07-17 19:16:06
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载