css系列(布局):实现一个元素在浏览器中水平、垂直居中的几个方案

在开发中偶遇需要一个元素垂直居中的需求,之前都是水平居中,垂直居中使用的比较少,经过一通研究,选择了几种相对比较实用的方案分享,抛砖引玉,如有遗漏不足,还望不吝指正。

方案一(IE7下该方案无法实现垂直居中):

通过设置父级的的块属性实现,将父级元素手动转换位display:table-cell属性,然后使用表格的vertical-align: middle属性,实现元素的垂直居中,子元素继续使用margin:0 auto;实现水平居中即可

代码如下:

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <style>
 7         *{
 8             margin: 0;
 9             padding: 0;
10         }
11         .container{
12             width: 500px;
13             height: 500px;
14             display: table-cell;
15             vertical-align: middle;
16             background: green;
17         }
18         .box{
19             width: 100px;
20             height: 100px;
21             background: #f00;
22             margin: 0 auto;
23         }
24     </style>
25 </head>
26 <body>
27
28 <div class="container">
29     <div class="box"></div>
30 </div>
31 </body>
32 </html>

方案二(IE7下该方案无效):

使用position:absolute,设置left、top、bottom、right、margin的属性

代码如下:

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <style>
 7         *{
 8             margin: 0;
 9             padding: 0;
10         }
11         .box{
12             width: 100px;
13             height: 100px;
14             background: #f00;
15             position: absolute;
16             top: 0;
17             left: 0;
18             bottom: 0;
19             right: 0;
20             margin: auto;
21         }
22     </style>
23 </head>
24 <body>
25 <div class="box"></div>
26 </body>
27 </html>

方案三(完美兼容):

使用position:absolute,设置left、top、margin-left、margin-top的属性,这种方法基本浏览器都能够兼容,不足之处就是需要固定宽高。

代码如下:

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <style>
 7         *{
 8             margin: 0;
 9             padding: 0;
10         }
11         .box{
12             width: 100px;
13             height: 100px;
14             background: #f00;
15             position:absolute;
16             top:50%;
17             left:50%;
18             margin-top:-50px;
19             margin-left:-50px;
20         }
21     </style>
22 </head>
23 <body>
24 <div class="box"></div>
25 </body>
26 </html>

时间: 2024-12-16 02:14:48

css系列(布局):实现一个元素在浏览器中水平、垂直居中的几个方案的相关文章

如何让一个元素始终在窗口水平垂直居中

方法一:div{width:200px;height:200px;background:#000;position:fixed;left:0;top:0;right:0;bottom:0;margin:auto;} 方法二:div{width:200px;height:200px;background:#000;position:fixed;left:50%;top:50%;margin:-100px 0 0 -100px;} 原文地址:https://www.cnblogs.com/zhang

获取元素在浏览器中的绝对位置(从jquery1.8中抠出来)

<style> html,body{margin:0;padding:0;} .d1{margin-left:40px;background:red;width:2000px;height:100px;position:relative;} .d2{margin-left:40px;background:blue;width:1000px;height:80px;} </style> <div id="d1" class="d1">

css实现子层在父层中水平垂直居中

例子: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Cont

CSS实现图片在div a标签中水平垂直居中

CSS实现图片在div a标签中水平垂直居中 <div class="demo"> <a href="#"> <img src="test.jpg" /> </a></div> /*For Firefox Chrome*/.demo{border:1px #ddd solid;width:208px;height:148px;overflow:hidden;text-align:cent

CSS页面布局基础3——元素浮动

1.浮动(float)是基于CSS的现代Web设计用到的主要功能之一,可以用它来创建多累的网页布局,从无序列表创建导航工具条,不是用table而创建类似表格的对其方式等. 为使元素浮动到左边或者右边,并使后面的文本环绕它,可使用float属性,float属性的取值是:none(不浮动),left(向左浮动),right(向右浮动). 使用float属性后,浮动的元素从正常文档流中脱离出来,同时对布局中的其他元素造成一定的影响. 浮动可以应用于任何元素. 我个人认为我们可以这样理解浮动(如有什么不

让一个元素在容器中垂直居中的几个方法

方法一,使用js让元素水平垂直居中 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> #box{ height:200px; width:200px; background:deeppink; position:absolute; } </st

CSS子元素在父元素中水平垂直居中的几种方法

1. 水平居中(margin: auto;)子父元素宽度固定,子元素上设置 margin: auto; 子元素不能设置浮动,否则居中失效. #div1{ width: 300px; height: 300px; border: 1px solid red; } #div1 p { width: 100px; height: 100px; background-color: green; /*float: left; !*如果设置了浮动,则自动居中就会失效.*!*/ margin: 0 auto;

清除css、javascript及背景图在浏览器中的缓存

在实际项目开发过过程中,页面是上传到服务器上的.而为了减少服务器的压力,让用户少加载,浏览器会将图片.css.js缓存到本地中,以便下次访问网站时使用.这样做不仅减少了服务器的压力,并且也减少了用户的下载次数,获得更好的用户体验. 然而在版本升级或做一些css.js等调整的时候,缓存导致用户无法显示更新后的样式,这是另人头头疼的问题.除非用户自行手动升级缓存,不过几乎所有用户不会为了正常访问这个网站而去手动清除缓存,因为用户根本不知道是不是缓存的问题,而归根结底,用户就是认为你的页面存在问题,不

Python3基础 index 返回一个元素在列表中第一次出现的索引值

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 code 1 aList=[1,2,3,1,2,3,[1,2,3]] 2 res=aList.index(1) 3 print(res) 2 show ------------------------------------------博文的精髓,在技术部分,更在镇场一诗.Python是优秀的