您有一个 HTML 结构,其中一个容器保持方形纵横比作为浏览器窗口已调整大小。在此容器内,您想要添加图像,但需要确保它保持垂直对齐。挑战的出现是因为图像的高度是可变的,并且容器的高度无法固定。
使用 CSS 内联元素
HTML:
<div class="container"> <div>
CSS:
.container { height: 300px; text-align: center; /* align the inline(-block) elements horizontally */ font: 0/0 a; /* remove the gap between inline(-block) elements */ } .container:before { /* create a full-height inline block pseudo=element */ content: ' '; display: inline-block; vertical-align: middle; /* vertical alignment of the inline element */ height: 100%; } #element { display: inline-block; vertical-align: middle; /* vertical alignment of the inline element */ font: 16px/1 Arial sans-serif; /* <-- reset the font property */ }
要创建高度相对于宽度调整大小的响应式容器,您可以使用百分比值对于顶部/底部填充属性:
.responsive-container { width: 60%; padding-top: 60%; /* 1:1 Height is the same as the width */ padding-top: 100%; /* width:height = 60:100 or 3:5 */ padding-top: 45%; /* = 60% * 3/4 , width:height = 4:3 */ padding-top: 33.75%; /* = 60% * 9/16, width:height = 16:9 */ }
为了避免容器顶部或底部出现过多空间,请将图像包装在包装元素中并将其定位绝对在容器内以填充其整个空间:
.responsive-container { width: 60%; position: relative; } .responsive-container .wrapper { position: absolute; top: 0; right: 0; bottom: 0; left: 0; }
HTML:
<div class="responsive-container"> <div class="dummy"></div> <div class="img-container"> <img src="http://placehold.it/150x150" alt=""> </div> </div>
用于图像对齐的CSS:
.img-container { text-align: center; /* Align center inline elements */ font: 0/0 a; /* Hide the characters like spaces */ } .img-container:before { content: ' '; display: inline-block; vertical-align: middle; height: 100%; } .img-container img { vertical-align: middle; display: inline-block; }
为了更好地跨浏览器兼容性,您可以使用 div 元素作为图像容器的第一个子元素而不是伪元素:
HTML:
<div class="img-container"> <div class="centerer"></div> <img src="http://placehold.it/150x150" alt=""> </div>
CSS:
.img-container .centerer { display: inline-block; vertical-align: middle; height: 100%; }
保留图像当容器内宽度较小时,可以使用 max-height 和 max-width 属性图片:
.img-container img { max-height: 100%; /* Set maximum height to 100% of its parent */ max-width: 100%; /* Set maximum width to 100% of its parent */ }
以上是如何在响应式容器内垂直对齐图像?的详细内容。更多信息请关注PHP中文网其他相关文章!