Bootstrap 列内容居中和绝对定位
Bootstrap Column Content Centering and Absolute Positioning
我有一个包含 3 列的 bootstrap 行。列在除移动设备之外的所有内容中水平显示。在移动设备中,它们垂直堆叠,这就是我想要的...这就是问题所在。
我在 3 列中的每一列中都有响应式 (img-responsive) 图片。在移动显示中,我希望图像在列中居中。最重要的是,我需要 2 div 在响应图像上进行绝对定位。它在 chrome 中工作正常,但在 I.E.和 FireFox,由于外部 div 有 display:inline 块,图像没有响应。
代码如下:
<div class="row">
<div class="col-md-4 col-sm-6" style="text-align:center;">
<div style="margin-bottom:15px;position:relative;display: inline-block;">
<div style="position:absolute;top:0;right:0;padding:5px;font-weight:bold;background-color:#bb091f;color:#FFF;">
Live Deal
</div>
<img class="img-responsive" style="border:solid 1px #666;display:inline-block !important;" src="http://www.weekesisland.com/photos/atv.jpg" />
<div class="deal2Timer" style="position:absolute;bottom:1px;right:1px;width:190px;opacity:.9;"></div>
</div>
</div>
<div class="col-md-4 col-sm-6" style="text-align:center;">
<div style="margin-bottom:15px;position:relative;display: inline-block;">
<div style="position:absolute;top:0;right:0;padding:5px;font-weight:bold;background-color:#bb091f;color:#FFF;">
Live Deal
</div>
<img class="img-responsive" style="border:solid 1px #666;display:inline-block !important;" src="http://www.weekesisland.com/photos/atv.jpg" />
<div class="deal3Timer" style="position:absolute;bottom:1px;right:1px;width:190px;opacity:.9;"></div>
</div>
</div>
<div class="col-md-4 col-sm-6" style="text-align:center;">
<div style="margin-bottom:15px;position:relative;display: inline-block;">
<div style="position:absolute;top:0;right:0;padding:5px;font-weight:bold;background-color:#bb091f;color:#FFF;">
Live Deal
</div>
<img class="img-responsive" style="border:solid 1px #666;display:inline-block !important;" src="http://www.weekesisland.com/photos/atv.jpg" />
<div class="deal4Timer" style="position:absolute;bottom:1px;right:1px;width:190px;opacity:.9;"></div>
</div>
</div>
</div>
下面是它在 chrome 与 firefox 中的对比。
Chrome 桌面:
Chrome 手机:
在移动端,当 windows 宽度小于图像时,图像会因 img-responsive 而缩放。
火狐桌面:
火狐手机
请注意 firefox 图像如何不再响应....但是它在移动显示的列中居中,并且 2 div 的绝对定位是正确的。
有什么方法可以做到这一点 cross-browser 兼容吗?我尝试了很多选项,但没有 inline-block,我无法将绝对元素正确定位在响应图像上,也无法在移动显示的列中居中。
为了获得更好的响应图像效果,我使用 jQuery。
这是我修复它的方法...它比我想象的要简单:
<div class="col-md-4 col-sm-6" style="text-align:center;">
<div class="homeLiveDealMobile">
<div class="liveDealBlock">
Live Deal
</div>
<img class="img-responsive imgBorder" src="http://www.weekesisland.com/photos/atv.jpg" />
<div class="deal3Timer homepageTimer"></div>
</div>
</div>
CSS:
.liveDealBlock {
position:absolute;
top:0;
right:0;
padding:5px;
font-weight:bold;
background-color:#bb091f;
color:#FFF;
}
.homeLiveDealMobile {
margin-bottom:15px !important;
position:relative;
}
.homepageTimer {
position:absolute;
bottom:1px;
right:1px;
width:190px;
opacity:.9;
}
@media(max-width:767px){
.homeLiveDealMobile {
max-width:391px !important;
margin:auto;
}
}
我有一个包含 3 列的 bootstrap 行。列在除移动设备之外的所有内容中水平显示。在移动设备中,它们垂直堆叠,这就是我想要的...这就是问题所在。
我在 3 列中的每一列中都有响应式 (img-responsive) 图片。在移动显示中,我希望图像在列中居中。最重要的是,我需要 2 div 在响应图像上进行绝对定位。它在 chrome 中工作正常,但在 I.E.和 FireFox,由于外部 div 有 display:inline 块,图像没有响应。
代码如下:
<div class="row">
<div class="col-md-4 col-sm-6" style="text-align:center;">
<div style="margin-bottom:15px;position:relative;display: inline-block;">
<div style="position:absolute;top:0;right:0;padding:5px;font-weight:bold;background-color:#bb091f;color:#FFF;">
Live Deal
</div>
<img class="img-responsive" style="border:solid 1px #666;display:inline-block !important;" src="http://www.weekesisland.com/photos/atv.jpg" />
<div class="deal2Timer" style="position:absolute;bottom:1px;right:1px;width:190px;opacity:.9;"></div>
</div>
</div>
<div class="col-md-4 col-sm-6" style="text-align:center;">
<div style="margin-bottom:15px;position:relative;display: inline-block;">
<div style="position:absolute;top:0;right:0;padding:5px;font-weight:bold;background-color:#bb091f;color:#FFF;">
Live Deal
</div>
<img class="img-responsive" style="border:solid 1px #666;display:inline-block !important;" src="http://www.weekesisland.com/photos/atv.jpg" />
<div class="deal3Timer" style="position:absolute;bottom:1px;right:1px;width:190px;opacity:.9;"></div>
</div>
</div>
<div class="col-md-4 col-sm-6" style="text-align:center;">
<div style="margin-bottom:15px;position:relative;display: inline-block;">
<div style="position:absolute;top:0;right:0;padding:5px;font-weight:bold;background-color:#bb091f;color:#FFF;">
Live Deal
</div>
<img class="img-responsive" style="border:solid 1px #666;display:inline-block !important;" src="http://www.weekesisland.com/photos/atv.jpg" />
<div class="deal4Timer" style="position:absolute;bottom:1px;right:1px;width:190px;opacity:.9;"></div>
</div>
</div>
</div>
下面是它在 chrome 与 firefox 中的对比。
Chrome 桌面:
Chrome 手机:
在移动端,当 windows 宽度小于图像时,图像会因 img-responsive 而缩放。
火狐桌面:
火狐手机
请注意 firefox 图像如何不再响应....但是它在移动显示的列中居中,并且 2 div 的绝对定位是正确的。
有什么方法可以做到这一点 cross-browser 兼容吗?我尝试了很多选项,但没有 inline-block,我无法将绝对元素正确定位在响应图像上,也无法在移动显示的列中居中。
为了获得更好的响应图像效果,我使用 jQuery。
这是我修复它的方法...它比我想象的要简单:
<div class="col-md-4 col-sm-6" style="text-align:center;">
<div class="homeLiveDealMobile">
<div class="liveDealBlock">
Live Deal
</div>
<img class="img-responsive imgBorder" src="http://www.weekesisland.com/photos/atv.jpg" />
<div class="deal3Timer homepageTimer"></div>
</div>
</div>
CSS:
.liveDealBlock {
position:absolute;
top:0;
right:0;
padding:5px;
font-weight:bold;
background-color:#bb091f;
color:#FFF;
}
.homeLiveDealMobile {
margin-bottom:15px !important;
position:relative;
}
.homepageTimer {
position:absolute;
bottom:1px;
right:1px;
width:190px;
opacity:.9;
}
@media(max-width:767px){
.homeLiveDealMobile {
max-width:391px !important;
margin:auto;
}
}