css盒子水平居中方法

方法一(定位):

1、父元素position:relative

2、子元素position:absolute ,元素设置上下左右都为零值,margin设为auto

div{ 
    width: 100px;    
    height: 100px;    
    background-color: rgb(187, 111, 111);           
    position: relative;}

p{
    width:50px;
    height:50px; 
    background-color:#fff;
    position:absolute;
    left:0;
    right:0;
    top:0;
    bottom:0; 
    margin:auto
}

方法二(定位):

1、父元素position:relative

2、子元素position:absolute ,left:50%;top:50%;margin-left:-25px;margin-top:-25px;
 

 div{        
    width: 100px;  
    height: 100px;  
    background-color: rgb(187, 111, 111);        
    position: relative;        
}        

p{ 
    width: 50px;  
    height: 50px; 
    background-color: #fff;            
    position:absolute;             
    top:50%;            
    left: 50%;            
    margin-left: -25px;            
    margin-top: -25px;        
}

方法三(定位+平移(常用))

1、父元素position:relative

2、子元素position:absolute ,left:50%;top:50%;transform:translate(-50%,-50%)
 

 div{        
    width: 100px;
    height: 100px; 
    background-color: rgb(187, 111, 111);       
    position: relative;       
 }        

p{ 
    width: 50px;
    height: 50px; 
    background-color: #fff;            
    position:absolute;             
    top:50%;            
    left: 50%;            
    transform:translate(-50%,-50%)   /* translate(水平平移,垂直平移) -50%代表自身大小的一半*/        }

方法四(vertical-align):

补充知识:

vertical-align 属性设置一个元素的垂直对齐方式。

该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长                         度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单                         元格框中的单元格内容的对齐方式。 

 所在行的基线的垂直对齐  

结构:

<div class="box">        

    <p class="small"></p> 
    <span>aaa</span>   /* 注意:保险期间 在子元素后面加span空标签 */
               
</div>

1.子元素:转为行内块元素 、在子元素后面加span标签(防止文件压缩后空格没有(空格也算文本))

    再设置vertical-align:middle;(目的不以基线对齐 ,将元素以中部对齐)

        注意:保险期间 在子元素后面加span空标签;

2.父元素:设置line-height  

代码演示:

div{
            width: 200px;
            height: 200px;
            background-color: rgb(187, 111, 111);
            line-height: 200px;    /* 父元素设置行高 垂直居中 */
            text-align: center;       /* 文本水平居中 */
            margin: 200px auto;
        }

p{

            display: inline-block; /* 设置为行内块 vertical-align起作用*/
            width: 50px;
            height: 50px;
            background-color: rgb(63, 41, 182);
            vertical-align: middle;    /* 规定子元素 在父元素中处于中间 */ 


}

效果:

子元素没有设置vertical-align:middle时  以基线对齐:

子元素设置vertical-align:middle后  子元素在父元素正中部 :

方法五(弹性盒子(移动端常用))

补充知识:弹性盒 flex
       

弹性盒子没有真正意义上的x轴/y轴      (默认x轴为主轴方向)

设置父元素上

flex-direction:改主轴方向

row 默认为水平向右

column 垂直向下

row-reverse 水平向左

column-reverse垂直向上

flex-wrap 换行

nowrap默认不换行 、wrap换

justify-content 主轴对齐方式

flex-start 默认在主轴方向起点位置对齐

flex-end 在主轴方向终点位置对齐

center 中间

space-between 将空白区域平分在子项目之间

space-around 将空白区域环绕在子项目两边

align-items 当行交叉轴对齐方式

stretch 默认拉伸 (盒子高度不写 默认拉伸至父元素大小)

flex-start 子项目在其所在行的起始位置摆放

flex-end 子项目在其所在行的结束位置摆放

center 中间

align-content:多行交叉轴对齐方式

flex-start 默认在所在行起点位置对齐

flex-end 在所在行终点位置对齐

center 中间

       

space-between 将空白区域平分在子项目之间

      

