css上下左右居中

未脱离文档流定位的元素(position:static || relative)
脱离文档流 定位的元素(position: absolute || fixed)
宽高100%,auto或者不设置继承最近父级
在使用height: 100%;时需要注意的一些事项

1.div单独设置height: 100%;不起作用,须设置

html,body{
  height:100%;
  width: 100%;
  overflow: hidden;
}
*{
  margin: 0;
  padding: 0;
}
ul,li{
  list-style: none;
}

例子如下:

<html style="height: 100%;">
  <body style="height: 100%;">
    <div style="height: 100%;">
      <p>
        这样这个div的高度就会100%了
      </p>
    </div>
  </body>
</html>

2.margin 和 padding 会让你的页面出现滚动条,为避免这种情况在页面开始阶段设置

{ margin:0;
  padding:0;
  height:100%;}

3.如果你的元素实际高度大于你设定的百分比高度,那元素的高度会自动扩展。

垂直居中
  1. line-height=父heiht
  2. vertical-align对一些特定显示样式(例如单元格显示方式:table-cell)的元素才会起作用。所以要实现垂直居中对齐,可以采用如下样式
display:table-cell;      /*按照单元格的样式显示元素*/
vertical-align:middle;   /*垂直居中对齐*/

这种设置方式相比设置line-height,可以兼容文字有多行的情形。

左右居中
  1. text-align:center;针对内联元素左右居中
  2. 对于块状元素设置inline-block,text-align:center;才会起作用。或者使用margin:0 auto;
  3. margin: 0 auto水平居中无效的解决方法
  • 首先需要居中的元素必须设置宽度(display: block;)
  • 设置需要居中的元素宽度
<div class="box">
      <img src="" alt="" class="center">
</div>

.box{
  width: 400px;
}
.center{
  display: block;  // 块级元素可以不加
  width: 100px;   // 必须要有
  margin: 0 auto;
}

上下左右居中三种情景

情景一:一个浏览器页面中,只有一个div模块,让其上下左右居中
解决方案:  {  position:fixed;
         left:0;
        right:0;
        top:0;
        bottom:0;
       }

备注:此处使用position:fixed为最佳方案,因为position:fixed定位是相对于整个浏览器页面的。

情景二:一个父元素div,一个已知宽度、高度的子元素div(200*300)
    解决方案: 1、position布局
             {
              position:absolute/fixed;
              top:50%;
              left:50%;
              margin-left:-100px;
              margin-top:-150px;
              }

情景三:一个父元素div,一个未知宽度、高度的子元素div
  解决方案: 1、position布局,position设为absolute,其他同情景一
        2、display:table
              父级元素:{ display:table;}
              子级元素: { display:table-cell;vertical-align:middle }
        3、flex布局
                      父级元素:{
                        display:flex;
                        flex-direction:row; /* 子元素横向排列 */
                        justify-content:center;/* 相对父元素水平居中 */
                        align-items:center;/*  子元素相对父元素垂直居中 */
                              }
                      子级元素不设置
        4、translate
             子级元素:{
                          position: absolute;
                          top:50%;
                          left: 50%;
                          -webkit-transform: translate(-50%, -50%);
                          -moz-transform: translate(-50%, -50%);
                          -ms-transform: translate(-50%, -50%);
                          -o-transform: translate(-50%, -50%);
                          transform: translate(-50%, -50%);
                      }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值