我们都知道float:left属性会让元素向左浮动,如果用一个div将几个左浮动的li包起来,是不是div的宽度被li撑得很长很长呢,代码:
<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
<style> ul {
border: 1px solid #1FC195;
list-style: none;
margin: 0;
padding: 0;
background-color: #CCCCCC;
} ul li {
padding: 0;
margin: 0;
float: left;
width: 300px;
height: 600px;
background: #8FBC8F;
margin: 5px;
}
</style>
</head> <body>
<div class="over-x">
<ul>
<li>test1</li>
<li>test2</li>
<li>test3</li>
<li>test3</li>
<li>test3</li>
<li>test3</li>
<li>test3</li>
</ul>
</div>
</body> </html>
但是实际的显示效果却是:
可以看见div的宽度不是被div撑得很长,二是直接换行了,
由此对float:left属性进行了一些总结:当给元素用了float属性,元素会自动寻找最近一级的父级的宽度,当这个父级的宽度不能满足li所有的宽度和之后就会排到第二行,如果给这个父级足够的宽度之后(一个>=li总和的宽度)便能实现该效果
这时候要是给那个父级增加一个父级(这个父级给一个较小的宽度,并且设置overflow-x:scroll)便可以再水平方向出现滚动条
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.over-x{
width:600px;
overflow:scroll ;
}
ul{
border: 1px solid #1FC195;
list-style: none;
margin: 0;
padding: 0;
background-color: #CCCCCC;
overflow-x: scroll;
overflow-y: hidden;
height: 610px;
width:19000px
}
ul li{
padding: 0;
margin: 0;
float: left;
width: 300px;
height: 600px;
background: #8FBC8F;
margin: 5px;
}
</style>
</head>
<body>
<div class="over-x">
<ul>
<li>test1</li>
<li>test2</li>
<li>test3</li><li>test3</li><li>test3</li><li>test3</li><li>test3</li>
</ul>
</div>
</body>
</html>
效果