CSS 之 display属性详解

news2024/11/17 23:55:50

一、总览

​ CSS的 display 属性用于设置元素的显示类型,或设置其子元素的布局类型。 display属性值的适用性取决于元素的类型和上下文。某些属性值只适用于特定类型的元素,使用时需注意兼容性和语义化。

​ 其属性值共计有18种,按照类别可以分为以下六类:

  • 外部表现类(display-outside):blockinline
  • 内部表现类(display-inside):flexgridtableflowflow-rootruby
  • 列表元素类(display-listitem):list-item
  • 内部结构类(display-internal):table-rowtable-celltable-columntable-captiontable-row-grouptable-header-grouptable-footer-grouptable-column-groupruby-baseruby-textruby-base-containerruby-text-container
  • 元素显示类(display-box):nonecontents
  • 预组合类(display-legacy):inline-blockinline-tableinline-flexinline-grid

二、外部表现类

​ 该类属性值的效果是规定元素的外部显示类型,也就是在页面布局中的元素类型:块级元素或内联元素。

1、block

​ 该属性值用于设置元素的外显类型为块级元素,在页面布局中,占据一整行的空间,在元素前后进行换行。该类型的元素可以设置widthheightpaddingmargin等属性。

<style>
.d {
  display: block;
  width: 200px;
  height: 100px;
  background: pink;
}
</style>

<p>这是一段文本</p>
<div class="d">这是一个块级元素</div>
<p>这是第二段文本</p>
页面表现:

在这里插入图片描述

2、inline

​ 该属性值用于设置元素的外显类型为行内元素,在页面布局中,可与其他行内元素位于同一行。该类型的元素设置widthheight,以及竖直方向的margin(top、bottom)属性无效,设置水平方向的paddingmargin(left、right)是有效的,设置竖直方向的padding(top、bottom)时,在元素空间上是有效的,但这并不会影响与同一行的行内元素的对齐。

<style>
.d1 {
  display: inline;
  width: 200px;
  height: 100px;
  margin: 10px 20px;
  padding: 20px 10px;
  background: pink;
}
</style>

<p>这是一段块级元素文本</p>
<span>这是一段行内元素文本</span>
<div class="d1">这是一个行内元素</div>
<span>这是第二段行内元素文本</span>
页面表现:

在这里插入图片描述

三、内部表现类

​ 这类属性值的效果是规定元素的内部显示类型,即定义元素内部子元素的布局方式。

1、flex

​ 该属性值用于设置元素的内部显示类型为弹性布局,其外显类型为块级元素。该类型的元素可以通过一系列相关属性控制子元素在标准轴线上的布局方式和占位空间。更多内容可查看:flex布局。

​ 该属性值的主要应用场景为:多个块级元素水平居中对齐等。

<style>
  .d1 {
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ccc;
  }
  .d1>div {
    width: 150px;
    height: 150px;
    margin-right: 10px;
    background: pink;
  }
</style>

<div class="d1">
  <div class="d1-1">第一个块级元素</div>
  <div class="d1-2">第二个块级元素</div>
  <div class="d1-3">第三个块级元素</div>
</div>
页面表现:

在这里插入图片描述

2、grid

​ 该属性值用于设置元素内部的显示类型为网格布局,其外显类型为块级元素。该类型的元素将内部分为行和列,划分成一个个单元格,并通过一系列相关属性控制单元格的布局和大小。更多内容可查看:grid布局。

​ 该属性值的主要应用场景为:多行多列元素水平且垂直对齐。

<style>
.d2 {
  display: grid;
  grid-template-columns: 100px 100px 100px;
  grid-template-rows: 100px 100px 100px; 
  /* 设置行间距和列间距为20px */
  gap: 20px;
}
.d2>div {
  background: pink;
  text-align: center;
}
.d2>div:nth-child(2n){
background: yellow;
}
</style>

<div class="d2">
  <div class="d2-1">1</div>
  <div class="d2-2">2</div>
  <div class="d2-3">3</div>
  <div class="d2-4">4</div>
  <div class="d2-5">5</div>
  <div class="d2-6">6</div>
  <div class="d2-7">7</div>
  <div class="d2-8">8</div>
  <div class="d2-9">9</div>
</div>
页面表现:

在这里插入图片描述

3、table

​ 该属性值用于设置元素为块级元素,且内部的显示类型为表格布局,具体行为类似于HTML中的<table>元素。 可以用于实现复杂的表格结构,以及对表格样式和行为的精确控制。更多内容可查看:table 布局。

