博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈position、table-cell、flex-box三种垂直(水平)居中技巧
阅读量:5821 次
发布时间:2019-06-18

本文共 1914 字,大约阅读时间需要 6 分钟。

一、首先是喜闻乐见的position方法,经典且万能,用法如下:

1 父元素{ 2     position:relative; 3 } 4 子元素{ 5     position:absolute; 6     top:50%; 7     left:50%; 8     margin-top:/*该元素height*0.5的负值*/; 9     margin-left:/*该元素width*0.5的负值*/;10 }

   不需要水平居中可以去掉left和margin-left。

 划重点需要父元素和子元素都定义宽高自适应是不可能自适应的,这辈子都不可能自适应的

 

 

二、 display:table-cell能够使大小不固定的元素实现垂直居中布局,先来一发用法:

 

父元素{    display:table-cell;    vertical-align:middle;}子元素{    vertical-align:middle;}

 

  table-cell布局除了常见的实现不同宽高的图片垂直居中,还能做到自适应两栏布局(评论区等):

  代码如下:

HTML部分:

文字部分

CSS部分:

 

  另外table-cell还能自动使多个子元素等宽分布,不需要自己计算宽度:

  代码如下:

ul{
list-style-type:none; display: table; width: 250px; padding: 0; } li{
display: table-cell; text-align: center; } li+li{
border-left: 1px solid #000; }

 

划重点:1、IE6/7不支持; 2、table-cell不支持margin属性(但支持padding),就很僵硬; 3、尽量不要和浮动/定位同时用,会破坏它的css属性。

 

 

三、如果你用ie我们就做不成朋友之弹性布局神器flex-box,用法如下:

父元素{
display:flex /* 行内元素用inline-flex */ align-items:center;/*当主轴为水平方向(默认)*/ }

  原理是使flex-box的子元素(伸缩项目)沿着侧轴方向(当默认flex-direction:row时,侧轴就是垂直方向)居中对齐。

  使用flex-wrap,还可以使伸缩容器里的内容折叠显示:

  当调整视口宽度缩小到480px时:

  代码如下:

    

超好吃的

麻辣小龙虾

  浏览器兼容情况:

低版本浏览器兼容性解决:

 

display: -moz-box; /* 低版本firefox */

display:-webkit-box;/* IOS 6-,safari 3.1-6 */

------

display: -ms-flexbox; /* IE10  */

display: -webkit-flex; /* Chrome 21+, Safari 6.1+, iOS Safari 7+, Opera 15/16 */

display: -moz-flex; /* 较低版本firefox */

display: flex; /*IE11,  Chrome29+, FireFox 20+ */

参考:

  兼容:

https://zhuanlan.zhihu.com/p/21640023

http://www.cnblogs.com/iriszhang/p/6102524.html

  flex-box的兼容性bug解决:

http://www.w3cplus.com/css3/normalizing-cross-browser-flexbox-bugs.html

转载于:https://www.cnblogs.com/guoyingjie/p/7217548.html

你可能感兴趣的文章
印度庙墓堡之旅(之一)
查看>>
Exchange 2010 RPC配置静态RPC端口客户端访问、通讯簿服务和公用文件夹连接
查看>>
C# 自动登录网页,浏览页面【转载】
查看>>
武汉大学2013年数学分析考研试题参考解答
查看>>
ddraw 视频下画图 不闪烁的方法
查看>>
[詹兴致矩阵论习题参考解答]习题2.7
查看>>
事务(Transaction)概念和特性
查看>>
ListView 使用方法(Asp.Net)
查看>>
BNUOJ34973Liserious战队
查看>>
Andoid数据存储之SQLite数据库
查看>>
Search a 2D Matrix
查看>>
富更富,穷更穷
查看>>
图解:SQL Server SSIS包和job的部署攻略
查看>>
使用SSIS进行数据清洗
查看>>
mysql关于编码部分(乱码出现的原因和解决方法)
查看>>
屏蔽页面双击选中文本
查看>>
SqlExcel使用文档及源码
查看>>
qt qml ajax 获取 json 天气数据示例
查看>>
挑战树莓派:谁才是Geek最爱的开发板?
查看>>
linux 和 ecos 内核线程创建/信号量/event等对比
查看>>