居中
水平居中:
1.对于inline元素:为父元素设置text-align: center;即可(子元素所有内容都会居中,所以最好在子元素中使用text-align:left;归位)。
2.对于block元素:为元素设置宽度,再设置margin: 0 auto;(IE6还是需要在父元素设置text-align: center;)
3.对于float元素:为元素设置宽度,再设置position:relative;,再设置left:50%;,最后margin-left设置为该元素宽度的一半乘以-1。
.content { height: 30px;background-color: rgb(89, 157, 197); /* 无关紧要的代码 */ float: left; width: 300px; position: relative; left: 50%; margin-left: -150px; }
4.对于position:absolute元素:
法一:为元素设置宽度,再设置left:50%;,最后margin-left设置为该元素宽度的一半乘以-1。
法二:为元素设置宽度,再设置左右偏移为0(left: 0;和right: 0;),最后设置左右外边距为margin: 0 auto;。
垂直居中:
1.对于单行文本垂直居中:设置高度,再设置line-height值等于设置的高度值。
2.父容器高度不知,两种方法:
法一:父容器设置position:relative;,子容器设置position: absolute; top: 50%; transform: translateY(-50%);。
.main { position: relative; width:100%;height: 500px;background-color: rgb(199, 196, 43); /* 无关紧要的代码 */ } .content { background-color: rgb(89, 157, 197); /* 无关紧要的代码 */ position: absolute; top: 50%; transform: translateY(-50%); }
法二:(父容器下只有这个子元素时使用)子容器设置position: relative; top: 50%; transform: translateY(-50%);。
.main { width:100%;height: 500px;background-color: rgb(199, 196, 43); /* 无关紧要的代码 */ } .content { background-color: rgb(89, 157, 197); /* 无关紧要的代码 */ position: relative;top: 50%; transform: translateY(-50%); }
注:transform: translate中的translate是根据自身百分比宽高在X/Y轴上移动。所以如果在子元素使用position: absolute;left:50%; transform:translate(-50%,0);则可以实现水平居中。
3.flex简单粗暴:
.main{ width: 100%; height: 400px; background-color: aqua; /* 无关紧要的代码 */ display:flex;/*Flex布局*/ display: -webkit-flex; /* Safari */ align-items:center;/*指定垂直居中*/ // justify-content:center; /*指定水平居中*/ } .content { width: 200px;height: 200px;background-color: rgb(89, 157, 197); /* 无关紧要的代码 */ }
【个人笔记,只作分享讨论】
网友评论