demo示例:
<style>
.table {
	display: table;
	background: pink;
  border-collapse: collapse;
}
.row {
	display: table-row;
}
.cell {
	display: table-cell;
	border: 1px solid #cccccc;
}
</style>

<div class="table">
    <div class="row">
      <div class="cell">张三</div>
      <div class="cell">李四</div>
      <div class="cell">王五</div>
    </div>
    <div class="row">
      <div class="cell">张三三</div>
      <div class="cell">李四四</div>
      <div class="cell">王五五</div>
    </div>
    <div class="row">
      <div class="cell">张三三三</div>
      <div class="cell">李四四四</div>
      <div class="cell">王五五五</div>
    </div>
</div>
页面效果:

在这里插入图片描述

4、flow-root

​ 该属性值用于设置元素为块级元素,内部显示类型为建立一个新的块级格式化上下文(BFC),从而具有包含内部浮动、排除外部浮动和阻止外边距塌陷等相关特性。

demo示例:
<style>
.d1 {
  /* 设置该属性 包含子元素的浮动 使其占据普通文档流位置 */
	display: flow-root;
	background: #ccc;
}
.d1-1 {
	float: left;
	width: 30px;
	height: 30px;
	background: red;
}
.d1-2 {
	float: right;
	width: 40px;
	height: 40px;
	background: yellow;
}
</style>

<div class="d1">
	<div class="d1-1">
		1111
	</div>
	<div class="d1-2">
		2222
	</div>
</div>
<div class="d2">
	这是第二个盒子
</div>
页面效果:

在这里插入图片描述

5、flow(实验属性)

​ 该属性值用于设置元素内部的显示类型为流式布局,使元素的布局不再受到块级元素和内联元素的限制,可以根据可用空间自动调整大小和位置,以适应不同的屏幕尺寸和布局要求。

​ 如果该元素的外显类型为inlinerun-in,并且参与了一个块级或内联格式上下文中,那么将生成一个内联盒子;否则将会生成一个块级盒子。

​ 该属性值属性需要配合其他相关的布局属性一起使用,如 flow-orientationflow-fromflow-into 等,以实现更具体的布局效果。

​ 但是该属性值目前处于实验阶段,还未被所有的浏览器完全支持,因此不建议使用。

6、ruby(实验属性)

​ 该属性值用于设置元素内部为ruby 注记(ruby annotation)布局,其行为相当于HTML中的<ruby>元素。Ruby 注记是一种用于展示东亚语言中的发音、注解或翻译的特殊文本布局方式。

​ 使用 display: ruby; 属性可以将基本文本和注音文本进行布局,并确保它们在页面上正确地显示。

​ 但是属性目前处于实验阶段,还未被所有的浏览器完全支持,目前只有Firefox和IE浏览器支持该属性,因此不建议使用。但<ruby>元素几乎被所有浏览器支持,所以更建议使用ruby元素。

​ 还有其他一些与 Ruby 注记相关的属性,如 ruby-position(用于控制注音文本的位置)和 ruby-align(用于控制注音文本的对齐方式)等。

demo示例:
<p style="display: ruby;">
		<span style="display: ruby-base;"></span>
    <span style="display: ruby-text;">かん</span>
		<span style="display: ruby-base;"></span>
    <span style="display: ruby-text;"></span>
</p>
<br><br>
<ruby><rp>(</rp><rt>han</rt><rp>)</rp><rp>(</rp><rt>zi</rt><rp>)</rp>
</ruby>
页面效果:

在这里插入图片描述

四、列表元素类

​ 该类型的属性值用于实现列表元素的部分和样式效果。

1、list-item

​ 该属性值用于设置元素类型为了列表元素,外显类型为块级元素,类似于HTML中<ul>内部的<li>元素。元素在设置该属性值之后,内部会出现一个::marker的伪元素,作为列表的icon标记,我们可以结合list-style相关属性(list-style-positionlist-style-typelist-style-image)对该标记进行操作,这些属性同样也可以操作<ul><ol>等列表元素的icon标记。

list-style-position用于设置icon标记在元素中的位置,属性值有outside(默认)inside

list-style-type用于设置icon标记的样式,常见属性值有disc(默认)squaredecimal等等。

list-style-image用于设置icon标记为一张图片,属性值为url(...)

demo示例:
  <style>
    .div1-1 {
      display: list-item;
      list-style-position: outside;
      /* list-style-type 默认为disc */
      list-style-type: disc;
    }

    .div1-3 {
      display: list-item;
      list-style-position: inside;
      /* 设置列表icon为实心方块 */
      list-style-type: square;
    }

    .div1-4 {
      display: list-item;
      list-style-position: inside;
      list-style-image: url(./images/list-icon.png);
    }
  </style>

  <div class="div1">
    <div class="div1-1">
      这是第一个模拟列表元素的div
    </div>
    <div class="div1-2">
      这是一个正常的div元素
    </div>
    <div class="div1-3">
      这是第二个模拟列表元素的div
    </div>
    <div class="div1-4">
      这是第三个模拟列表元素的div
    </div>
  </div>
