横向条怎么出来?很多人肯定以为是:overflow-x:scroll;当然不是这么简单的,下面这篇文章主要给大家介绍了关于如何实现横向条的2种方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

前言:

在项目开发中,遇到了一个需求,实现一行上的导航栏过多使其产生横向条。一开始做项目,给的时间太短又着急,觉得网上有现成的,去搜发现没有,只好自己去写,一开始用的是平常css+js实现功能,之后学习了flex布局,所以又想到了用flex实现横向条。两种方法,记录下来,供以后借鉴。

正文:

两种方法各有各的好处,如果不考虑兼容性问题,还是用flex吧,毕竟还是喜欢那一句话:Write Less,Do More。哈哈

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个像素。

对应的笔记和实例,我放到了GitHub,https://github.com/sqh17/notes(本地下载) 如果想实践可以去clone下来。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对爱安网的支持。

最新资讯
多西解释为何给特朗普推文打标签:给人们造成混乱

多西解释为何给特朗普

Twitter CEO杰克·多西(Jack Dorsey)今日在听证会上为该
扎克伯格视频连线出故障导致听证会中断 议员:明白他的感受

扎克伯格视频连线出故

周二的听证会因为扎克伯格无法与商务委员会进行视频连
美国会听证会讨论科技平台责任 脸书“变节”谷歌Twitter“坚守”

美国会听证会讨论科技

此前曝光的书面证词也显示,Facebook、Twitter和谷歌三
美参议员:举行听证会是耻辱 共和党一直在欺负科技公司CEO

美参议员:举行听证会是

针对美国参议院商务委员会今日举行的科技公司CEO听证
TCL科技:前三季度净利润20.25亿元,同比下降21.42%

TCL科技:前三季度净利

TCL科技发布三季报,前三季度净利润20.25亿元,同比下降21
iPhone 12除了性价比和 5G,它还剩下什么?

iPhone 12除了性价比

相信很多人都已经收到不久前订购的iPhone12,有些应该也
最新文章
网页简单布局之结构与表现原则分享

网页简单布局之结构与

一般来说html结构 css表现 javascrip行为,网页布局要考
隐藏 Web 中的元素方法及优缺点教程详解

隐藏 Web 中的元素方

这篇文章主要介绍了隐藏 Web 中的元素方法及优缺点教
白话分析自适应跟响应式的区别详解

白话分析自适应跟响应

这篇文章主要介绍了白话分析自适应跟响应式的区别详解
div与div之间有空隙的解决方法

div与div之间有空隙的

今天在制作页面的时候发现两个div之间有空隙导致两个
推荐一款酷炫闪烁的告警按钮

推荐一款酷炫闪烁的告

今天小编给大家推荐一款酷炫闪烁的告警按钮,非常不错,具
移动端开发1px线的理解与解决办法

移动端开发1px线的理

这篇文章主要给大家介绍了关于移动端开发1px线的理解