我想要一个具有设定宽度和高度的容器。 在那个容器里,我有:
垂直和水平居中的文字
容器左侧的几个垂直居中的图标
容器右侧的几个垂直居中的图标
我的测试代码:
.container {
width: 700px;
height: 70px;
border: 1px solid;
background-color: #ddd;
vertical-align:middle;
margin:auto;
}
.text {
display:inline-block;
font-size:18px;
text-align:center;
}
.iconsleft, .iconsright {
display:inline-block;
}
.iconsright {
right:0;
}
<div class="container">
<div class="iconsleft">
<img src="https://www.tsf-showwelt.de/ticketportal/images.ticket/zoom_in.png">
<img src="https://www.tsf-showwelt.de/ticketportal/images.ticket/zoom_in.png">
</div>
<div class="text">centered text</div>
<div class="iconsright">
<img src="https://www.tsf-showwelt.de/ticketportal/images.ticket/zoom_in.png">
<img src="https://www.tsf-showwelt.de/ticketportal/images.ticket/zoom_in.png">
</div>
</div>
(我从谷歌那里拿了一个随机图标进行测试)
这是我的测试代码看起来像它应该是什么样的:
答案 0 :(得分:4)
我尽量避免花车:
http://jsfiddle.net/techsin/Gz4nv/1/
我做的事情:
inline-block
(默认情况下由css content:'etc'
添加的内容是内联元素),并使其成为容器高度的100%,从而将行高度拉伸到容器高度。因此,当我vertical-align
某事时,它会将容器的整个高度视为与之对齐的东西。 position:relative
。 left:0;
放在左侧容器上,将right:0;
放在右侧容器上。答案 1 :(得分:2)
如果你想让图标转到一边,你应该告诉他们{J}向那个方向走。
文本不居中,因为它只占用了所需的空间。明确设置宽度将告诉它占用更多空间,从而允许文本居中。这可以是像素或百分比。例如,如果您有一个宽度为A的容器和四个宽度为B(每个)的图像,则可以将宽度设置为float
像素。
A - 4B
答案 2 :(得分:0)
text-align: center
,则需要在父块上设置 display: inline-block
,而不是居中的块。
同样vertical-align:middle;
对你没有任何好处,除非你在一个表格单元格中(或者像一个样式的div)。如果你想在IE7 +上使用“真正的”垂直居中,请使用好的表格,与vertical-align: middle
一起使用。或者只是用边距伪造它。
对于.iconsleft
和.iconsright
使用,您可能需要尝试浮点数,或position: absolute
;
CSS:
.container {
width: 700px;
height: 70px;
border: 1px solid;
background-color: #ddd;
margin:auto;
text-align:center;
}
.text {
font-size:18px;
margin-top: 22px;
}
.iconsleft, .iconsright {
margin: 20px 10px 0;
}
.iconsleft {
float: left;
}
.iconsright {
float: right;
}
HTML(需要在内容之前写入浮点数):
<div class="container">
<div class="iconsleft">
<img src="https://www.tsf-showwelt.de/ticketportal/images.ticket/zoom_in.png" />
<img src="https://www.tsf-showwelt.de/ticketportal/images.ticket/zoom_in.png" />
</div>
<div class="iconsright">
<img src="https://www.tsf-showwelt.de/ticketportal/images.ticket/zoom_in.png" />
<img src="https://www.tsf-showwelt.de/ticketportal/images.ticket/zoom_in.png" />
</div>
<div class="text">centered text</div>
</div>
答案 3 :(得分:0)
只需向左和向右浮动两侧<div>
,然后将右侧<div>
放在HTML结构中的居中<div>
之前。
<style>
.container {
width: 700px;
height: 70px;
border: 1px solid;
background-color: #ddd;
vertical-align:middle;
margin:auto;
}
.text {
font-size:18px;
text-align:center;
}
.iconsleft {float: left;}
.iconsright {float: right;}
</style>
<div class="container">
<div class="iconsleft">
<img src="https://www.tsf-showwelt.de/ticketportal/images.ticket/zoom_in.png">
<img src="https://www.tsf-showwelt.de/ticketportal/images.ticket/zoom_in.png">
</div>
<div class="iconsright">
<img src="https://www.tsf-showwelt.de/ticketportal/images.ticket/zoom_in.png">
<img src="https://www.tsf-showwelt.de/ticketportal/images.ticket/zoom_in.png">
</div>
<div class="text">Centered demo text</div>
</div>
通过更改容器高度并为其添加一些底部填充,可以使整个框垂直居中。
将height: 70px;
中的.container
更改为:
height: 50px;
padding-top: 20px;
答案 4 :(得分:0)
Demo垂直和水平对齐。
我使用了一个简单的网格系统来对齐所有内容 - CSS:
.grid {
width:200px;
height:70px;
float:left;
}
HTML:
<div class="grid">
<img src="http://placehold.it/16x16">
<img src="http://placehold.it/16x16">
</div>
<div class="grid text">centered text</div>
<div class="grid">
<img src="http://placehold.it/16x16">
<img src="http://placehold.it/16x16">
</div>
答案 5 :(得分:0)
我知道这可能不是一个完美的方式,但我认为这个黑客可能有所帮助:
.text {
display:inline-block;
font-size:18px;
text-align:center;
width: 80%;
}
.iconsleft, .iconsright, .text {
display:inline-block;
margin-top:20px;
}
.iconsright {
float: right;
}
.iconsleft {
float: left;
}