布局(一)display:table-cell

html:

      <div class="box1">一行文字</div>
      <div class="box2">多行文字......</div>
      <div class="box3"></div>

css:

div{
      height:200px;
      width:200px;
      border:1px solid red;
}

1)单行文字垂直居中

.box1{
      line-height:200px;
}

2)多行文字居中

.box2{
      display:table-cell;
      vertical:middle;
}

3)容器居中

  • 1
.box3{
      position:absolute;
      top:50%;
      left:50%;
      margin-top:-101px;
      margin-left:-101px;
}
  • 2
.box3{
      margin:0 auto;
}

下面简述一下display:table-cell的用法;

设置了display:table-cell的元素:

  • 对宽度高度敏感
  • 对margin值无反应
  • 响应padding属性
  • 内容溢出时会自动撑开父元素

display:table-cell的几种用法

1.大小不固定元素的垂直居中
分析:
父元素设置display:table-cell;子元素设置:vertical-align:middle;

html:
<div class="box">
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
</div>
css:
.box{display:table-cell;height:300px;}
.box div{display:inline-block;width:50px;vertical-align:middle;}
.box1{ height:100px; background:red;}
.box2{ height:180px; background:green;}
.box3{ height:120px; background:blue;}

2.两列自适应布局
分析:
将父元素这是dispaly:table;子元素一设置完毕后;子元素二的宽度设置最大(尽可能宽),浏览器会自动适应浏览器宽度。

html:
<div class="box">
    <div class="box1"></div>
    <div class="box2"></div>
</div>
css:
.box{display:table;height:100px;}
.box1{display:inline-block;(或者float:left;)height:100%;width:100px; background:red;}
.box2{ display:table-cell;width:20000px; background:green;}

3.等高布局
分析:
单行和多行登高:父元素这是display:table;子元素设置:display:table-cell;vertical-align:middle;

html:
<div class="box">
        <div class="box1">我和右边等高</div>
        <div class="box2">table表格中的单元格最大的特点之一就是同一行列表元素都等高。所以,很多时候,我们需要等高布局的时候,就可以借助display:table-cell属性。说到table-cell的布局,不得不说一下“匿名表格元素创建规则”</div>
</div>
css:
.box{display:table;height:100px;}
.box div{display:table-cell;vertical-align: middle}
.box1{width:100px;}
.box2{width:300px;}

4.和inline-block组合使用
分析:
父元素这是display:table;子元素这是display:table-cell;text-align:left;子元素中的子元素设置display:inline-block;会设置该子元素的对齐方式

html:
<div class="content">
    <div class="left box">
        <div class="text">A2222</div>
        <div class="text">B3333</div>
    </div>
    <div class="right box">
        <div class="text">B3333</div>
        <div class="text">A2222</div>
    </div
</div>
css:
.content {display: table;width: 1000px;border: 2px solid yellow;}
.box{display: table-cell;}
.left { text-align: left;border: 1px solid red;}
.right {text-align: right;border: 1px solid green;}
.text { display: inline-block;height: 100px;border: 1px solid blue;}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,144评论 1 92
  • (注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!)(注2:更多内容请查看我的目录。) ...
    love丁酥酥阅读 4,526评论 2 5
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 4,951评论 0 0
  • 前言 温馨提示:本文较长,图片较多,本来是想写一篇 CSS 布局方式的,但是奈何 CSS 布局方式种类太多并且实现...
    sunshine小小倩阅读 3,266评论 0 59
  • 我该如何运用好统计表了?我觉得这个很重要。
    我心我愿秀阅读 211评论 0 3

友情链接更多精彩内容