页面效果:

在这里插入图片描述

五、内部结构类

​ 该类型的属性值用于设置各种布局内部元素的结构和样式。

1、table-row-group

​ 该属性值用于设置元素为表格的主体内容,类似于HTML的<tbody>。详细内容请查看:table 布局。

2、table-header-group

​ 该属性值用于设置元素为表格的表头行,类似于HTML的<thead>。详细内容请查看:table 布局。

3、table-footer-group

​ 该属性值用于设置元素为表格的表尾行,类似于HTML的<tfoot>。详细内容请查看:table 布局。

4、table-row

​ 该属性值用于设置元素为表格的行,类似于HTML的<tr>。详细内容请查看:table 布局。

5、table-cell

​ 该属性值用于设置元素为表格的单元格,类似于HTML的<td><th>。详细内容请查看:table 布局。

6、table-column-group

​ 该属性值用于设置元素为表格的列组,类似于HTML的<colgroup>。详细内容请查看:table 布局。

7、table-column

​ 该属性值用于设置元素为表格的列,类似于HTML的<col>。详细内容请查看:table 布局。

8、table-caption

​ 该属性值用于设置元素为表格的标题,类似于HTML的<caption>。详细内容请查看:table 布局。

9、ruby-base(实验属性)

​ 该属性值用于设置元素为ruby 布局的基本文本,类似于HTML的<rb>元素。

​ 该属性值目前处于实验阶段,还未被所有的浏览器完全支持,目前只有Firefox和IE浏览器支持该属性,因此不建议使用。

10、ruby-text(实验属性)

​ 该属性值用于设置元素为ruby 布局的注音文本,类似于HTML的<rt>元素。

​ 该属性值目前处于实验阶段,还未被所有的浏览器完全支持,目前只有Firefox和IE浏览器支持该属性,因此不建议使用。

11、ruby-base-container(实验属性)

​ 该属性值目前处于实验阶段,还未被所有的浏览器完全支持,目前只有Firefox和IE浏览器支持该属性,因此不建议使用。

12、ruby-text-container(实验属性)

​ 该属性值类似于HTML的<rtc>元素。

​ 该属性值目前处于实验阶段,还未被所有的浏览器完全支持,目前只有Firefox和IE浏览器支持该属性,因此不建议使用。

六、元素显示类

​ 该类型的属性值用于设置元素及其后代元素在页面上的显示问题。

1、none

​ 该属性值用于设置元素及其后代元素在页面上不显示,并且不占据页面空间,但是元素的dom结构是存在的,只是不显示。Vue中的v-show语法糖就是基于该属性实现的。

​ 如果想让元素占据空间,但是不显示,应该使用visibility或者opacity属性实现。

demo示例:
  <div class="div1" style="display: none;">
    这是第一个div
  </div>
  <div class="div2">
    这是第二个div
  </div>
页面效果:

在这里插入图片描述

2、contents

​ 该属性值用于设置元素本身不显示,但其内部文本、伪元素和后代元素正常显示。但是该属性并不建议使用,不符合大部分浏览器的规范要求。

demo示例:
<div class="div2" style="display: contents;background: yellow;">
    这是第二个div
    <div style="background: #ccc;">
      这是第二个div的子元素
    </div>
</div>
页面效果:

在这里插入图片描述

七、预组合类

​ 该类型的属性值用于设置元素同时具有两种属性值的效果,效果类似于两者的结合。

1、inline-block

​ 该属性值用于设置元素类型为行内块元素,既可以像inline元素与其他行内元素放在同一行,又可以像block元素一样设置宽高、边距等属性。

2、inline-table

​ 该属性值用于设置元素类型为行内表格元素,既可以设置元素内部为表格布局,又可以像inline元素与其他行内元素放在同一行。

​ 除了与其他行内元素放在同一行之外,其余特性与table属性值相同。

3、inline-flex

​ 该属性值用于设置元素类型为行内flex元素,既可以设置元素内部为flex布局,又可以像inline元素与其他行内元素放在同一行。

​ 除了与其他行内元素放在同一行之外,其余特性与flex属性值相同。

4、inline-grid

​ 该属性值用于设置元素类型为行内网格元素,既可以设置元素内部为grid网格布局,又可以像inline元素与其他行内元素放在同一行。

