简体   繁体   English

display:inline-block和伪元素做垂直放置

[英]display:inline-block and pseudo-element to do Vertically placed

I'm using display:inline-block and pseudo-element( ::before , ::after ) to do [ vertically - middle ] but it's not working, pseudo-element will occupy a row even it width is 0 , I don't know why? 我正在使用display:inline-block和pseudo-element( ::before::after )做[ vertically - middle ],但它不起作用,即使width0 ,伪元素也将占据一行,我不知道不知道为什么吗?

I know other methods to do it(likes flex , position , line-height ...) I just curious, what's wrong in this? 我知道其他方法可以做到这一点(比如flexpositionline-height ...)我只是好奇,这怎么了? Thank you everyone. 谢谢大家。 Demo below or here : https://jsfiddle.net/pm06tkjs/ 下方或此处的演示: https : //jsfiddle.net/pm06tkjs/

 .container{ height: 200px; background: rgba(0, 0, 0, 0.2); } .container::before { content: ''; display: inline-block; width: 0; height: 100%; vertical-align: middle; } .img-group { display: inline-block; vertical-align: middle; } img { display: inline-block; margin-right: -4px; max-width: 20%; height: auto; } 
 <div class="container"> <div class="img-group"> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> </div> </div> 

Approach 1 : You Can set the width of img-group less than 100% percentage. 方法1 :您可以将img组的宽度设置为小于100%的百分比。

 .container{ height: 200px; background: rgba(0, 0, 0, 0.2); } .container::before { content: ''; display: inline-block; width: 0; height: 100%; vertical-align: middle; } .img-group { display: inline-block; vertical-align: middle; width: 99%; } img { display: inline-block; margin-right: -4px; max-width: 20%; height: auto; } 
 <div class="container"> <div class="img-group"> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> </div> </div> 

Approch 2 : You are using display inline block property and on image margin right also. 方式2 :您正在使用显示内联块属性,并且也在图像边距上使用。 So display inline block also takes some extra space around the image block. 因此,显示内联块还会在图像块周围占用一些额外的空间。 So you can add width 100% if you want to and also add the margin left in negative. 因此,您可以根据需要添加100%的宽度,还可以添加负数的边距。

 .container{ height: 200px; background: rgba(0, 0, 0, 0.2); } .container::before { content: ''; display: inline-block; width: 0; height: 100%; vertical-align: middle; } .img-group { display: inline-block; vertical-align: middle; width: 100%; margin-left: -4px; } img { display: inline-block; margin-right: -4px; max-width: 20%; height: auto; } 
 <div class="container"> <div class="img-group"> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> </div> </div> 

default margin between your inline element is the problem! 内联元素之间的默认边距是问题! for solving it add font-size:0 for your inline element parent. 为了解决这个问题,请为您的内联元素parent添加font-size:0

 .container{ height: 200px; background: rgba(0, 0, 0, 0.2); font-size:0; } .container::before { content: ''; display: inline-block; width: 0; height: 100%; vertical-align: middle; } .img-group { display: inline-block; vertical-align: middle; font-size:0; } img { display: inline-block; max-width: 20%; height: auto; } 
 <div class="container"> <div class="img-group"> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> <img src="https://www.penghu-nsa.gov.tw/FileDownload/Album/Big/20161012162551758864338.jpg" alt=""> </div> </div> 
for more detail for how to remove gap between inline elements check here 有关如何消除内联元素之间的间隙的更多详细信息,请单击此处

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM