大河弯弯:CSS 文档流与三大元素显示模式

news2024/11/7 3:44:06

文章目录

  • 参考
  • 环境
  • 文档流
      • 概念
      • 三大显示模式
  • 内联元素
      • 概念
      • 常见的内联元素
      • 宽高由内容决定
  • 块级元素
      • 概念
      • 常见的块级元素
      • 宽度受容器影响,高度受内容影响
  • 内联块级元素
      • 概念
      • 常见的内联块级元素
      • 折中方案
  • 设置元素的显示模式
      • display 属性
      • 内联元素与块级元素的切换
      • 为什么要通过 display 来修改元素的显示模式?

参考

项目描述
搜索引擎BingGoogle
AI 大模型文心一言通义千问讯飞星火认知大模型ChatGPT
MDNMDN Web Docs
W3School在线教程

环境

项目描述
Chrome118.0.5993.88(正式版本) (64 位)
操作系统Windows 10(专业版)

文档流

概念

文档流是指网页上元素的 默认布局顺序想象你有一本书,这本书中的内容是 从上到下从左到右 顺序阅读的。同样的,HTML文档的元素默认也是从上到下,块级元素会垂直排列,内联元素会水平排列。

在不使用 CSS 的情况下,浏览器会 按照文档流的规则来摆放元素。当我们使用CSS 中的 floatpositionflexboxgrid 等属性时,元素可能会 脱离标准的文档流,形成一个新的布局方式。但为了理解这些高级布局技巧,首先要掌握基本的文档流概念。

三大显示模式

在 CSS 中,显示模式 指的是 HTML 元素在文档流中 如何被渲染和布局的一种特性,不同的显示模式决定了元素如何占据空间以及与其他元素相互交互的方式。CSS 中存在 三种十分常见的显示模式,即块级元素,内联元素,内联块级元素。

内联元素

概念

想象你正在读 一本书,你的目光滑过每一个字母、每一个词,连续不断。内联元素就像这些字词,它们排成一行,直到遇到 边界(页面边缘)才会换行。内联元素之间没有自动的换行,它们的 宽高由内容决定,并不接受我们设置的宽高值。

常见的内联元素

内联元素可以嵌套在块级元素中,或者与其他内联元素一起使用,每个元素都有其特定的语义和样式,可以根据需要自由组合以创建所需的网页内容。

内联元素功能描述
<a>创建超链接,用于导航到其他页面或资源。
<span>常用于对内联元素进行分组(便于通过 CSS 设置样式)或用于放置文本。
<img>用于插入图像。
<br>起换行作用。
<sub>用于标记需要作为下标的文本,通常用于化学式和数学公式。
<sup>用于标记需要作为上标的文本,通常用于指数和脚注。

宽高由内容决定

在 CSS 中,内联元素的宽度和高度通常由其包含的内容决定,这是因为内联元素的主要特点是在文本中水平排列,不会独占一行,并且 只占据其包含的内容所需的空间。这种自动适应内容的行为使内联元素在 包围文本等内容 时非常灵活。元素会随着内容的变化而自动调整大小而 不需要手动指定固定的宽度和高度,这 在处理不同长度的文本或可变内容时非常有用

举个栗子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>宽高由内容决定</title>
</head>
<body>

    <!-- 
        由于使用内联元素包裹文本,
        故多个内联元素将显示在一行中,
        仅在当前行已满才发生换行。
    -->
    <a href="https://baike.baidu.com/item/%E4%B9%9F%E6%98%AF%E5%BE%AE%E4%BA%91/3056682">《也是微云》</a>
    <span>也是微云,</span>
    <span>也是微云过后月光明。</span>
    <span>只不见去年得游伴,</span>
    <span>也没有当日的心情。</span>
    <!-- 
        尝试通过行内元素设置元素的宽高,
        由于行内元素无法设置宽高,故 style 属性中的
        与宽高相关的 CSS 样式将不会生效
     -->
    <span style="width: 100px;height: 100px;background-color: dodgerblue;">不愿勾起相思,</span>
    <span>不敢出门看月。</span>
    <span>偏偏月进窗来,</span>
    <span>害我相思一夜。</span>
    
</body>
</html>

执行效果

在浏览器中访问上述 HTML 文档,将得到如下类似内容:

块级元素

概念

想象一个 书柜,每一个格子代表一个块级元素。每一个格子独立占据空间,从左到右,从上到下。块级元素通 常用于构建页面的主体结构,它们会 自动填满(当然你也可以显示设置此类元素的宽度)它们所在的 容器宽度(父元素宽度),而 高度则由内容或设定的样式所决定

常见的块级元素