​ 除了与其他行内元素放在同一行之外,其余特性与grid属性值相同。

demo示例:
<style>
    .div1 {
      display: inline-block;
      width: 150px;
      height: 50px;
      background: red;
    }
    .div2 {
      display: inline-table;
      width: 150px;
      height: 50px;
      background: yellow;
    }
    .row {
      display: table-row;
    }
    .cell {
      display: table-cell;
    }
    .div3 {
      display: inline-flex;
      width: 150px;
      height: 50px;
      background: pink;
    }
    .div4 {
      display: inline-grid;
      width: 150px;
      height: 50px;
      background: green;
    }
</style>

  <div>
    <div class="div1">
      这是设置inline-blick的div
    </div>
    <div class="div2">
      <div class="row">
        <div class="cell">这是设置inline-table的div</div>
      </div>
    </div>
    <div class="div3">
      这是设置inline-flex的div
    </div>
    <div class="div4">
      这是设置inline-grid的div
    </div>
  </div>
页面效果:

在这里插入图片描述

八、双值语法

dispaly属性也支持部分双值语法,但目前不常用,效果与预组合类相同,更建议使用预定类。更多内容请查看:display的双值语法。

1、inline flex

​ 等同于 inline-flex

2、inline table

​ 等同于 inline-table

3、inline grid

​ 等同于 inline-grid

其他。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1106222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS7安装Redis集群

本章是基于CentOS7下的Redis集群 1.单机安装Redis2.Redis主从集群2.1.集群结构2.2.准备实例和配置2.3.启动2.4.开启主从关系2.5.测试 3.搭建哨兵集群3.1.集群结构3.2.准备实例和配置3.3.启动3.4.测试 4.搭建分片集群4.1.集群结构4.2.准备实例和配置4.3.启动4.4.创建集群4.5.测试…

听听Dreamforce ‘23中Salesforce高管们对产品、功能的见解!

True to the Core是Dreamforce的传统环节&#xff0c;这是向Salesforce高级管理人员提出问题的问答会议。True to the Core旨在将Trailblazer与产品团队联系起来&#xff0c;做出有关产品发展方向的决策。 Dreamforce 23 的True to the Core没有令人失望&#xff0c;提供了关…

代码覆盖率统计Super-jacoco在公司级容器化项目中的具体应用方案

目录 一、介绍 二、自己在本地搭建Super-jacoco服务 2.1 准备工作 2.2 部署super jacoco服务 1、下载super jacoco 项目 2、初始化数据库 3、配置application.properties 4、编译super jacoco项目 5、部署 super jacoco 服务 2.3 启动被测项目 2.4、代码覆盖率收集 2…

(3) OpenCV图像处理kNN近邻算法-识别摄像头数字

目录 一、代码简介 二、程序代码 三、使用的图片资源 1、图片digits.png

为什么价格监测要精确到款式

品牌在进行线上数据的监测时&#xff0c;首先需要对全网数据进行爬取&#xff0c;爬到的数据再做分析&#xff0c;最后再对有效的SKU数据进行监测&#xff0c;所以数据清洗很重要&#xff0c;采集到的基础数据更重要&#xff0c;只有数据采集全面了&#xff0c;才能进行全面的控…

python——loguru第三方日志管理模块

loguru第三方日志管理模块 loguru介绍日志等级日志保存日志过滤处理异常 loguru介绍 loguru是第三方库&#xff0c;拿来即用&#xff0c;不用太多的配置 安装&#xff1a;pip install loguru 日志等级 from loguru import loggerlogger.debug(这是一条调试消息&#xff01;)…

E054-web安全应用-Brute force暴力破解进阶

课程名称&#xff1a; E054-web安全应用-Brute force暴力破解进阶 课程分类&#xff1a; web安全应用 实验等级: 中级 任务场景: 【任务场景】 小王接到磐石公司的邀请&#xff0c;对该公司旗下的网站进行安全检测&#xff0c;经过一番检查发现该网站可能存在弱口令漏洞…

【Java笔试强训】Day1(100449-组队竞赛 、OR63 删除公共字符)

100449-组队竞赛 链接&#xff1a;组队竞赛 题目&#xff1a; 牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。 例如: 一个队伍三个…

修改ruoyi框架前端刷新页面时紫色的背景颜色

问题描述 最近在使用ruoyi的前后端分离框架&#xff0c;发现前端VUE页面刷新的时候&#xff0c;会出现加载的紫色页面&#xff0c;想要修改这个颜色&#xff0c;请看下面的教程。 修改教程 找到public/index.html&#xff0c;然后找到background为#7171C6这个颜色的代码&…

