我有4个div,需要将它们排成一行,每个div包含一个图像和一个span标记,但我无法将它们排成一行,因为每个div的宽度都是100%。 是否可以对齐它们?如果没有其他选择?
body
{
box-sizing:boder-box;
margin:0;
}
.container
{
width:20%;
height:100%;
position:relative;
}
.item
{
width:100%;
height:20%;
overflow:hidden;
}
.img
{
height:20%;
width:100%;;
}
<div class="container">
<div class="item">
<img src="1.jpg" class="img"/>
<span>some text</span>
</div>
<div class="item" >
<img src="1.jpg" class="img"/>
<span>some text</span>
</div>
<div class="item">
<img src="1.jpg" class="img"/>
<span>some text</span>
</div>
<div class="item">
<img src="1.jpg" class="img"/>
<span>some text</span>
</div>
</div>
编辑:显示:内联块无法正常工作。 编辑:我正在尝试使用div创建100%宽度的carousal。
答案 0 :(得分:1)
<html>
<head>
<style>
.body
{
box-sizing:boder-box;
margin:0;
}
.container
{
width:20%;
height:100%;
position:relative;
}
.item
{
width:100%;
height:20%;
overflow:hidden;
}
.img
{
height:64%;
width:365px;;
}
</style>
</head>
<body>
<div class="container">
<div classs="item">
<img src="1.jpg" class="img"/>
<span>some text</span>
</div>
<div classs="item" >
<img src="1.jpg" class="img"/>
<span>some text</span>
</div>
<div classs="item">
<img src="1.jpg" class="img"/>
<span>some text</span>
</div>
<div classs="item">
<img src="1.jpg" class="img"/>
<span>some text</span>
</div>
</div>
</body>
</html>
答案 1 :(得分:0)
使用flexbox可以轻松实现这一目标。
首先,你的第一个样式块中有一个拼写错误:应该是box-sizing: border-box
,而不是box-sizing: boder-box
。
要让四个项目占据空间的25%,只需在display
上将flex
声明设为.container
.container {
display: flex;
}
另外,假设您希望图片占据其.item
容器的整个宽度,您需要将img
宽度设置为100%
img {
width: 100%;
}
这是假设没有影响这些元素的任何其他样式(例如框架)的来源。
答案 2 :(得分:0)
您还可以使用display:table
和display:table-cell
,这样您的元素就像表格一样。
如果您将.container
替换为:
.container
{
width:20%;
height:100%;
position:relative;
display: table;
}
并添加以下内容:
.container > div {
display: table-cell;
}
.container
中的子元素将对齐并且行为类似于td
元素。
答案 3 :(得分:0)
我已将container
设为width:100%
而item
设为width:20%
和float left;
class
的拼写在儿童div中是错误的。我已经纠正了它。
希望这会有所帮助:)
body
{
box-sizing:boder-box;
margin:0;
}
.container
{
width:100%;
height:100%;
position:relative;
}
.item
{
width: 20%;
float: left;
height:auto;
margin:10px;
}
.img
{
height:20%;
width:100%;
}
&#13;
<div class="container">
<div class="item">
<img src="1.jpg" class="img"/>
<span>some text</span>
</div>
<div class="item" >
<img src="1.jpg" class="img"/>
<span>some text</span>
</div>
<div class="item">
<img src="1.jpg" class="img"/>
<span>some text</span>
</div>
<div class="item">
<img src="1.jpg" class="img"/>
<span>some text</span>
</div>
</div>
&#13;
答案 4 :(得分:0)
根据您的要求,您可以使用white-space:nowrap
和overflow:hidden
组合。它会将所有项目排成一行..
然后你可以使用变换来滑动它们。
注意:我在项目中使用了transform:translateX(-30px)
来向您展示视觉效果..
Stack Snippet
body {
box-sizing: boder-box;
margin: 0;
}
.container {
position: relative;
white-space: nowrap;
overflow: hidden;
}
.item {
width: 100%;
display: inline-block;
transform:translateX(-30px);
}
.img {
width: 100%;
display: block;
}
.item span {
display: block;
}
&#13;
<div class="container">
<div class="item">
<img src="http://via.placeholder.com/350x150" class="img" />
<span>some text</span>
</div>
<div class="item">
<img src="http://via.placeholder.com/350x150" class="img" />
<span>some text</span>
</div>
<div class="item">
<img src="http://via.placeholder.com/350x150" class="img" />
<span>some text</span>
</div>
<div class="item">
<img src="http://via.placeholder.com/350x150" class="img" />
<span>some text</span>
</div>
</div>
&#13;