我试图将元素放在一个水平行中,以便我可以滚动它们,为此我创建了一个内部和外部容器。外部容器具有固定的宽度,内部容器的宽度应由其内容确定,该内容可以大于外部div。
HTML
<div id="outer">
<div id="inner">
<ul>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
</ul>
</div>
</div>
CSS
#outer{
width:250px;
position: relative; /* required to make overflow hidden work */
overflow:hidden; /* commented to demonstrate the issue */
background-color: lightgreen;
height: 80px;
}
#inner {
position: absolute;
width: 1000px; /* <- needs to scale to content */
}
ul {
margin: 0;
padding: 0;
}
.item:first-child{
margin-left:0;
}
.item {
width: 100px;
height: 80px;
background-color: lightblue;
margin-left: 10px;
display:inline-block;
}
我试图单独使用CSS来解决这个问题,但到目前为止我还没有成功。 对于此问题,浏览器兼容性不是问题。
我拥有什么
我想要什么
答案 0 :(得分:4)
答案 1 :(得分:0)
答案 2 :(得分:0)
只需做一些修改
#inner{width: 750px;}
#outer{width: 250px;overflow-x: auto;}
答案 3 :(得分:0)
您的HTML无效,因为div不能是ul
的子项。
事实上,我不确定你是否需要ul
,因为你可以在没有它的情况下实现你的目标。
我已经扩大了小提琴中的外部div,所以你可以看到发生了什么
#outer {
width: 250px;
position: relative;
overflow: hidden;
background-color: lightgreen;
height: 80px;
margin: auto;
text-align: center;
}
#inner {
white-space: nowrap;
display: inline-block;
background: red;
}
.item:first-child {
margin-left: 0;
}
.item {
width: 100px;
height: 80px;
background-color: lightblue;
margin-left: 10px;
display: inline-block;
}
<div id="outer">
<div id="inner">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>