相信大家在开发中都会遇到元素的居中问题,而且有些是要跟随浏览器窗口大小的变化但元素永远保持居中位置,下面是我总结的几种常用方法:
1.相对于浏览器窗口居中
css3方法:
#box{
width: 200px;
height: 200px;
background: pink;
/*css3居中*/
position: absolute;/*fixed也行*/
left: calc(50% - 100px);
top: calc(50% - 100px);
}
#box{
width: 200px;
height: 200px;
background: pink;
position: absolute;
top: 50%;
left: 50%;
margin-left: -100px;
margin-top: -100px;
}
常规css方法2:
将上下左右边距(相对于浏览器窗口边缘)全设为0,使浏览器推算出的外边距上下、左右对应相等可以设置任何其他相等的值,但如果窗口小到不能容下任意一个方向的两侧边距,元素也将不居中,所以推荐设为0
#box{
width: 200px;
height: 200px;
background: pink;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin:auto;
}
注意点:这种方法在相对于父级元素居中的问题上一样可行,下面再添加一个子元素相对于父级元素居中的方法
通过为父元素启用弹性盒布局解决子元素水平垂直居中的问题:
html:
<div class="parent">
<div class="child"></div>
</div>
css:
div.parent {
/* 启用弹性盒布局 */
display: flex;
/* 使子元素水平居中 */
justify-content: center;
/* 使子元素垂直居中 */
align-items: center;
width: 50%;
height: 200px;
background-color: aquamarine;
}
div.child {
width: 30%;
height: 100px;
background-color: antiquewhite;
}
效果图:
2.js实现元素相对于浏览器窗口居中问题
<script type="text/javascript">
window.onload = function(){
centerElement("box3");
}
function centerElement(id){
//基于浏览器窗口
var boxDom = document.getElementById(id);
var cleft = 0;
var ctop = 0;
var bw = boxDom.offsetWidth;//需要给盒子设置定位才会生效
var bh = boxDom.offsetHeight;
var dw = window.innerWidth;
var dh = window.innerHeight;
cleft = (dw - bw)/2;
ctop = (dh - bh)/2;
boxDom.style.left =cleft+ "px";
boxDom.style.top = ctop+"px";
window.onresize = function(){
centerElement(id)
}
}
</script>
还有更多关于居中的方法可以点击这里!
以上就是实现元素居中的一些方法,后期如有更好的方法也会继续加进来,或者各位大佬们有好的方法不妨分享一度,阿里嘎多!!!