html css设置垂直居中,CSS设置垂直居中

本文介绍了如何使用CSS实现父元素与子元素之间的垂直居中,通过计算父元素高度的50%减去子元素高度的50%,并应用到`top`属性,避免JavaScript的性能开销。实例详细展示了HTML结构和CSS代码,适用于大量元素布局的优化。

aff9f72ce5e96a0c1bdf543372de9ae7.png

解决思路是得到父元素的height,减去子元素的height,再除以2,得到的结果作为像素值内联Top属性。其实就是父元素的50%的高度再减去子元素50%的高度。

下图解释:

0ffa46e6b90b1da4f682ecf7218e3b50.png

上图中红色的“210px”,是我们需要在“top”属性设置的值。

当然,你也可以通过在窗口加载后,或者调整窗口/对象后,再运行一个重新计算位置的javascript。但是,如果有几百个元素的时候,用脚本的话,性能会很差。

HTML代码

[html]

我在垂直居中位置
我也是

[/html]

CSS代码

[css].wrapz {

background: #eee;

color: #FFF;

font-family: Helvetica, Arial, sans-serif;

left: 50%;

top: 50%;

height: 80%;

width: 80%;

position: absolute;

text-align: center;

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

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

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

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

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

}

.parent{

background: lightblue;

padding: 1%;

position: absolute;

height: 50%;

width: 30%;

top: 50%;

-webkit-transform: translateY(-50%);

-moz-transform: translateY(-50%);

-ms-transform: translateY(-50%);

-o-transform: translateY(-50%);

transform: translateY(-50%);

}

.bigger{

left: 10%;

}

.smaller{

right: 10%;

}

.children{

background: lightgreen;

display: block;

padding-top: 10%;

position: relative;

top: 50%;

-webkit-transform: translateY(-50%);

-moz-transform: translateY(-50%);

-ms-transform: translateY(-50%);

-o-transform: translateY(-50%);

transform: translateY(-50%);

}

.bigger .children{

height: 140%;

}

.smaller .children{

height: 80%;

}

[/css]

### CSS 图片垂直居中方法 在网页设计中,图片的垂直居中是一个常见的需求。以下是几种常用的实现方式: #### 方法一:Flexbox 垂直居中 Flexbox 是一种强大的布局工具,能够轻松实现元素的水平和垂直居中。以下是如何利用 Flexbox 来使图片垂直居中的示例代码[^1]。 ```html <html> <style> .parent { width: 400px; height: 200px; border: solid 1px black; display: flex; /* 启用弹性盒子 */ justify-content: center; /* 水平居中 */ align-items: center; /* 垂直居中 */ } </style> <body> <div class="parent"> <img src="example.jpg" alt="Example Image" style="width: 50px;"> </div> </body> </html> ``` 这种方法简单直观,适用于现代浏览器环境下的开发工作。 --- #### 方法二:Grid 布局垂直居中 CSS Grid 提供了一种更灵活的方式来定义网格结构并控制子项的位置。下面展示了如何使用 `grid` 属性让图片垂直居中。 ```html <html> <style> .parent { width: 400px; height: 200px; border: solid 1px black; display: grid; /* 使用网格布局 */ place-items: center; /* 自动设置水平和垂直方向上的居中效果 */ } </style> <body> <div class="parent"> <img src="example.jpg" alt="Example Image" style="width: 50px;"> </div> </body> </html> ``` 此方法同样适合于较新的项目,并且具有良好的兼容性和可维护性。 --- #### 方法三:Table-cell 和 Vertical-align 组合 对于不支持最新标准的老版本浏览器来说,可以通过模拟表格单元格的方式完成同样的功能[^2]。 ```html <html> <style> .parent { width: 400px; height: 200px; border: solid 1px black; text-align: center; /* 让内部内容水平居中 */ vertical-align: middle; /* 设置垂直对齐方式 */ display: table-cell; /* 将容器转换成类似于表格的行为 */ } img { vertical-align: middle; /* 配合父级样式调整位置 */ } </style> <body> <div class="parent"> <img src="example.jpg" alt="Example Image" style="width: 50px;"> </div> </body> </html> ``` 需要注意的是,在这种情况下,必须确保 `.parent` 的 `display` 被设为 `table-cell` 才能正常运作。 --- #### 方法四:绝对定位配合 transform 如果希望保持传统盒模型的同时又能达到精确的效果,则可以考虑采用如下技巧。 ```html <html> <style> .parent { position: relative; /* 创建相对定位上下文 */ width: 400px; height: 200px; border: solid 1px black; } img { position: absolute; /* 子节点变为绝对定位模式 */ top: 50%; /* 移到距离顶部一半高度处 */ left: 50%; /* 移到距离左侧一半宽度处 */ transform: translate(-50%, -50%); /* 微调回原点中心 */ } </style> <body> <div class="parent"> <img src="example.jpg" alt="Example Image" style="width: 50px;"> </div> </body> </html> ``` 这种方式尤其适用于复杂场景下需要动态计算偏移量的情况。 --- ### 总结 以上介绍了四种不同的技术手段来解决 CSS 中关于图片垂直居中的实际应用问题。每种方案都有其特定适用范围以及优缺点,请根据具体业务需求选择最合适的那一个。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值