选项块多了,超出部分隐藏并显示...

2018-01-17  本文已影响35人  一名有马甲线的程序媛

要实现如下图片的效果,每个栏目的宽度不确定,总长度一定,栏目多了最后显示...栏目


image.png

html如下:

<div class="box">
    <div class="ne">我就问你ne不ne</div>
    <div class="ne">你就说我ne不ne</div>
    <div class="ne">我不ne</div>
    <div class="ne">你ne</div>
    <div class="ne">没有最ne</div>
    <div class="ne">只有更ne</div>
    <div class="ne">就你ne</div>
    <div class="ne">再说我ne我哭了</div>
    <div class="ne">你哭你也ne</div>
    <div class="ne">哇哇哇哇ne哭了</div>
    <div class="ne">艾玛哭起来更ne了</div>
    <div class="overflow">...</div>
</div>

css如下:

    <style>
        .box{
            width:800px;
            overflow:hidden;
        }
        .ne{
            float:left;
            height:30px;
            line-height: 30px;
            background:#ddd;
            color:#333;
            border-radius: 5px;
            margin:0 10px 10px 0;
            text-align: center;
            overflow:hidden;
            text-overflow:ellipsis; 
            white-space:nowrap; 
            padding:0 10px;
        }
        .overflow{
            float:left;
            height:30px;
            line-height: 30px;
            background:#ddd;
            color:#333;
            border-radius: 5px;
            margin:0 10px 10px 0;
            text-align: center;
            padding:0 10px;
            display: none;
        }
    </style>

js如下:

<script>
    var length;
    for(var i=1;i<$('.ne').length;i++){
        if(length<$('.box').width()){
            // 算出每个块的大小
            length += $('.ne').eq(i).width() + 2*parseInt($('.ne').eq(i).css('padding-left')) + parseInt($('.ne').eq(i).css('margin-right'));
        }else{
            // 超出总长度就取整 后面的隐藏并显示...
            $(".ne").filter(".ne:gt("+(i-3)+")").hide ();
            $('.overflow').show();
        }
    }
</script>

知识点:
gt(n),n后面的所有元素;
lt(n),n前面的所有元素

点击下载 demo

上一篇 下一篇

猜你喜欢

热点阅读