CSS笔记(六)居中&页面布局

 

居中布局:适用于父元素和子元素定宽既不定宽也不定高,所以自然也适用于定宽和定高情况。


 

一、水平居中

1、父 relative + 子 absolute + left:50% + transform: translateX(-50%)

translate() 在不知道宽、高的情况下可以利用它水平居中。当使用 top: 50%; left: 50%; 时是以左上角为原点,所以会有半个身位的误差。

 transform: translate(x,y)定义2D转换, translate(-50%,-50%)作用是向左(X轴)向上(Y轴)移动自身长度的50%,使其居于中心位置。

 transform: translateX(-50%); 向左平移半个自身长度。

     

给子元素设置负margin值也可以实现居中(绝对值必须为子元素宽度的一半),但是需要知道子元素的宽度(子元素要定宽)。垂直方向同理。

 

2、 父 flex + 子 justify content: center

justify-content 用于设置或检索弹性盒子元素在X轴方向上的对齐方式。

justify-content:center; 使项目位于容器中心。 display:flex; 容器是浏览器窗口。

    

 

3.父 flex + 子 margin:0 auto

margin:0 auto 对象上下间距为0,左右空白自适应并相等(拆分为 margin:0 auto 0 auto 上右下左)

    

 

margin:0 auto;   应用条件:

块级元素:要居中的块级元素要设定宽度

②行内元素:先display:block;然后给定宽度。

③行内块元素:display:block。(如input、button、img等元素,自带宽度可以不用设置其宽度)

④父元素 display:flex; 子元素 margin:0 auto (此方法不需定宽!)

 

margin:0 auto;  通常与text-align:center;一起使用,盒子居中,盒内文本也居中。

 

4、父 text-align: center + 子 inline-block 

使用inline-block布局注意:

①vertical-align属性会影响inline-block元素,要vertical-align:top;

②text-align: center会继承到子元素,如果改变子容器的text-align属性,需要重新设置进行覆盖;

③如果HTML源码中的元素间有空格,那么列于列之间会出现空格。

   

 

5、子 table + margin: 0 auto

display:table; 不设置宽度时,宽度由内容撑开。

   

 


 

二、垂直居中

1、父 relative + 子 absolute + top:50% + transform: translateY(-50%) (最好父元素设置高度,否者父元素高度为0)

   ·

 

2、父 flex + align-items

align-items 属性定义flex子项在flex容器的当前行的Y轴方向上的对齐方式。

align-items:center;  元素位于Y轴容器中心。

  

 


 

三、垂直和水平方向同时居中

1、父 relative + 子 absolute +  top:50% + left:50% + transform: translate(-50%, -50%)  (最好父元素设置高度,否者父元素高度为0)

  

 

2、父 flex + justify-content:center + align-items:center

  

 


 

几种常见的页面布局

 

一、内容居中的列式布局

① 单列布局

最简洁的一种,主流电商网站常用

 

     

 

② 两列布局

多用于技术站点分享,如CSDN

    

 

 

 

 

 

 

 

                                       

 

posted @ 2020-08-06 15:18  oilweng  阅读(340)  评论(0)    收藏  举报