块级元素功能
<div>常用于元素的分组(便于布局控制及样式设置)。
<p>用于文本段落。
<h1~6>用于创建标题,数字越小,级别越高。
<section>表示文档中的一个区域或部分,有语义化的作用。
<article>表示文档中的独立内容,通常是文章或新闻等。
<header>用于定义文档或区域的页眉,通常包含标题和导航。
<footer>用于定义文档或区域的页脚,通常包含版权信息等。
<nav>用于包含导航链接,通常位于页眉或页脚中。
<aside>用于定义侧边栏内容,通常与主要内容分开显示。

宽度受容器影响,高度受内容影响

块级元素通常会 自动扩展以填充其容器的可用宽度。如果你 不显式地设置块级元素的宽度,它将占据其容器的全部可用宽度。这意味着块级元素的宽度受到其父容器的宽度限制。如果你将块级元素放入一个较窄的容器,它的宽度将 收缩以适应容器,而如果放入一个更宽的容器,它的宽度将 扩展以填满容器
块级元素的高度 通常由其内部内容的高度决定。这意味着块级元素的高度将根据其包含的文本、其他元素、内边距和边框等内容的高度来 自动调整。如果没有显式设置高度,块级元素的高度将根据内容动态调整

举个栗子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>宽度受容器影响,高度受内容影响</title>
</head>
<body>

    <!-- 位于最外侧的容器 -->
    <div id="container" style="width: 120px;">
        <!-- 包裹实际内容的 div 标签 -->
        <div>
            <div>
                <a href="https://baike.baidu.com/item/%E4%B9%9F%E6%98%AF%E5%BE%AE%E4%BA%91/3056682">《也是微云》</a>
            </div>
            也是微云,
            也是微云过后月光明。
            只不见去年得游伴,
            也没有当日的心情。
            不愿勾起相思,
            不敢出门看月。
            偏偏月进窗来,
            害我相思一夜。
        </div>
    </div>

</body>
</html>

执行效果

内联块级元素

概念

内联块级元素 既有块级元素的特点,允许你设置宽和高;同时也 有内联元素的特性,它们并排显示,并在必要时换行。因此,内联块级元素为我们提供了一种灵活的布局方式,兼具块级和内联元素的优点

常见的内联块级元素

元素功能描述
<img>用于在网页中嵌入图片
<button>创建一个点击按钮

折中方案

内联块级元素是内联元素与块级元素之间的一种 折中方案,该元素既允许同内联元素一般 并排显示,在必要时换行,还允许为这些元素 设置样式以规定其宽高

举个栗子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>这种方案--内联块级元素</title>
</head>
<body>

    <!-- 并排显示 -->
    <button>H</button>
    <button>e</button>
    <button>l</button>
    <button>l</button>
    <button>o</button>
    <button> </button>
    <button>W</button>
    <button>o</button>
    <button>r</button>
    <button>l</button>
    <button>d</button>

    <!-- 必要时换行 -->
    <div style="width: 120px;">
        <button>H</button>
        <button>e</button>
        <button>l</button>
        <button>l</button>
        <button>o</button>
        <button> </button>
        <button>W</button>
        <button>o</button>
        <button>r</button>
        <button>l</button>
        <button>d</button>
    </div>

    <!-- 可设置宽高 -->
    <button style="width: 30px;height:50px;">H</button>
    <button>e</button>
    <button>l</button>
    <button>l</button>
    <button>o</button>
    <button> </button>
    <button style="width: 30px;height:50px;">W</button>
    <button>o</button>
    <button>r</button>
    <button>l</button>
    <button>d</button>

</body>
</html>

执行效果

设置元素的显示模式

display 属性

在 CSS 中,display 属性用于 控制 HTML 元素在页面中的显示方式,可以使元素以不同的方式进行显示。

display 的常用属性值

属性值描述示例元素
block元素将以块级元素的方式呈现,通常占据父容器的整个宽度,独占一行。<div>, <p>, <h1>
inline元素以内联元素的方式呈现,不会强制换行,仅占据其内容所需的宽度。<span>, <a>, <strong>
inline-block元素以内联元素的方式呈现,但允许设置宽度、高度、内外边距等。通常用于创建水平排列的块级元素,例如 导航菜单项
none元素将于页面中消失,不占据页面空间。常用于通过 JavaScript 来控制元素的显示与隐藏。

内联元素与块级元素的切换

通过为 HTML 元素设置 display 属性将能够控制 HTML 元素的显示模式,如 将内联元素以块级元素的显示方式进行渲染。对此,请参考如下示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>宽高由内容决定</title>

    <!-- 
        通过 style 标签将带有 block ID 属性的元素
        以块级元素的显示方式进行渲染
     -->
    <style>
        #block {
            display: block;
            width: 200px;
            height: 50px;
            background-color: salmon;
        }
    </style>

