Bootstrap

盒子居中 方法

一、要求子元素固定宽高

   1.  absolute+负margin

    <!-- 绝对定位的百分比是相对于父元素的宽高,通过这个特性可以让子元素居中显示,

    但绝对定位是基于子元素的左上角,期望的效果是子元素的中心居中显示。

    为了修正这个问题,可以借助外边距的负值,负的外边距可以让元素向相反方向定位,

    通过指定子元素的外边距为子元素宽度一半的负值,就可以让子元素居中了 -->

2. absolute + margin auto 

    <!-- 这种方式通过设置各个方向的距离都是 0,此时再讲 margin 设为 auto,就可以在各个方向上居中了 -->

3. absolute + calc 

    <!-- calc() 函数用于动态计算长度值,运算符前后都需要保留一个空格,例如:width: calc(100% - 10px) -->

    <!-- top 的百分比是基于元素的左上角,那么在减去宽度的一半就好了 -->

    <!-- 依赖 calc 的兼容性,css3新加属性,兼容性不好 -->

4. lineheight

    把 box 设置为行内元素,通过 text-align 就可以做到水平居中,

    vertical-align 也可以在垂直方向做到居中,子元素中将文字显示重置为想要的效果 -->

    <!-- vertical-align 属性设置元素的垂直对齐方式 , middle把此元素放置在父元素的中部。-->

二、不需要子元素固定宽高

    absolute + transform

    css3 新增的 transform,transform 的 translate 属性也可以设置百分比,其是相对于自身的宽和高 -->

    <!-- transform 属性向元素应用 2D 或 3D 转换,translate(x,y)    定义 2D 转换。 -->

三、

    <!-- writing-mode

    writing-mode 属性定义了文本在水平或垂直方向上如何排布

    vertical-lr:垂直方向内内容从上到下,水平方向从左到右

    horizontal-tb:水平方向自上而下的书写方式 -->

 <!-- table -->

    <!-- tabel 单元格中的内容天然就是垂直居中的,只要添加一个水平居中属性就好了 -->

    <!-- 让行内元素水平居中显示,我们需要为其父级元素设置text-align:center,一般这个属性是用于将文字水平居中的,

    我们的行内元素就相当于一行之内的文字了,所以可以使用这个方法 -->

<!-- css-table

    css 新增的 table 属性,可以让我们把普通元素,变为 table 元素的现实效果,

    通过这个特性也可以实现水平垂直居中 -->

    <!-- vertical-align 属性设置元素的垂直对齐方式 , middle把此元素放置在父元素的中部。-->

 justify-content 属性定义flex子项在flex容器的当前行的主轴(横轴)方向上的对齐方式

    align-items 属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式 -->

 <!-- grid

    它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,兼容性不太好

    align-self 属性定义flex子项单独在侧轴(纵轴)方向上的对齐方式

    justify-self 属性定义flex子项单独在主轴(横轴)方向上的对齐方式 -->

;