【知识点】display的N种写法(一)

一、display简介

display 属性规定元素应该生成的框的类型。
从大的分类来讲,display的32种写法可以分为6个大类,再加上1个全局类,一共是7大类:外部值 内部值 列表值 属性值 显示值 混合值 全局值

二、外部值类型的display
1) display: block;
  • 设置此值得元素将显示为块级元素,此元素前后会带有换行符。
  • 我们最熟悉的<div>,最基本的块级元素,除<div>之外,还有<h1>到<h6>,<p>,<form>,<header>,<footer>,<section>,<article>等天生都拥有这个值。
  • 当控制使用display:none;隐藏的元素也可以使用此属性让其显示
2) display: inline;
  • 设置此值得元素将显示为内联元素,此元素前后没有换行符。
  • 最典型的是<span>,还有<a>,<img>都拥有此。
3) display: run-in;
  • 此元素会根据上下文作为块级元素或内联元素显示。
  • 支持性很差!!!谷歌火狐都不支持!!!不用!!!!
三、内部值类型的display
1) display: flow-root;
  • 简单的讲他是最新一种BFC,也是最新的浮除浮动的方案。虽然目前仅几个最新浏览器(谷歌火狐)支持,但完全可以通过@supports()属性做完美降级处理
    兼容性
  • 元素容器会生成一个块盒子,并且块盒子里的内容是使用流布局。它总是为它建立一个新的块格式化上下文内容。如果你对CSS中浮动有所了解之后,你不难发现,容器里的元素浮动之后,会造成容器的坍塌现象之类的


    浮动后父级坍塌

使用对父级设置display:flow-root解决塌陷

<!DOCTYPE html>
<html lang="ch">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style>
     .outer{
         display: flow-root;
         background-color: green;
     }
     .inner{
         float: left;
         width: 100px;
         height: 100px;
         background-color: red;
     }
 </style>
</head>
<body>
 <div class="outer">
     我是外部的div
     <div class="inner">
     </div>
 </div>
</body>
</html>
2) display: table;
  • 此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符
  • display:table解决了一部分需要使用表格特性但又不需要表格语义的情况,比如:

父元素宽度固定,想让若干个子元素平分宽度

<!DOCTYPE html>
<html lang="ch">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style>
     .outer{
         display: table;
         border: 1px solid #000;
         width: 600px;
     }
     .inner{
         display: table-cell;//元素当做td或th
         width: 100px;
         height: 100px;
     }
     .inner:nth-child(2n){
         background-color: red;
     }
     .inner:nth-child(2n+1){
         background-color: green;
     }
 </style>
</head>
<body>
 <div class="outer">
     <div class="inner"></div>
     <div class="inner"></div>
     <div class="inner"></div>
     <div class="inner"></div>
     <div class="inner"></div>
 </div>
</body>
</html>
display:table;

注意:虽然display:table解决了避免使用表格的问题,但有几个需要注意的:
(1)display: table时padding会失效
(2)display: table-row时margin、padding同时失效
(3)display: table-cell时margin会失效

3)display: flex;
  • Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
    这个玩意儿可大了。可以直接去搜索看弹性布局的内容。
4)display: grid;
  • 就像flex的升级版,布局上十分强大。
  • grid布局即网格布局,每个网格都有起止线,每两条线之间都有设定好的距离。
    这个玩意儿也可大了。可以直接去搜索看网格布局的内容。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,815评论 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,801评论 1 45
  • (注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!)(注2:更多内容请查看我的目录。) ...
    love丁酥酥阅读 4,287评论 2 5
  • display的32种写法--摘抄 你知道『回』字有四种写法,但你知道display有32种写法吗?今天我们一一道...
    yichen_china阅读 860评论 0 3
  • 感恩浩早起帮我做早餐! 感恩今天打车很顺利到了单位! 感恩运送敷料的人对我的帮助,感恩闫阿姨怕我着凉给我羽绒服穿!...
    杨小静3710阅读 201评论 0 0