</head>
<body>

    <a id="block" href="https://baike.baidu.com/item/%E4%B9%9F%E6%98%AF%E5%BE%AE%E4%BA%91/3056682">《也是微云》</a>
    <span>也是微云,</span>
    <span>也是微云过后月光明。</span>
    <span>只不见去年得游伴,</span>
    <span>也没有当日的心情。</span>
    <span style="width: 100px;height: 100px;background-color: dodgerblue;">不愿勾起相思,</span>
    <span id="block">不敢出门看月。</span>
    <span id="block">偏偏月进窗来,</span>
    <span id="block">害我相思一夜。</span>
    
</body>
</html>

执行效果

通过为 span 标签设置 display: block; 样式,即使是内联元素也具有了块级元素的特性。

为什么要通过 display 来修改元素的显示模式?

在 CSS 中,虽然你可以通过使用具有特定显示模式的元素来达成目标,但 display 属性提供了更大的 灵活性可维护性

优点描述
简化样式控制使用 display 属性,可以轻松地在同一个元素上切换不同的显示模式,而 不必创建多个具有不同显示模式的元素
使元素符合语义要求HTML 应该关注文档的结构和语义,而不应过多地关注样式和布局。通过使用 display 属性,可以确保 HTML 保持语义上的清晰,因为元素的 显示方式可以在样式表中进行控制,而不是通过元素来实现样式

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

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

相关文章

大托,如何站上天心南部的价值高地?

作者 | 魏启扬 陈宇航 来源 | 洞见新研社 陈飞 摄 “商贾云集于四方&#xff0c;市井数盈于万户”&#xff0c;长沙南城古往今来生生不息的热辣与烟火&#xff0c;每隔一段时间&#xff0c;都会有璀璨的迸发。 才在“加长版”黄金周释放了“不夜南城”的魅力&#xff0c;第…