space-around 将空白区域环绕在子项目两边

    

设置在子项目上

align-self交叉轴齐方式

stretch 默认拉伸

           

flex-start 子项目在其所在行的起始位置摆放

           

flex-end 子项目在其所在行的结束位置摆放

order :num num越大排序越后

写了order的,属性值越小的在越前面;

         

没写order的属性值默认为零,order可以写负值。

flex:number在父元素主轴方向的比份

数字

flex-shrink: 0/1;子元素压缩

0---不压缩;

1---压缩;

        代码:

 div{
            display: flex;
            width: 200px;
            height: 200px;
            background-color: rgb(187, 111, 111);
            margin: 200px auto;
            justify-content: center; /* 默认水平方向为主轴  主轴方向中间对齐*/
            align-items: center;    
        }
        p{

            width: 50px;
            height: 50px;
            background-color: rgb(196, 194, 207);
            

        }

 效果:

方法六(网格布局)grid

代码:

div{
            display: grid;
            width: 100px;
            height: 100px;
            background-color: rgb(187, 111, 111);
            margin: 200px auto;
            grid-template-columns: 1fr 1fr 1fr; 
            grid-template-rows: 1fr 1fr 1fr; 
            /* 给网格中每个单元格命名 */
            grid-template-areas:"a b c"
                        "e f g"
                        "i o p" ; 

        }
        p{
            grid-area: f;  /*将该元素注入中间的单元格中*/
            width: 50px;
            height: 50px;
            background-color: rgb(196, 194, 207);
         }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用如下的CSS代码实现垂直水平居中: ``` .container { display: flex; justify-content: center; align-items: center; } ``` 其中,`.container`是包含需要居中的元素的容器。使用`display: flex`属性可以使容器变为弹性盒子,`justify-content: center`和`align-items: center`可以分别将元素水平和垂直居中。 ### 回答2: 在CSS中,有多种方法可以实现元素的垂直和水平居中。以下是几种常用的方法: 1. 使用Flexbox布局:在父元素上应用以下样式可以实现垂直和水平居中: ``` display: flex; justify-content: center; align-items: center; ``` 这样可以使子元素在垂直和水平方向上居中。 2. 使用绝对定位:如果元素的宽高是已知的,可以使用绝对定位来实现居中。父元素需要设置相对定位,并在子元素上应用以下样式: ``` position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); ``` 通过将子元素的左上角移动到父元素的中心来实现垂直和水平居中。 3. 使用表格布局:将父元素的display属性设置为table,子元素的display属性设置为table-cell,然后应用以下样式可以实现居中: ``` display: table; margin: 0 auto; ``` 将子元素的左右边距设置为auto可以使其在水平方向上居中。 以上是几种常用的CSS垂直和水平居中方法,具体使用哪种方法取决于具体的需求和布局。 ### 回答3: 在CSS中,可以使用以下方法实现元素的垂直水平居中: 1. 使用Flexbox布局:设置父容器的display属性为flex,并且使用align-items和justify-content属性分别设置为center,可以实现元素的垂直水平居中。 ```css .container { display: flex; align-items: center; justify-content: center; } ``` 2. 使用绝对定位和transform属性:将需要居中的元素的position属性设置为absolute,然后使用top、bottom、left和right属性设置为50%,并使用transform属性进行偏移。 ```css .box { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } ``` 3. 使用表格布局:将需要居中的元素放置在一个display属性设置为table的容器中,然后使用margin属性设置为auto实现水平居中,使用vertical-align属性设置为middle实现垂直居中。 ```css .container { display: table; margin: 0 auto; } .box { display: table-cell; vertical-align: middle; } ``` 4. 使用Grid布局:设置父容器的display属性为grid,然后使用place-items属性设置为center,可以实现元素的垂直水平居中。 ```css .container { display: grid; place-items: center; } ``` 以上是几种常用的CSS垂直水平居中方法,可以根据具体的需求选择合适的方法来实现布局。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值