第147天:web前端开发中的各种居中总结

简介: 一、水平居中方法① :行内元素 (父元素)text-align,(子元素)inline-block.parent{text-align: center;} .child{display: inline-block;} 总结:优点:兼容性好,支持低版本...

一、水平居中

方法 :行内元素 (父元素)text-align,(子元素)inline-block

.parent{text-align: center;}                 
.child{display: inline-block;} 
总结:

优点:兼容性好,支持低版本浏览器

缺点:需要同时在父元素和子元素上设置

适用场景:子元素数量少(或只有一个),并且需要兼容低版本浏览器时使用,不受 float影响
 
方法 :块状元素   使用margin:0 auto来实现
.child{width:200px;margin:0 auto;} 

优点:兼容性好

缺点:需要指定宽度

前提:用于子元素上,不受float影响

方法(子元素)display:table;margin:0 auto;

.child{display:table;margin:0 auto;} 

优点:只需要对自身进行设置

缺点:不兼容IE6和IE7

适用场景:子元素数量多,不方便修改父元素的属性,对浏览器版本要求相对较低时使用

方法④:绝对定位实现 (父元素)position:relative,(子元素)absolute+left+transform(translateX(-50%))

.parent{position:relative;}
/*或者实用margin-left的负值为盒子宽度的一半也可以实现,不过这样就必须知道盒子的宽度,但兼容性好*/
.child{position:absolute;left:50%;transform:translate(-50%);} 
优点:不影响其他元素
缺点: transform兼容性,IE9及以上可用

方法:flex+justify-content/margin

/*第一种方法*/
.parent{display:flex;justify-content:center;}
/*第二种方法*/
.parent{display:flex;}
.child{margin:0 auto;} 

第一种方法:

优点:只设 parent
缺点: flex兼容性差,而且比较耗资源

第二种方法:

优点:代码简单
缺点:污染父元素,flex兼容性问题,如果进行大面积的布局可能会影响效率

二、垂直居中

方法 :单行文本 设置line-height等于父元素高度

.child{ height:20px; line-height:20px} 
优点:代码简单
缺点:只适合一行文本,多行文本则不可以
这是一种很流行的方法, 也适应IE7.
 
方法  :行内块级元素  使用display:inline-block; vertical-align:middle;
.child{display:inline-block; vertical-align:middle}
.parent:after{display:inline-block; vertical-align:middle} 

方法 :块级元素 使用vertical-align的时候,由于对齐的基线是用行高的基线作为标记,故需要设置line-height或设置display:table-cell;

/*第一种方法*/
.parent{display:table-cell;vertical-align:middle;height:20px;}
/*第二种方法*/
.parent{display:inline-block;vertical-align:middle;line-height:20px;} 
优点:兼容性比较好,换成 table可以兼容IE6,7
缺点: table-cell不能和 float、position:absolute同时设置。(只能在外parent外套一层div.wrap才能设置float)
 
若元素的高度不一定的话
vertical-align只有在父层为 td 或者 th 时, 才会生效, 对于其他块级元素, 例如 div、p 等, 默认情况是不支持的. 为了使用vertical-align, 我们需要设置父元素display:table, 子元素 display:table-cell;vertical-align:middle;
/*第一种方法*/
.parent{display:table}
.child{display:table-cell;vertical-align:middle;}
优点:元素高度可以动态改变,不需要css定义,如果父元素有足够空间,该元素不会被截断
缺点:IE6、7,甚至IE8 beta中无效
 
方法④:使用绝对定位
.parent{position:relative;}

.child{positon:absolute;top:50%;transform:translate(0,-50%);} 
优点:基本只设置子元素,不影响其他元素
缺点: transform兼容性问题


方法⑤:使用flex实现方法 (父)flex + align-items

.parent{display:flex;align-items:center;} 
优点:只要设置parent
缺点:flex和 align-items的兼容性

三、【终极需求】水平垂直同时居中!

方法①:元素高度固定

.parent{position:relative;}
.child{position:absolute;top:50%;left:50%;width:固定;height:固定;margin-top:-0.5*高度;margin-left:-0.5*宽度;}

适用于所有浏览器

方法②:元素高度固定

.parent{position:relative;}
.child{position:absolute;width:固定;height:固定;top:0;left:0;right:0;
bottom:0;margin:auto
} 

适用于所有浏览器

方法③:(父)text-align + table-cell + vertical-align,(子)inline-block(兼容性方案)

.parent{display:table-cell;vertical-align:middle;text-align:center;}
.child{display:inline-block;}

方法④:使用绝对定位

.parent{position:relative;}
.child{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);} 
优点:基本只设置子元素,不影响其他元素
缺点:transform兼容性问题
方法⑤:利用flex实现
.parent{display:flex;justify-content:center;align-items:center;}
优点:只要设置parent
缺点:flex和align-items的兼容性
相关文章
|
2天前
|
人工智能 前端开发
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
|
5天前
|
存储 前端开发 JavaScript
从 Web 2.0 到 Web 3.0:前端开发的历史与未来
【10月更文挑战第4天】本文探讨了从 Web 2.0 到 Web 3.0 的前端开发演变过程。Web 2.0 时代,前端开发者从静态网页设计走向复杂交互,技术框架如 jQuery、React 和 Vue 带来了巨大的变革。而 Web 3.0 以区块链技术为核心,带来了去中心化的互联网体验,前端开发者面临与区块链交互、去中心化身份验证、分布式存储等新挑战。文章总结了 Web 2.0 和 Web 3.0 的核心区别,并为开发者提供了如何应对新技术的建议,帮助他们在新时代中掌握技能、设计更安全的用户体验。
22 0
从 Web 2.0 到 Web 3.0:前端开发的历史与未来
|
6天前
|
前端开发 JavaScript 开发者
web前端需要学什么
web前端需要学什么
|
8天前
|
前端开发 JavaScript 开发者
Web组件:一种新的前端开发范式
【10月更文挑战第9天】Web组件:一种新的前端开发范式
11 2
|
8天前
|
JavaScript 前端开发 开发者
前端开发趋势:从Web Components到Vue.js
【10月更文挑战第9天】前端开发趋势:从Web Components到Vue.js
|
5天前
|
移动开发 前端开发 JavaScript
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
30 0
|
5天前
|
存储 安全 前端开发
在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施
在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施
27 0
|
5天前
|
存储 前端开发 API
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
33 0
|
6天前
|
编解码 前端开发 JavaScript
Web前端开发需要掌握哪些知识?
Web前端在最近几年发展的十分迅速,报名进行Web前端培训的同学也越来越多。移动互联网的背景之下,每一个人每天会跟各式各样的手机端应用打交道,殊不知这些App都跟Web前端有着密不可分的关系。
|
8天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
46 3