YOLO目标检测——红细胞数据集【(含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;红细胞的自动检测和计数数据集说明&#xff1a;YOLO目标检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富。使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、coco(json)和yolo(txt)三种格式标签&am…

C++类和对象(四) (构造函数 析构函数)

1 类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器会生…

SolidWorks2021 安装教程(亲测可用)

1.安装教程&#xff1a;&#xff08;断网进行&#xff0c;否则安装了后还是无法用&#xff09; 1.运行sw2021_network_serials_licensing 2. 注册表编辑器确定 3.成功添加到注册表中 4.复制SolidWorks_Flexnet_Server文件夹 5.运行SolidWorks_Flexnet_Server下的lserver_insta…

一个适合练手的接口测试实战项目——慕慕生鲜

前言 最近很多粉丝找小月要接口测试项目练练手&#xff0c;看看实力&#xff01;今天&#xff0c;它来了 慕慕生鲜&#xff0c;完整版&#xff0c;文末有福利&#xff01; 干货来咯&#xff0c;收藏好&#xff01; 1. 接口测试需求分析 常见接口文档提供的两种方式 ①wor…

代码随想录算法训练营第23期day26|39. 组合总和、40.组合总和II、131.分割回文串

目录 一、&#xff08;leetcode 39&#xff09;组合总和 二、&#xff08;leetcode 40&#xff09;组合总和II 三、&#xff08;leetcode 131&#xff09;分割回文串 一、&#xff08;leetcode 39&#xff09;组合总和 力扣题目链接 状态&#xff1a;基本回溯AC&#xff0c…

Docker(2)

Docker网络 原生网络 [rootserver1 harbor]# docker network ls默认使用桥接模式&#xff0c;桥接到docker0上 [rootserver1 ~]# docker run -d --name demo nginx [rootserver1 ~]# yum install -y bridge-utils [rootserver1 ~]# brctl showhost模式&#xff0c;容器和宿…

【vue3】Transition过渡组件

Transition 自带的内部组件xxx-enter-from 开始进入过渡 0%xxx-enter-active 过渡过程xxx-enter-to 过渡完成 100%xxx-leave-from 开始退出 0%xxx-leave-active 退出过程xxx-leave-to 退出完成 100% xxx是组件属性name的值&#xff0c;自定义的。我使用的是fade-box <templa…

JavaSE编程题目练习(三)

博客昵称&#xff1a;架构师Cool 最喜欢的座右铭&#xff1a;一以贯之的努力&#xff0c;不得懈怠的人生。 作者简介&#xff1a;一名Coder&#xff0c;欢迎关注小弟&#xff01; 博主小留言&#xff1a;哈喽&#xff01;各位CSDN的uu们&#xff0c;我是你的小弟Cool&#xff0…

基于 Qt UDP通信局域网通信

前言 该例程经过实际验证可以正常使用,只简单的使用UDP中的单播模式(一对一), 所用测试系统在同一局域网,其中: QT版本:5.12 PC端UDP模式:单播 UDP通信目标:基于STM32F4+LWIP协议的以太网接口 调试助手: 虚拟串口+串口助手+UDP和TCP调试助手[编程人员必备]一、UDP通…

RIP,EIGRP,OSPF区别

1. 动态路由协议的作用是什么&#xff1f; 2. 路由协议都有哪些种类&#xff1f; 3. 如何判断路由协议的优劣&#xff1f; -- RIP&#xff0c;EIGRP&#xff0c;OSPF - 动态路由协议 -- 路由协议 - 路由器上的软件 -- 帮助路由器彼此之间同步路由表 -- 相互的传递…

MC 我的世界 模拟城市模拟大都市 模组下载及整合包导入详解

如何导入整合包 如果是从curseforge下载的整合包不需要解压的&#xff0c;直接按照下方步骤整就行了&#xff0c;把启动器和整合包复制到没有中文的路径下 双击启动exe文件&#xff0c;如果弹窗要更新啥的点确定即可&#xff0c;启动好了先登录账户&#xff0c;有正式版的登录…

攻防世界web篇-view_source

因为题目说了不能使用右键查看源代码 所以我直接F12来查看&#xff0c;但是F12只能查看不能复制flag 之后尝试view-source:http://61.147.171.105:57537/ 这里右键不受限制&#xff0c;可以直接粘贴复制

驱动开发day2(编程实现LED三盏小灯亮灭)

头文件&#xff08;head.h&#xff09;&#xff1a; #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0x50006000 #define PHY_LED2_MODER 0x50007000 #define PHY_LED3_MODER 0x50006000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED2_ODR 0x50007014 #d…

揭示肠道菌群在儿童营养生长不良中的关键作用

营养不良的微生物 Malnourished Microbes 儿童营养不良是全球主要的健康负担&#xff0c;营养干预措施只能部分解决这一问题。儿童营养不良的慢性和急性形式均以多种生物系统紊乱为特征&#xff0c;包括新陈代谢、免疫和内分泌系统。 越来越多的证据支持肠道微生物组在调节这些…

踩坑记 BSS段的初始化

title: 踩坑记 BSS段的初始化 category_bar: true categories: blog tags:embedded date: 2023-10-20 19:23:05 前言 接手一个项目&#xff0c;调试全靠串口日志&#xff0c;测试同事测试产品的时候无法拿到日志&#xff0c;刚好产品RAM够大&#xff0c;且刚好有SD卡。所以就…

“传统”开发与AI开发的区别与联系(更新了GPT3.5的反馈)

1、传统开发的算法和软件整体&#xff0c;也可以看成是一个“大模型”&#xff0c;其中有不同层次的处理&#xff0c;最终能够完成从输入到输出的计算&#xff0c;不过&#xff0c;其中的计算都是人工定义的&#xff0c;一般依赖于研究成果的应用。研究成果在实际中的应用处理。…

伦敦银延时一定存在吗?

伦敦银市场是一个几乎24小时都在不停波动的市场&#xff0c;参与其中的人以短线交易为主&#xff0c;他们所追逐是行情短线波动所带来的收益&#xff0c;如果交易平台所提供的交易环境有问题&#xff0c;反复地出现延时、卡盘等的问题&#xff0c;恐怕会令投资的效果大打折扣&a…

window10/11 光学系统建模之Light Tools8.6 软件安装教程(亲测可用+附带免费资源可直接下载)

1.下载链接 &#xff08;免费分享&#xff09; 链接&#xff1a;https://pan.baidu.com/s/1qVubyRSC93xT-GKeK-k3ow 提取码&#xff1a;vkho 2.安装顺序 即按照图里的1234的顺序先安装完注册表&#xff0c;驱动&#xff0c;和lighttools的程序 我个人在win10系统安装这些程…

vuecli2关于下载本地取环境变量没问题部署后路径取不到环境变量问题解决

功能 下载功能,用a标签实现下载 代码错误思路分析 解决办法可以忽略直接看下面 解决思路 在每个config文件中都定义了file_url,本地运行没有问题,但是部署到服务器开发环境, 拿到的是生产环境的FILE_URL地址 首先看了流水线-构建配置-编译配置-编译脚本里的打包命令: ** 本…