我终于遇到了问题,我的搜索功能还不够。我制作了一些固定高度和宽度的画廊旋转木马,里面有图像列表(时间显示一个li)。图像位于相对margin:auto
元素内的绝对位置(li
等)。
图像通常比具有overflow:hidden
的容器大。图像有max-width:100%
它会产生一种理想的效果,即较小的图像在容器中居中,较大的(较高的)被裁剪,可以打开完整版本。
.gallery-items>li {
padding:0;
margin:0;
width:100%;
height:100%;
text-align:center;
position:relative;
overflow:hidden;
}
.gallery-items>li img {
top:0;
bottom:0;
left:0;
right:0;
margin:auto;
max-width:100%;
max-height:none;
height:auto;
width:auto;
position:absolute;
}
在这里摆弄http://jsfiddle.net/fW63c/1/
在IE8,IE9,Opera 12/15,Chrome中,它的效果很好(图像的中心位于容器的中心)但在Firefox中,较大的图像从容器的开头开始(就像它会{{1有没有人知道如何让它在FF中运行(最好只使用css)。提前感谢任何解决方案,Fafel
答案 0 :(得分:1)
如果您不必支持IE8或更早版本,最佳方法是垂直翻译图像。此方法适用于所有主流浏览器,包括IE9 +:
img {
top: 50%;
transform: translateY(-50%);
}
答案 1 :(得分:1)
这个问题让我很烦恼,但最终我发现设置top: -100%;
和bottom: -100%;
会产生预期效果。
.child {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
}
但是在Firefox中,如果父母不像孩子那么高,那么它只会决定将它们对齐在顶部。但这会奏效:
.child2 {
position: absolute;
left: 0;
right: 0;
top: -100%;
bottom: -100%;
margin: auto;
}
有两个例子,第一个在Firefox中会出错,但在Chrome,Edge和IE中看起来都不错。
.child {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
}
.child2 {
position: absolute;
left: 0;
right: 0;
top: -100%;
bottom: -100%;
margin: auto;
}
.parent {
margin: 30px;
position: relative;
display: inline-block;
width: 100px;
height: 25px;
background-color: yellow;
}
<div class="parent">
<img width="75" heigh="75" class="child" src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.svg?v=6e4af45f4d66">
</div>
<div class="parent">
<img width="75" heigh="75" class="child2" src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.svg?v=6e4af45f4d66">
</div>