自适应布局上的垂直自适应图像对齐
Vertical adaptive image alignment on adaptive layout
这是我的代码:
HTML<html>
<body>
<div id="id">
<div class="one">
<img>
</div>
<div class="two">
<img>
</div>
<div class="one">
<img>
</div>
</div>
</body>
</html>
CSS div{
float : left;
width : 33,3%
height : 100%;
}
img{
max-width : 100%;
max-height : 100%;
}
div#id{
position : fixed;
top : 0;
bottom : 0;
left : 0;
right : 0;
}
我一直在寻找这个多年,不能弄清楚它…
div和images的未知高度图像可以改变。如何垂直对齐div内的图像class="one"?由于这是一个自适应布局,图像必须缩放以防止溢出。
table-cell或line-height = 100%似乎行不通。
我真的需要javascript吗?我尝试过jquery代码,但它超出了我的知识,最终改变了我网站上所有图像的边距…
$(document).ready(function() {
$(".one").each(function(){
var wrapH = $(".one").outerHeight();
var imgH = $("img").outerHeight();
var padTop = (wrapH-(imgH))/2;
if (padTop>0){
$("img").css("margin-top", padTop + "px");
}
});
});
使用下面的HTML可以很容易地做到这一点:
<div class="wrap">
<div class="image-panel">
<img src="http://placekitten.com/300/300">
</div>
<div class="image-panel">
<img src="http://placekitten.com/400/600">
</div>
<div class="image-panel">
<img src="http://placekitten.com/200/600">
</div>
</div>
并应用以下CSS样式:
.wrap {
border: 1px dotted blue;
display: table;
width: 100%;
}
.image-panel {
display: table-cell;
vertical-align: middle;
text-align: center;
border: 1px dashed blue;
width: 33.3333%;
padding: 10px;
}
.image-panel img {
width: 100%;
display: block;
}
在这个特殊的布局中,我假设每个面板的总宽度为33.3%,并且图像自动缩放以适合表格单元格div的宽度。
Demo提琴:http://jsfiddle.net/audetwebdesign/ZBNh7/
好吧,我终于找到了一个解决方案,使用jquery的bdmoura在这篇文章:https://stackoverflow.com/users/2442497/bdmoura他向我展示了如何根据图像和div高度为图像设置自适应边距。下面是jquery代码:
$(document).ready(function() {
$(".one").each(function(){
var wrap = $(this),
wrapH = wrap.outerHeight(),
img = wrap.find('img'),
image = new Image(),
imgH = 0,
padTop = 0;
image.onload = function () {
imgH = img.outerHeight();
padTop = ( wrapH - ( imgH ) )/2;
if ( padTop > 0 ){
img.css("margin-top", padTop + "px");
}
}
image.src = img.attr('src');
});
});
感谢他!
是。我认为在这一点上,你需要jQuery/javaScript。
你只能真正对齐img或inline/inline-block元素。
.block img {
/* display: inline; (default) */
display: inline-block;
vertical-align: middle;
}
小提琴:
如果你能弄明白就太好了!我们都需要这个
你可以像前面提到的那样使用table-cell…但在响应式设置中,这是行不通的——尤其是当这些块位于响应式网格中时。一旦你需要浮动,这几乎总是 -事情会变得非常混乱。谜。
相关文章:
- 自适应简单滑块
- 图像自适应调整大小+Javascript的问题
- OpenLayers-自定义图像在一层上的马赛克
- 如何使用JS捕捉带有垂直线的自定义图像光标
- 在画布中创建自定义图像对象
- 页脚粘贴到底部,具有自适应布局(引导区)
- 可以用我自己的自定义图像替换光标
- 位置问题:固定和响应/自适应布局
- 如何在javascript中使画布显示自定义图像作为背景
- 默认情况下,使用贝宝自适应支付显示支付详细信息
- 如何在这里的地图中添加自定义图像标记
- Google Plus通过javascript共享,带有自定义图像
- 如何制作自适应块并在那里添加块
- JS--自定义图像属性
- 嵌入视频,将黑色背景更改为自定义图像或第一个视频场景
- “未捕获的类型错误:无法读取未定义的属性'嵌入'”在 pdfMake pdf 引擎中使用自定义图像时
- 自定义图像作为单选按钮
- 自适应布局上的垂直自适应图像对齐
- jquery为图像设置自适应上边距
- Chrome显示自适应图像和宽度的百分比正确,Firefox没有