居中大法

2017-06-06  本文已影响0人  Love小六六

水平居中

  1. 行内元素水平居中
    给它的父级元素设置
text-align:center;
  1. 块级元素水平居中
    给该元素设置margin值
margin:0 auto;
  1. 子元素有浮动
    对父元素进行特殊设置
width:fit-content;
margin:0 auto;
  1. 使用弹性盒子(老版本)
    对父元素进行设置
display:box;//声明弹性盒模型
box-orient:horizontal;//确定子元素方向,horizontal水平,vertical垂直
box-pack:center;//盒子内部剩余空间对齐表现
  1. 使用弹性盒子(新版本)
    对父元素进行设置
display:flex;
flex-direction:row;//设置主轴方向
just-content:center;//主轴方向空间对齐方式
  1. transform方法
    父元素的position设置为relative,对子元素进行设置
position:absolute;
left:50%;
transform:translateX(-50%);//或translate(-50%,0)
  1. margin-left 负值
    父元素的position设置为relative,对子元素进行设置
position:absolute;
left:50%;
margin-left:-子元素宽度一半;
  1. 子元素绝对定位
    对子元素进行设置
position:absolute;
top:0;
bottom:0;
left:0;
right:0
margin:0 auto;

垂直居中

  1. 单文本内容
line-height:100px;//line-height==父元素高度值
  1. 行内块级元素(即display为inline-block)
    为父元素添加伪类
.parent ::after{
content:"";
height:100%;
}
.parent ::after, .son{
display:inline-block;
vertical-align:middle;
}
  1. 子元素以表格形式渲染
    父元素display设置为table,再设置子元素
display:table-cell;
vertical-align:middle;
  1. flex布局
    设置父元素
display:box;
box-orient:vertical;
box-pack:center;
  1. flex布局
    设置父元素
display:flex;
flex-direction:column;
align-center:center;
  1. margin负半值
    父元素position:relative,再设置子元素
position:absolute;
top:50%;
height:固定值;
margin-top: -高度的一半;
  1. 子元素相对定位
    父元素position:relative,再设置子元素
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
margin:auto 0;
  1. 需要在居中元素前面放一个空块级元素(比如div)即可,然后设置这个div的高度为50%,margin-bottom为元素高度的一半,而且居中元素需要清除浮动,需要注意的是,使用这种方法,如果你的居中元素是放在body中的话,需要给html,body设置一个height:100%的属性
<div class="box"></div>
<div class="content">Content</div>
</pre>
<pre>
html,body{height:100%;}
 .box{
        height:50%;  /*相对父元素的高度的50%*/
        margin-bottom:-120px;
}
.content{
        clear:both;/*清除浮动*/
        width:240px;
        height:240px;
        position:relative;/*只能用相对定位*/
        background:green;
}

水平垂直居中

  1. 对于文本图片
line-height:高度;
tex-align:center;
  1. 定宽定高
    父元素为position:relative,再对子元素进行设置
position:absolute;
left:50%;
top:50%;
margin-left:-宽度一半;
margin-top:-高度一半;
  1. 绝对定位+margin法
    对子元素进行设置
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
margin:auto;
  1. 使用js动态计算
    水平居中元素应设置为绝对定位,获取元素的位置,距离浏览器左边,上边的距离,并且进行赋值
    left:(浏览器的宽度-元素的宽度)/2
    top:(浏览器的高度-元素的高度)/2
var oBox=document.getElementById("box"),
      left=(document.documentElement.clientWidth-oBox.offsetWidth)/2,
      top = (document.documentElement.clientHeight)/2;
      oBox.style.left = left+"px";
      oBox.style.top = top+"px";
  1. 使用jQuery实现元素的水平垂直居中
    获取元素
    获取浏览器可视宽度$(window).width();
    获取浏览器可视高度$(window).height();
    元素距离浏览器左边的距离left:($(window).width()-元素.width())/2
    元素距离浏览器上边的距离top:($(window).height()-元素.height())/2
    resize:当调整浏览器窗口的大小时,发生 resize 事件
var oBox = $("#box"),
       oW = $(window).width(),   //获取浏览器的可视宽度
       oH  = $(window).height(), //获取浏览器的可视高度
       l = (oW-oBox.width())/2,  // 元素距离浏览器左边的距离
       t = (oH-oBox.height())/2; //元素距离浏览器右边的距离
       oBox.css({                    //赋值操作,left,top值
           left:l,
           top:t
        });
上一篇下一篇

猜你喜欢

热点阅读