它接缝我找不到解决方案而不使用JS来解决这个问题: 我需要制作一个水平滑块,上面有图像和一些文字。所有图像都需要调整到相同的高度,并自动调整宽度。图像下方是一个文本,如果图像宽度很小,应该包裹多行。 问题:我很难将周围元素的宽度限制在图像的宽度(虽然不知道图像宽度)。 预期的结果是所有图像彼此相邻而没有间距(类似于谷歌图像搜索)。
我正在使用white-space:nowrap在外部元素上并显示:内部的内联块以获得水平滚动。我也尝试过flex,但没有区别。
这是我所拥有的一个小提琴: https://jsfiddle.net/lobin/awbL80st/
`<ul>
<li>
<div class="pic">
<img src="(url)">
</div>
<div class="text">
A longer text which should wrap to multiple lines.
</div>
</li>
<li>
...`
css是
ul {
list-style:none;
white-space: nowrap;
margin:0;
padding:0;
overflow-x:scroll;
width:500px;
height:240px;
}
li {
margin:0;
padding:0;
display:inline-block;
}
.pic {
height:150px;
}
img {
height:100%;
width:auto;
}
.text {
white-space:normal;
}`
有什么想法吗?
答案 0 :(得分:0)
将li
设为display:table-cell;
并添加一些JS代码以获取图像的width
并将其设置为文本。
$(document).ready(function(){
var a=$("img");
var b=$('.text');
for(var i=0;i<a.length;i++){
$(b[i]).css("width",a[i].width);
}
});
ul {
list-style:none;
white-space: nowrap;
margin:0;
padding:0;
overflow-x:scroll;
width:500px;
height:240px;
}
li {
display:table-cell;
width:auto;
padding-right:10px;
}
.pic {
height:100px;
width:auto;
}
img {
height:100%;
}
.text {
white-space:normal;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<ul>
<li>
<div class="pic">
<img src="https://cdn.pixabay.com/photo/2017/05/14/14/24/grass-2312139__340.jpg">
</div>
<div class="text">
A longer text which should wrap to multiple lines.
</div>
</li>
<li>
<div class="pic">
<img src="https://cdn.pixabay.com/photo/2017/06/14/23/15/soap-bubble-2403673__340.jpg">
</div>
<div class="text">
A longer text which should wrap to multiple lines.
</div>
</li>
<li>
<div class="pic">
<img src="https://cdn.pixabay.com/photo/2017/05/04/19/32/sculpture-2284945__340.jpg">
</div>
<div class="text">
A longer text which should wrap to multiple lines.
</div>
</li>
</ul>
没有javascript的另一个选项设置为display:table-cell;
的{{1}}属性,它将每个单元格的宽度设置为最大宽度图像的宽度。
如果对你有用,试试这个。
li
ul {
list-style:none;
white-space: nowrap;
margin:0;
padding:0;
overflow-x:scroll;
width:500px;
height:240px;
}
li {
display:table-cell;
width:auto;
padding-right:10px;
}
.pic {
height:100px;
width:auto;
}
img {
height:100%;
}
.text {
white-space:normal;
}