Redis 主从复制,哨兵,集群——(2)哨兵篇

目录 1. Redis 哨兵是什么&#xff1f; 2. Redis 哨兵有什么用&#xff1f; 2.1 主动监控 2.2 消息通知 2.3 故障转移 2.4 配置中心 3. Redis 哨兵数量配备要求 4. 哨兵配置文件详解 5. quorum 投票数详解 5.1 quorum 的含义 5.2 网络抖动导致主观下线 5.3 quorum …

Spring framework Day21:Spring AOP 注解结合配置类示例

前言 Spring AOP是一种强大的面向切面编程工具&#xff0c;它能够帮助我们更好地处理与核心业务逻辑无关的横切关注点。通过使用注解和配置类的方式&#xff0c;我们可以更加简洁和灵活地实现AOP。 本文将以一个示例来介绍如何结合注解和配置类来使用Spring AOP。通过这个示例…

解决Antd 二次封装表格的可编辑功能(editable table)不生效的问题

问题概述 使用了Antd Table组件&#xff0c;因为需要自定义的筛选功能&#xff0c;进行了二次封装。 之后加上了可编辑行功能&#xff0c;当点击编辑图标&#xff0c;发现表格并不会有任何变化。 代码&#xff1a; <Formcomponent{false}form{docInfoForm} ><CSTab…

正点原子嵌入式linux驱动开发——设备树下LED驱动

经过对设备树的学习以及驱动开发中常用的OF函数介绍&#xff0c;本篇笔记将之前的新字符设备驱动的LED&#xff0c;换成设备树形式。 设备树LED驱动原理 在之前的新字符设备驱动实验中&#xff0c;直接在驱动文件newchrled.c中定义有关寄存器物理地址&#xff0c;然后使用io_…

【前端学习】—Vue生命周期(十七)

【前端学习】—Vue生命周期&#xff08;十七&#xff09; 一、Vue生命周期 二、Vue父子组件生命周期调用顺序 三、Vue中在哪个生命周期内调用异步请求

【SpringCloud微服务项目实战-mall4cloud项目(4)】——mall4cloud-rbac

mall4cloud-rbac角色权限访问控制模块 系统架构与模块介绍系统架构rbac模型介绍 相关代码权限校验接口代码 补充 代码地址 github地址 fork自github原始项目 gitee地址 fork自gitee原始项目 系统架构与模块介绍 系统架构 从图中可以看到&#xff0c;微服务集群中&#xff0c;…

Netty系列教程之NIO基础知识

近30集的孙哥视频课程&#xff0c;看完一集整理一集来的&#xff0c;内容有点多&#xff0c;请大家放心食用~ 1. 网络通讯的演变 1.1 多线程版网络通讯 在传统的开发模式中&#xff0c;客户端发起一个 HTTP 请求的过程就是建立一个 socket 通信的过程&#xff0c;服务端在建立…

直线导轨在喷涂行业中的应用场景

直线导轨因其具有精度高、速度快、刚性强、使用寿命长等特点被广泛应用在各行各种中&#xff0c;其中&#xff0c;在喷涂行业中的应用最为广泛&#xff0c;以下是直线导轨在喷涂行业中的应用场景&#xff1a; 1、平面喷涂&#xff1a;直线导轨可以应用在各种机械加工的平面&…

将Sketch文件转化为PSD文件的简单在线工具!

设计工作不仅需要UI设计工具&#xff0c;还需要Photoshop。常见的UI设计工具Sketch与Photoshop软件不兼容。如果你想在实际工作中完成Sketch转psd&#xff0c;你需要使用其他软件进行转换。但是在转换过程中容易丢失文件&#xff0c;导致同样的工作需要重复多次才能完成&#x…

图论相关算法

一、迪杰斯特拉(Dijkstra)算法 迪杰斯特拉算法使用类似广度优先搜索的方法解决了带权图的单源最短路径问题。这是一个贪心算法。 1.核心思想 &#xff08;1&#xff09;每次选中一个点&#xff0c;这个点满足两个条件&#xff1a; 未被选过距离最短 &#xff08;2&#xf…

Gazebo仿真 【ROS: noetic】

参考链接&#xff1a;《ROS机器人开发实践》_胡春旭 目标&#xff1a; 了解如何使用URDF文件创建一个机器人模型&#xff0c;然后使用xacro文件优化该模型&#xff0c;并且放置到rvizArbotiX或Gazebo仿真环境中&#xff0c;以实现丰富的ROS功能。 4.5 Gazebo仿真环境 1&#x…