• 技术文章 >web前端 >css教程

    css实现横向滚动条的两种方式(代码实例)

    青灯夜游青灯夜游2018-09-11 17:53:28原创6430
    本章给大家介绍用css实现横向滚动条的两种方式。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    html代码:

    <div class="nav_wrap">
        <ul class="nav_mine">
            <li class="nav_item">全部</li>
            <li class="nav_item">Adobe</li>
            <li class="nav_item">微软</li>
            <li class="nav_item">会计</li>
            <li class="nav_item">绘画</li>
            <li class="nav_item">Adobe</li>
            <li class="nav_item">微软</li>
            <li class="nav_item">会计</li>
            <li class="nav_item">绘画</li>
        </ul>
    </div>
    <script src="node_modules/jQuery/tmp/jquery.js"></script>

    一、 原始css + jquery 实现横向滚动条(原生js可以实现,为了方便才用的jQuery)

    css代码:

    * {
        box-sizing: border-box;
        margin: 0;
        padding: 0
    }
    .nav_wrap{
        overflow-x: scroll;
    }
    .nav_mine {
        padding: 15px 10px;
        border-bottom: 1px solid #aca9a7;
        height: 75px;
        overflow-x: scroll;
        overflow-y: hidden;
    }
    
    .nav_mine .nav_item {
        border: 1px solid #1a110b;
        border-radius: 40px;
        color: #aca9a7;
        margin-right: 10px;
        font-size: 24px;
        padding: 4px 18px;
        float: left;
        list-style: none;
    }

    js代码:

    $(function(){
        var width = 0;
        for (let i = 0; i < $('.nav_item').length; i++) {
            width += $('.nav_item').eq(i).outerWidth(true);
        }
        $('.nav_mine').width(width+20);  //width只是内容的宽度,需要加上padding的宽度
    })

    PS:为什么用js,是因为不知道tabs有多少个,不能把宽度写死,只能动态获取tabs的宽度,然后相加,获取总宽度,方便多次使用。outerWidth加上参数true,代表包含了padding+margin+border的宽度。

    二 css3 -- flex

    css代码:

    * {
        box-sizing: border-box;
    }
    
    .nav_mine {
        padding: 15px 20px;
        border-bottom: 1px solid #aca9a7;
        height: 75px;
        display: flex;
        align-items: center;
        overflow-y: hidden;
        flex-wrap: nowrap;
    }
    
    .nav_mine .nav_item {
        border: 1px solid #aca9a7;
        border-radius: 40px;
        color: #aca9a7;
        margin-right: 22px;
        font-size: 24px;
        padding: 4px 18px;
        list-style: none;
        white-space: nowrap;
    }

    对于white-space,item在没有用white-space:nowrap时,发现一个问题,在未设定宽度的情况下,一个单词不会换行,而汉字会换行,认为是和display:flex有关系,上网查阅,才知道:white-space是看空格来识别是否换行的,单词是作为一个字符,所以要针对于汉字和英文,都要设置white-space:nowrap不换行。因为汉字和英文的不同,导致所占的宽度不一致,所以要留1到2个像素。

    以上就是css实现横向滚动条的两种方式(代码实例)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:横向滚动条 flex css
    上一篇:什么是浮动以及浮动的清除方法 下一篇:CSS定位position的多种方式以及不同方式之间的区别
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 在iframe中隐藏横向滚动条的方法大全_经验交流• Extjs gridpanel 出现横向滚动条问题的解决方法_extjs• div出现可恶的两条横向滚动条,好难看_html/css_WEB-ITnose• HTML页面缩小后如何有横向滚动条_html/css_WEB-ITnose• table tbody 加横向滚动条_html/css_WEB-ITnose
    1/1

    PHP中文网