用AI赚第一桶💰低成本搭建一套AI赚钱工具,源码可二开。 广告
## **css实现图片水平垂直居中** body结构 ``` <body> <div> <img src="1.jpg" alt="haha"> </div> </body> ``` **方法一:** 将display设置成table-cell,然后水平居中设置text-align为center,垂直居中设置vertical-align为middle。 ``` <style type="text/css"> *{margin: 0;padding: 0;} div{ width:150px; height: 100px; display: table-cell; vertical-align: middle; text-align: center; border:1px solid #000; } img { width: 50px; height: 50px; } </style> ``` **方法二:** 通过position定位来实现。将div设置成相对定位relative,将img设置成绝对定位absolute,left:50%,top:50%,此时图片的左上角位于div的中心,要是图片的中心位于div的中心,就需要将图片向上移动图片高度的一半,并向左移动图片宽度的一半。 ``` <style type="text/css"> *{margin: 0;padding:0;} div{ width:150px; height: 100px; position: relative; border:1px solid #000; } img { width: 50px; height: 50px; position: absolute; top: 50%; left: 50%; margin-top: -25px; /* 高度的一半 */ margin-left: -25px; /* 宽度的一半 */ } </style> ``` **方法三:** **可以用在不清楚图片图片或元素的真实宽高情况下** 还是通过position定位来实现。将div设置成相对定位relative,将img设置成绝对定位absolute,left:50%,top:50%,此时图片的左上角位于div的中心,要是图片的中心位于div的中心,就需要将图片向上移动图片高度的一半,并向左移动图片宽度的一半,如果不知道元素的宽高,可以用transform: translate(-50%,-50%); ``` <style type="text/css"> *{margin: 0;padding:0;} div{ width:150px; height: 100px; position: relative; border:1px solid #000; } img { width: 50px; height: 50px; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); } </style> ``` **方法四:** ``` <style type="text/css"> *{margin: 0;padding:0;} div{ width:150px; height: 100px; position: relative; border:1px solid #000; } img { width: 50px; height: 50px; position: absolute; top: 0; left: 0; right: 0; bottom: 0; margin: auto; } </style> ``` **方法五:弹性布局flex** ``` <style type="text/css"> *{margin: 0;padding:0;} div{ width:150px; height: 100px; border:1px solid #000; display: flex; justify-content: center; align-items: center; } img { width: 50px; height: 50px; } </style> ``` ***** ***** ***** ***** ***** ***** ***** ***** ***** #### **(1).vertical-algin与line-height结合** ![](//upload-images.jianshu.io/upload_images/5075296-0eb7113de4aa48af.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/246/format/webp) 图一 效果如下: ![](//upload-images.jianshu.io/upload_images/5075296-a05aef6dce645a7a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300/format/webp) 图二 > div中是存在着我们看不到的空白节点,我们可以把它想象成一个字母a,这个字母根据我们写的css属性将会水平垂直居中显示,而同时我们设置图片的vertical-algin:middle,图片将会与字母a的中线对齐,而当文字font-size为0的时候,此时文字的中线也就完全居中,此时就是严格意义上的居中显示了(文字font-size不为0时,它的中线与设置的字体有关)。 > ***** #### **(2).position:absolute和margin负值** 代码如下: ![](//upload-images.jianshu.io/upload_images/5075296-0437f9f8da2e66fe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/239/format/webp) 效果如图二所示。 弊端:必须知道图片的宽度和高度。 ***** #### **(3).模拟表格table-cell** ![](//upload-images.jianshu.io/upload_images/5075296-49fafc8a58afa4a7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/255/format/webp) 图四 效果如图二所示。 相当于模拟表格的td标签。 ***** #### **(4).position拉伸** ![](//upload-images.jianshu.io/upload_images/5075296-1e04157e74a76610.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/255/format/webp) 图五 效果如下: ![](//upload-images.jianshu.io/upload_images/5075296-6c650eb59f87f96b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/177/format/webp) 图六 > 如上所示,当块状元素尺寸确定,被拉伸,同时margin:auto的时候,此时,图片就可以达到居中效果,兼容性IE8+。absolute和width同时存在的时候,width的作用要大于拉伸效果。 ***** ***** ***** ## **img右边的文字垂直居中** 对img作如下设置 ``` img{ vertical-align:middle; } ```