美文网首页
CSS几种居中方式

CSS几种居中方式

作者: 魏少锋 | 来源:发表于2018-02-02 22:39 被阅读0次
  • 使用<table><tr><td>标签

HTML代码

<table class="parent">
<tr><td class="child">
table居中的方法
</td></tr>
</table>

CSS代码

.parent{
  border: 1px solid red;
  height: 600px;
}
.child{
  border: 1px solid green;
}

父元素的高度确定,子元素无高度且内容依据父元素垂直居中。

  • 使用100% 高度的span. befor和span.afrer 加上display:inline-block

HTML代码

<div class="parent">
    <span class=before></span>
         <div class="child"></div>
    <span class=after></span>
</div>

CSS代码

.parent{
  height: 600px;
  text-align: center;                       /*水平居中*/
}

.child{
  display: inline-block;
  width: 300px;                            /*宽度可设置*/
  vertical-align: middle;                /*垂直居中*/
}

.parent .before{
  display: inline-block;
  height: 100%;
  vertical-align: middle;
}
.parent .after{
  display: inline-block;
  height: 100%;
  vertical-align: middle;
}
  • 使用div替代table

HTML代码

<div class="parent">
      <div class="td">
        <div class="child">
          
        </div>
    </div>
  </div>

CSS代码

div.parent{
  display: table;
  height: 600px;                                        /*父元素高度确定*/
}
div.td{
  display: table-cell;
  vertical-align: middle;                            /*实现垂直居中*/
}
div.child{
}
  • margin-top:50%

HTML代码

<div class="parent">
    <div class="child">
   
    </div>
  </div>

CSS代码

.parent{
  height: 600px;                    /*父元素高度确定,子元素依据此高度居中*/
  position: relative;
}
.child {                            /*垂直和水平居中*/
    width: 600px; height: 400px;
    position: absolute;
    left: 50%; top: 50%;
    margin-top: -200px;             /* 高度的一半 */
    margin-left: -300px;            /* 宽度的一半 */
}

这种方法有一个很明显的不足,就是需要提前知道元素的尺寸。否则margin负值的调整无法精确。此时,往往要借助JS获得。

  • 使用transform:translate(-50%, -50%)

HTML代码

<div class="parent">
      <div class="td">
        <div class="child">
          
        </div>
    </div>
  </div>

CSS代码

.parent{
  display: table;
  height: 600px;                          /*父元素高度确定*/
}

.child{
    width: 600px; height: 400px;
    position: absolute; 
    left: 50%; top: 50%;
    transform: translate(-50%, -50%);    /* 水平 垂直  50%为自身尺寸的一半*/
}

使用transform代替margin. transform中translate偏移的百分比值是相对于自身大小的。 问题很明显,兼容性不好。IE9(-ms-), IE10+以及其他现代浏览器才支持。中国盛行的IE8浏览器被忽略是有些不适宜的(手机web开发可忽略)。

  • 使用margin:auto

HTML代码

  <div class="parent">
    <div class="child">
      
    </div>
  </div>

CSS代码

.parent{
  height: 600px;
  position: relative;
}
.child{
  position: absolute;
  width: 300px;
  height: 200px;
  top: 0; bottom: 0; left: 0; right: 0;
  margin: auto;                          /* 有了这个就自动居中了 */
}       

上面代码的width: 300px height: 200px仅是示意,修改为其他尺寸,或者不设置尺寸(需要是图片这种自身包含尺寸的元素),都是居中显示的。
可以用一个小demo来加深印象

HTML代码:

<div id="dialog" class="dialog">
    <input type="button" id="button" class="button" value="点击弹框走起~~" />
</div>

CSS代码:

.dialog {
 width: 600px; height: 400px;
 margin: auto; 
 border: 1px solid #ddd;
 border-radius: 15px; background-color: #fff;
 box-shadow: 0 3px 18px rgba(0,0,0,.5); }

.dialog_absolute {
 position: absolute; 
 left: 0; top: 0; right: 0; bottom: 0; z-index: 1; }

.button { 
 display: block; 
 margin: 170px auto;
 width: 160px; height: 36px; 
 font-size: 14px; }

JS代码:

var eleDialog = document.getElementById("dialog"),
    eleButton = document.getElementById("button");

eleButton.onclick = function() {
    if (eleDialog.className === "dialog") {
        eleDialog.className = "dialog dialog_absolute";
        this.value = "点击弹框降落~~";    
    } else {
        eleDialog.className = "dialog";
        this.value = "点击弹框走起~~";    
    }
};

相关文章

  • CSS常见布局技巧

    1.HTML中css水平居中的几种方式

  • CSS居中小结

    下面是CSS居中的几种方法: 水平居中元素: 通用方法,元素的宽高未知 方式一:CSS3 transform 方式...

  • Css

    1. 介绍一下 CSS 的盒子模型? 2. css 选择器优先级? 3. 垂直居中几种方式? 4. 水平居中几种方...

  • css居中几种方式

    前端经常遇到对div进行水平垂直居中问题,网上也有很多解决方式,但是我们需要根据不同的前提条件和兼容性等来选择合适...

  • CSS布局(不完全)总结

    CSS布局(不完全)总结 实现水平居中布局的几种方式 方法一: 通过以下CSS代码实现水平居中布局 方法二: 通过...

  • CSS居中的几种方式

    本文主要总结几种常见的CSS居中方式,下面我准备分为三个方向来写,分别是水平居中,垂直居中,水平垂直居中。水平居中...

  • css水平、垂直居中的方法

    css居中常用的几种方式 行内元素水平、垂直居中 方案一(不设置居中元素宽高),代码如下:使用display: t...

  • CSS居中各种情况的解决情况

    CSS居中的几种情况 这里参考How to center anything with css 1. 元素水平居中 ...

  • CSS垂直居中,你会多少种写法?

    CSS控制居中是前端开发中非常常用的布局技能,本文列出几种CSS控制元素居中的几种方法。  谈及HTML元素居中展...

  • CSS居中的几种方式

    1.水平居中的 margin:0 auto; 2.水平居中 text-align:center; 3.水平垂直居中...

网友评论

      本文标题:CSS几种居中方式

      本文链接:https://www.haomeiwen.com/subject/msoezxtx.html