CSS进阶--display简介


display属性

块元素、行内元素、行内块元素

块元素(block)特点:

  • 块元素独占一行,排斥其他元素(包括块元素和行内元素)与其位于同一行。
  • 块元素内部可以容纳其他块元素和行内元素。
  • 可以定义width,也可以定义height。
  • 可以定义4个方向的margin。

行内元素(inline)特点:

  • 行内元素可以与其他行内元素位于同一行。
  • 行内元素内部可以容纳其他行内元素,但不可以容纳块元素。
  • 无法定义height,也无法定义width。
  • 可以定义margin-left和margin-right,无法定义margin-top和margin-bottom。

行内块元素(inline-block)特点:

同时具备了block元素和inline元素的特点。

在HTML5中,最典型的inline-block元素有两个:imginput

display:none

对于display:none,我们需要注意以下两点:

  • display:none元素一般用来配合JavaScript动态隐藏元素,被隐藏的元素不占据原来的位置。
  • display:none不推荐用来隐藏一些对SEO关键的部分,因为对于搜索引擎而言,它不会将display:none隐藏的内容加入权重考虑。

display:none和visibility:none的区别

虽然两种方式都可以隐藏元素,但二者之间有本质的区别:

  • display:none:元素被隐藏后,不占据原来的位置
  • visibility:none:元素被隐藏后,依然占据原来的位置

display:table-cell

display:table-cell可以让元素以表格单元格的形式呈现。换句话说,就是table-cell类型元素具有td元素的特点。

常见用途有以下三种:

  • 图片垂直居中于元素
  • 等高布局
  • 自动平均划分元素

图片垂直居中于元素

我们可以配合使用display:table-cell和vertical-align: middle来实现大小不固定的图片的垂直居中效果。

(图片的水平居中可以使用text-align:center来实现)

/* 父元素 */
      {
          display: table-cell;
          vertical-align: middle;
      }
/* 子元素 */
      {
          vertical-align: middle;
      }

等高布局

我们知道,同一行的单元格td元素高度是相等的,因此,table-cell元素也具备这个特点。根据这个特点,我们可以实现等高布局效果。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title></title>
    <style type="text/css">
        /* 定义父元素具备的特点 */
        #wrapper{
            display: table-row;
        }
        #img-box{
            display: table-cell;
            /* 垂直居中 */
            vertical-align: center;
            /* 水平居中  */
            text-align: center;
            width: 100px;
            height: 100px;
        }
        #text-box{
            display: table-cell;
            width: 200px;
            height: 100px;
        }
    </style>
    <script>

    </script>
</head>

<body>
    <div id="wrapper">
        <div id="img-box">
            <img src="http://www.cxy521.com/static/img/index/image/baidu_favicon.ico" alt="" class="img" />
        </div>
        <div id="text-box">
            <span>baidu</span>
        </div>
    </div>
</body>

</html>

自动平均划分元素

可以为每一个li元素定义display:table-cell,它会自动平均划分元素,并且使得它们在同一行显示

/* 父元素 */
       {
           display: table;
       }
 /* 子元素 */
       {
          display: table-cell;
       }

然后为父元素定义一定的宽度,那么此时子元素的宽度就会根据子元素的个数自动平均划分。

inline-block元素间距

inline-block元素之间有一定的间距。在实际开发中,这种间距有时会对我们的布局产生影响。大多数时候我们需要去除inline-block元素的间距。

在CSS中,我们可以为父元素定义一个"font-size:0;"来去除inline-block元素的间距。

/* 父元素 */
       {
          font-size:0;
       }

注意:因为父元素使用了font-size:0,所以子元素如果有文字需要定义自身的font-size,不然会因为继承而看不到文字。


文章作者: QT-7274
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 QT-7274 !
评论
  目录