图片水平、垂直居中的几种方法

🎯 www.365bet.com亚洲版 📅 2025-08-10 05:00:48 👤 admin 👀 8771 ❤️ 190
将<img>图片水平、垂直居中的几种方法

假设有一个盒子,我们要在其中放置图片,使其居中,有哪些办法呢?(想到了茴香的“茴”字几种写法……)

1、首先是传统的,text-align水平居中,line-height垂直居中。

你好!!!Anytest

当设置 line-height=height 时,单行元素会自动垂直居中——实际上不算很垂直……不信你可以用标尺自己量一下。

也是属于行内元素。不顾哦他的对其方式受到 “vertical-align” 的影响,默认值为 baseline,也就是图片底端对齐的是文本的【基线上】。而这个基线受到文本字号大小的影响,当字号为0时,图片底端对齐父元素垂直中轴。

需要对【图片本身】设置 vertical-align = middle,让他对齐中轴。

不过可以看到,并没有完整对齐……

所以请将父盒子的字体大小调整为0!!!即使父盒子里没有文本

总结:给父盒子设置如下属性,就能使img保持居中。

1 .box {

2 width: 100%; /*宽度是要的,否则怎么水平居中呢?高度同理*/

3 height: 200px; /*保险起见,还可以给子元素img设置最大宽高*/

4 text-align: center;

5 line-height: 200px;

6 vertical-align: middle;

7 font-size: 0

8 }

2、父元素设置为弹性盒子

test

style="position: absolute; top: 50%; width: 100%; height: 2px; background-color: rgba(255,0,0,.5);

margin-top: -1px">

style="position: absolute; left: 50%; top: 0; width: 2px; height: 200px; background-color:

rgba(255,0,0,.5);

margin-left: -1px">

弹性盒子目前鄙人尚未使用到,不过就是有点单纯了解。

重点就是给父盒子添加如下设置即可。

display: flex;

align-items: center;

justify-content: center

注意,align-items 默认值为 strech 会将图片本身作拉伸!所以需要手动设置为 center(即使你不想居中)像这样

优点是不需要知道父盒子的大小以及图片本身大小。

3、万能的margin || padding

test

这个方法没啥好说的,就是添加 内\外边距 ,通过距离把控,人工使其居中。复用性极差,而且需要提前知道 父盒子尺寸 与 图片尺寸,不建议使用。

4、超级好用的定位!

test

可以看出,此时并没有位于正中心,因为定位和margin、padding一样,都是以盒子边缘来判断距离(这不废话么……这里我还手打了样式,结果抬头发现有设置删除线的,好蠢啊……)

所以需要适当得修改位置使其居中。以下在 标签里增添

img {

transform: translate(-50%,-50%);/*坐标轴为第四象限那样,右下为正向,反之负向。这里根据你之前定位来决定相反的偏移量使其居中。复合写法为 translate(x,y)*/

}

因为 translate 的位移是根据元素本身大小来的。所以我们不需要像margin那样丈量 元素本身 以及 父盒子的宽高!十分方便。

注意,这样存在一个问题。那就是如果你要设置 :hover 样式的话——譬如图片垂直移动,那么可能会有所冲突……

.test1:hover img {

transform: translateY(-10px);

}

.test1 img {

position: relative;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

transition: all 1.5s;

}

因为呢,这里的 .test1:hover 的样式层叠性挺高的。给test1前面再加上一个类名声明的话就能保证图片使用静态下的样式了!

不过这样又会导致本身 hover 的动画效果失效……所以要不给父盒子添加动画效果而非单纯标签,要不负偏移修正效果使用 margin 来达成——这样又需要知道图片大小了,有点画蛇添足了……

把父盒子的层级设置低一些,并且不要设置背景颜色,这样就和图片本身移动没什么区别了。

.test1:hover{

transform: translateY(-20px);

}

.test1 {

transition: all 1.5s;

}

.test1 img {

position: relative;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

}

题外话,如果对文字居中的话,最好使用第一种方法。定位不太靠谱,因为行内元素先是 left 碰到了边界,他就会自动换行,之后即使通过 translate 偏移回去,换行也不会停下

你好我的朋友,天气真好啊

需要强制该行内元素禁止换行 white-space: nowrap ,这样他就会正常以一行展示了。

你好我的朋友,天气真好啊

与君共勉。

⬅️ 土方量计算常用的6种方法,具体适合用到哪些地形中? 土耳其的物价究竟有多高, 100块钱可能连一顿都吃不饱! ➡️

🎯 相关推荐

王者之武赏析测评,双穿M4强势返场!
🎯 www.365bet.com亚洲版

王者之武赏析测评,双穿M4强势返场!

📅 07-01 👀 8370
华为手机输入法怎么设置?华为手机输入法设置在哪里设置
🎯 www.365bet.com亚洲版

华为手机输入法怎么设置?华为手机输入法设置在哪里设置

📅 07-13 👀 1266

🎁 合作伙伴