实现横向滚动条的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>
jquery滚动条滚动到底部
<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个像素。
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。