我正在尝试使一组图像/文本看起来均匀,但图像的分辨率不同。我有一套这样的:
.QuickLink {
display: inline-block;
border: 2px solid #9FAFEC;
border-radius: 4px;
text-align: center;
width: 100px;
vertical-align: top;
margin-top: 4px;
padding: 2px;
height: 160px;
}
.QuickLink img {
width: 80px;
margin: auto;
}
.QuickLink a {
text-decoration: none;
color: black;
}
<div class="QuickLink">
<a href="someLink.htm">
<img src="images/Directory.jpg" title="Directory">
<br> Directory
</a>
</div>
我正在寻找的是一组矩形,其中图像垂直对齐中间,文本位于底部。以下让我接近,但我不知道如何进行垂直对齐。
答案 0 :(得分:1)
解决方案1 (推荐)
.QuickLink {
position: relative;
}
.QuickLink a {
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
解决方案2
.QuickLink {
display: table;
float: left; // if you want them to align horizontally
}
.QuickLink a {
display: table-cell;
vertical-align: middle;
}
解决方案3 (可能存在浏览器兼容性问题)
.QuickLink {
display: -webkit-flex;
display: -moz-flex;
display: flex;
-webkit-align-items: center;
-moz-align-items: center;
align-items: center;
-webkit-justify-content: space-around;
-moz-justify-content: space-around;
justify-content: space-around;
}
如果要水平对齐.QuickLink
,请将它们包装在容器内。
<div class="container">
<div class="QuickLink">
...
</div>
</div>
并像这样设置容器:
.container {
display: -webkit-flex;
display: -moz-flex;
display: flex;
-webkit-align-items: center;
-moz-align-items: center;
align-items: center;
-webkit-justify-content: space-around;
-moz-justify-content: space-around;
justify-content: space-around;
}
答案 1 :(得分:1)
通过将显示调整为inline-flex以及在锚标记上将顶部和底部边距设置为自动,我能够实现您的目标。
<div class="QuickLink" >
<a href="someLink.htm">
<img src="http://images.fonearena.com/blog/wp-content/uploads/2013/11/Lenovo-p780-camera-sample-10.jpg" title="Directory">
<br>
Directory
</a>
</div>
<div class="QuickLink" >
<a href="someLink.htm">
<img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTmzMFjujgib4Md4MHoGD4VoIDwqjaG3DDrylUns_rY8dgSuybA" title="Info">
<br>
Info
</a>
</div>
.QuickLink
{
display: inline-flex;
justify-content:center;
border:2px solid #9FAFEC ;
border-radius:4px;
text-align: center;
width:100px;
margin-top:4px;
padding:2px;
height:160px;
}
.QuickLink img
{
height:50px;
width:auto;
}
.QuickLink a
{
text-decoration: none;
color:black;
margin:auto 0;
}
答案 2 :(得分:1)
当您使用固定高度作为包装时,您可以在a标签上使用position:absolute
。它们的左上角为50%,然后使用transform:
https://jsfiddle.net/ymv6bL7s/7/
.QuickLink
{
display: inline-block;
border:2px solid #9FAFEC ;
border-radius:4px;
text-align: center;
width:100px;
vertical-align: top;
margin-top:4px;
padding:2px;
height:160px;
position:relative;
}
.QuickLink img
{
width:80px;
margin: auto;
}
.QuickLink a
{
text-decoration: none;
color:black;
position:absolute;
top:50%;
left:50%;
transform:translate(-50%, -50%);
}
<div class="QuickLink" >
<a href="someLink.htm">
<img src="http://images.fonearena.com/blog/wp-content/uploads/2013/11/Lenovo-p780-camera-sample-10.jpg" title="Directory">
<br>
Directory
</a>
</div>
<div class="QuickLink" >
<a href="someLink.htm">
<img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTmzMFjujgib4Md4MHoGD4VoIDwqjaG3DDrylUns_rY8dgSuybA" title="Info">
<br>
Info
</a>
</div>
答案 3 :(得分:0)
您可以使用flexbox来执行此操作:
.QuickLink a
{
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
text-decoration: none;
color:black;
}
然而,现在图像不会完美地位于div的中心,因为底部的文字占据了一些位置。如果你想改变它,你需要在HTML中进行一些调整,即。在SPAN
标记中换行文字,设置它们的绝对位置并在A
标记中添加相对位置:
.QuickLink span {
position: absolute;
bottom: 0;
left: 0;
right: 0;
}
.QuickLink a {
[...]
position: relative
}