css居中方式大全

前言:

以下布局方案所指的父元素都是块级元素、子元素不固定情况下对子元素进行居中的方式,可以对照表格中的见指定的下方代码进行使用,结尾附代码,直接可以运行,如有错误,不吝赐教:

元素/居中方式子元素主动居中父元素控制子元素居中
水平居中行内:【见1】;块级:【见2】行内:【见3】;块级:【见4】
垂直居中行内:【见5】;块级:【见6】行内:【见7】;块级:【见8】
  • 1
    • 转换为块级元素:display:inline-block/block
    • 通过父元素控制行内元素的居中:【见3】
  • 2
    • 定宽:position:relative; left:50%; margin-left:[width/2]
    • margin: 0 auto;
    • 定宽:position:absolute; left 50%; translateX:50%;
  • 3
    • text-aligin:center
    • Flex 布局
  • 4
    • Flex布局
  • 5
    • 转换为块级元素
    • 通过父元素控制行内元素居中:【见7】
  • 6
    • 定宽定高 position:absolute; translateY:50%
    • 定高:position:relative; top:50%; margin-top:[height/2];
  • 7
    • 定高: height = line-height
    • 转换为表格元素:display:table-cell; vertical-align:middle;
    • 使用精灵元素:display:inline-block; content:''; height:100%; vertical-align:middle
    • Flex布局
  • 8
    • Flex布局
Flex布局居中方案
display: flex/inline-flex;
flex-direction: row;
justify-content: center;
align-items: center;
方案总结

每种居中都有自己的优缺点,在使用时,可以根据CSS属性兼容性、代码可行性、页面分辨率进行选择;个人推荐Flex布局来进行居中。

demo代码附录
HTML:
  <!-- 子元素主动居中 -->
    <!-- 行内 -->
  <div class="parent">
    <span class="child inline-center-child">子元素-行内</span>
  </div>
    <!-- 块级 -->
  <div class="parent">
    <div class="child block-center-child">子元素-块级</div>
  </div>
  <!-- 父元素主动居中 -->
    <!-- 行内 -->
  <div class="parent inline-center-parent">
    <span class="child">父元素-行内</span>
  </div>
    <!-- 块级 -->
  <div class="parent block-center-parent">
    <div class="child">父元素-块级</div>
  </div>

CSS样式初始化
  *{
    margin: 0;
    padding: 0;
  }
  /*元素初始化*/
  .parent{
    display: inline-block;
    background: #eeb8c3;
    width: 200px;
    height: 200px;
    margin-right: 10px; 
  }
  .child{
    background: #ee4866;
    width: 70px;
    height: 70px;
  }

CSS居中核心代码:
  /*居中代码*/

  .inline-center-child{
  }


  .block-center-child{
    /* case1 */
    margin: 0 auto;
    
    /* case2 */
    position: relative;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);

    /* case3 */
    position: relative;
    top: 50%;
    margin-top: -50px;
  }

  .inline-center-parent{
    /* case1 */
    text-align: center;

    /* case2 */
    display: table-cell;
    vertical-align: middle;

    /* case3 */
    line-height: 200px;
  }
  /* case4 */
  .inline-center-parent::before{
    display: inline-block;
    content: '';
    height: 100%;
    vertical-align: middle;
  }
  .block-center-parent{
  }
  /* 万能-flex布局 */
  .parent{
    display: inline-flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
  }

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值