我要精通前端-块级元素和行内元素深入学习笔记

真的发现前端天天增删改查,真的是问一些比较细节的知识,我真的懂么

1、块级元素间的margin会重叠,

<div class="head"></div>
<div class="content"></div>
.head {margin: 5px;border: 10px solid black;padding: 3px;width: 100px;height: 100px;background: red;}.content {margin: 5px;border: 10px solid black;padding: 3px;width: 100px;height: 100px;background: red;}

理想化的状态我以为2个块级元素之间的距离是10px,但是却不是这样,而是只有5px,而且2个设置的margin重叠了
在这里插入图片描述
两个盒子之间的外边距距离并没有相加反而是重叠了。这是为什么呢,看了看官方文档才明白

当两个相邻的div元素上下存在外边距时,它们的外边距会发生重叠。这种情况下,两个div元素的外边距将会合并成一个外边距,取其中较大的那个值作为最终的外边距。

怎么解决上下外边距重叠问题
1、使用内边距(padding)替代外边距。
2、将元素转为行级元素或者行块级元素
3、给其后的元素设置float浮动

二、行内元素

<span class="content"></span>
.content {margin: 5px;border: 10px solid black;padding-left: 100px;width: 100px;height: 100px;background: red;}

在这里插入图片描述
就会发现,我设置的样式有一些直接失效了,大小没有了作用,而且有一部分边框也被遮挡住了。。这个也是完全和我想的不一样,我想的可能就是行内元素那一定是行内的。其实这个是因为行内元素默认的display属性值为“inline”‌。在CSS中,每个元素都有一个默认的display属性值,这取决于元素的类型。例如,

元素的默认display属性值为“block”,而 元素的默认display属性值为“inline”‌。

行内元素的特点
行内元素(inline elements)通常不会独占一行,而是与其他元素在同一行显示。它们的特点包括:

‌1.不独占一行‌:行内元素不会导致文本换行,而是与其他行内元素并排显示。
‌2.宽度和高度不可设置‌:行内元素不能设置宽度和高度,其宽度和高度由内容决定。只能通过设置其内边距,边框,外边距来调整它们的水平距离。可以通过边框,垂直方向上的内边距来设置内联元素的高度。
‌3.可以包含在块级元素中‌:行内元素可以包含在块级元素中,并且不会影响块级元素的宽度和高度。

三、行内框理解,

根据元素自身的特点,行内级元素又被分为非替换元素替换元素

非替换元素:直接包含在文档中,浏览器在渲染页面时,会读取元素的内容,并直接显示在页面上。说白了,非替换元素的内容就是文本。如:

<span>这里是span元素的内容</span>

替换元素:仅仅是内容的占位符,它只个空元素,并没有实际内容。浏览器在渲染页面时,会根据元素及相关属性,来判断要显示的内容。替换元素的一个典型例子就是 img 元素。如:

<img src = "logo.jpg" />

在渲染页面时,浏览器发现是 img 元素,就会读取其 src 属性的值,并按照 src 属性的指示,读取图像文件 logo.jpg 的内容,显示在 img 元素所在的位置。如果查看HTML代码,却看不到图像的实际内容。

大多数的表单元素,如 input、textarea、select 等,都是替换元素。通过CSS的content属性插入的对象,是匿名替换元素。

1.什么情况下会生成行内框

如果一个元素的 display 属性的取值为 inline、inline-block、inline-table、inline-flex,它就会生成一个行内级框:display 属性值为 inline 的非替换元素生成的行内级框,称作行内框;行内级替换元素、行内块元素(inline-block)、行内表格元素(inline-table)、行内弹性盒(inline-flex),生成的行内级框,称作原子行内级框(Atomic Inline-level Box)。

1.1 先说inline

**特点:**行内框的内容允许被拆分,并在多行显示。假设在一个段落中,有一个 span 元素和一个 a 元素:

<p>
<span>我是 display 属性值为 inline 的非替换元素,</span>
<a href="#">我是超超超超级链接</a>
</p>

由于默认情况下,span 元素和 a 元素都是 display 属性值为 inline 的非替换元素,它们都会生成行内框。当一行内无法容纳所有行内级框(一行无法放下所有行内元素标签的时候),在容器的边界处会发生换行。换行时,行内框的内容允许被拆分,在多行显示。如,span 元素的内容被拆分在多行显示。

但是这里其实有一个例外,如果行内元素都是数字和字母的时候就会一直往后追加,并不会换行,这个时候要想让他换行就需要用一些样式进行控制让其进行换行。
在这里插入图片描述
在这里插入图片描述

1.2标题inline-block原子行内级框

而原子行内级框具有原子性,其内容永远作为一个整体,在同一行内显示,不允许被拆分。这就是它之所以被称为原子行内级框的理由。当然,这是有道理的,想想你有什么理由要把一幅图像、或一个文本输入框、或一个表格拆分开来(换行)进行显示。也就是说图片就算是很大也不会被拆开

如果把 a 元素的 display 属性设置为 inline-block,它就会生成原子行内级框。当选中这个元素的时候,其实就是把这2行当成一个整体当成一块,就算没有文字内容的地方也会被块选中。

一个行内非替换元素内容区的宽度,仅由其内容决定,而其高度由 font-size 属性决定,并且等于 font-size 属性的值。width 和 height 属性对行内非替换元素无效,因此无法通过 width 和 height 属性,来改变其宽度和高度。假设一个行内级元素 span 的 font-size为 24px,则其内容区的高度就是 24px。

如果 line-height 大于 font-size,则行距为正值,使行内框的高度增加。把上述 span元素的 line-height 属性值设置为 36px:

span {font-size: 24px;line-height: 36px;border: 1px dashed #ccc;
}
<span class="head">1111111111111</span>

由上述规则可知,行内框的高度为 36px,内容区的高度为 24px,行距 = line-height - font-size = 12px,半行距为 6px,分别加到其内容区的顶部和底部。
在这里插入图片描述

如果 line-height 小于 font-size,则行距为负值,使行内框的高度减小。假设把上述 span元素的 line-height 属性值设置为 12px:

span {
font-size: 24px;
line-height: 12px;
border: 1px dashed #ccc;
}
由上述规则可知,行内框的高度为 12px,内容区的高度为 24px,行距 = line-height - font-size = -12px,半行距为 -6px,分别加到其内容区的顶部和底部。

在这里插入图片描述

从上图可以看出,如果 line-height 小于 font-size,则行内框的高度小于内容区的高度,使内容溢出到行内框的外面。在堆叠的行中,这种情况会导致相邻两行的内容发生重叠。

1.2.1 原子行内级框可以设置宽度或者是高度

原子行内级框的情况则完全不同,不仅可以通过 width 和 height 属性来设置框内容区的宽度和高度,而且可以通过垂直方向的外边距、边框、内边距,来增加框的高度。

假设有一幅图像,其固有尺寸是 20px20px,通过width 和 height 属性,将其显示尺寸设置为40px40px:

<img src="img/biggrin.gif">
img {width: 40px;height: 40px;border: 1px dashed #ccc;
}

此时,图像的显示尺寸将是 40px40px,而不是其固有尺寸 20px20px。

当然,如果没有显式声明的 width 和 height 属性,内容区的宽度则由其内容决定。也可以只设置 width 或 height 属性中的某一个,这样的话,另一个值将会根据内容的尺寸自动调整。

假设为上述的图像添加 40px 的垂直内边距和 10px的边框,由于内边距和边框都会增加框的高度,则得到框的高度就是 140px

小总结:因此可以说,除了在行内显示外,原子行内级框的表现,更像一个块级框。然而,无论是行内框,还是原子行内级框,水平方向的外边距、边框、内边距对它们都有效,都会增加它们的宽度。

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

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

相关文章

C语言 循环高级

时间&#xff1a;2024.11.6 一、学习内容 1、无限循环 无限循环&#xff1a;循环永远停不下来 注意点&#xff1a;无限循环因为永远停不下来&#xff0c;所以下面不能再写其他的代码了 2、break 跳转控制语句&#xff1a; 在循环的过程中&#xff0c;跳到其他语句上执行 #…

62-Java-面试专题(1)__基础

62-Java-面试专题(1)__基础-- 笔记 笔记内容来源与黑马程序员教学视频 文章目录 62-Java-面试专题(1)__基础-- 笔记Java-面试专题(1)笔记中涉及资源&#xff1a; 一、二分查找①&#xff1a;代码实现1. 流程2. 代码实现3. 测试 ②&#xff1a;解决整数溢出&#xff08;方法一&…

解决CORS (跨源资源共享) 错误

问题引入 前端代码 <template><div id"hello-vue" class"demo">{{ message }}</div><el-button type"primary" click"handleClick">我是一个按钮</el-button></template><script setup>//加…

微信小程序 uniapp网络记账设计个人理财系统

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 aa账簿 (自动编号、用户id、用户账号、备注、登记时间、消费类型、创建时间、消费金额)&#xff1b; 配置文件 (自动编…

【SQL Server】华中农业大学空间数据库实验报告 实验一 数据库

实验目的 熟悉了解掌握SQL Server软件的基本操作与使用方法&#xff0c;认识界面&#xff0c;了解其两个基本操作系统文件&#xff0c;并能熟练区分与应用交互式与T-SQL式两种方法在SQL Server中如何进行操作&#xff1b;学习有关数据库的基本操作&#xff0c;包括&#xff1a…

大腾智能3D一览通携手飞书,实现高效设计协同

设计生产作为制造业的核心环节&#xff0c;其效率与协同性直接关系到企业的市场竞争力和响应速度。 在设计部门内部&#xff0c;虽然可以直接发送3D格式的文件进行沟通和评审&#xff0c;但当涉及到跨部门甚至是跨企业的协作时&#xff0c;情况就变得复杂。通常需要大量的多角…

Java项目实战II基于Spring Boot的药店管理系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着医疗行业的快速发展和人们对健康需…

qt QHeaderView详解

1、概述 QHeaderView 是 Qt 框架中的一个类&#xff0c;它通常作为 QTableView、QTreeView 等视图类的一部分&#xff0c;用于显示和管理列的标题&#xff08;对于水平头&#xff09;或行的标题&#xff08;对于垂直头&#xff09;。QHeaderView 提供了对这些标题的排序、筛选…

【Android】使用productFlavors构建多个变体

项目需求 在一个设备上安装两个一样的程序app 需求解决 我们知道每一个app都有一个包名的&#xff0c;如果一个app在Android设备上安装之后&#xff0c;再安装这个app的话会进行覆盖安装&#xff0c;因为他们两个的包名是一样的&#xff0c;默认是一个app。 但是我们现在需…

AI笔筒操作说明及应用场景

AI笔筒由来&#xff1a; 在快节奏的现代办公环境中&#xff0c;我们一直在寻找既能提升效率、增添便利&#xff0c;又能融入企业文化、展现个人品味的桌面伙伴。为此&#xff0c;我们特推出专为追求卓越、注重细节的您设计的AI笔筒礼品版&#xff0c;它集高科技与实用性于一身…

【笔面试常见题:三门问题】用条件概率、全概率和贝叶斯推导

1. 问题介绍 三门问题&#xff0c;又叫蒙提霍尔问题&#xff08;Monty Hall problem&#xff09;&#xff0c;以下是蒙提霍尔问题的一个著名的叙述&#xff0c;来自Craig F. Whitaker于1990年寄给《展示杂志》&#xff08;Parade Magazine&#xff09;玛丽莲沃斯莎凡特&#x…

Elasticsearch中时间字段格式用法详解

Elasticsearch中时间字段格式用法详解 攻城狮Jozz关注IP属地: 北京 2024.03.18 16:27:51字数 758阅读 2,571 Elasticsearch&#xff08;简称ES&#xff09;是一个基于Lucene构建的开源、分布式、RESTful搜索引擎。它提供了全文搜索、结构化搜索以及分析等功能&#xff0c;广泛…

sql数据库-DQL-基本查询

目录 举例表emp 查询多个字段 查询整张表所有数据 给字段名起别名&#xff08;更方便阅读&#xff09; 去除重复的数据 举例表emp 查询多个字段 SELECT 字段1,字段2,字段3...FROM 表名; 举例查询emp表中的name&#xff0c;workno&#xff0c;age字段返回 查询整张表所有数据 …

JqGird 动态生成列使用

使用场景&#xff1a; 在工作用需要自定义动态生成列&#xff0c;通过选择下拉框&#xff0c;加载列&#xff0c;通过查询加载列对应的数据信息 当选择文件源任务显示三列 当选择数据源任务显示两列 处理方式&#xff1a; 1. 首先在刚进入界面时初始化控件 $("#pageGri…

Rust项目结构

文章目录 一、module模块1.二进制文件的cargo项目2.库的cargo项目3.文件内的module 二、模块化项目结构1.关于module2.各个模块之间互相引用 三、推荐项目结构1.实例 参考 一、module模块 crate规则&#xff1a; 规则一&#xff1a;一个包中必须至少包含一个crate规则二&#…

电能管理系统(源码+文档+部署+讲解)

本文将深入解析“电能管理系统”的项目&#xff0c;探究其架构、功能以及技术栈&#xff0c;并分享获取完整源码的途径。 系统概述 “工厂电能管理系统” 是一款集设备管理、维修管理、能耗监测、节能分析、储能管理、充电桩管理、冷源站管理、报警管理、点检管理等功能于一体…

网上纪念馆(源码+文档+部署+讲解)

最近我在挖掘一些优秀的开源项目时&#xff0c;无意间发现了一个相当给力的系统——网上纪念馆系统。这个系统不仅功能完善&#xff0c;满足了线上祭祀和纪念的需求&#xff0c;而且代码结构清晰&#xff0c;易于二次开发。作为一名技术爱好者&#xff0c;我觉得有必要把这个好…

华为HarmonyOS打造开放、合规的广告生态 - 贴片广告

场景介绍 贴片广告是一种在视频播放前、视频播放中或视频播放结束后插入的视频或图片广告。 接口说明 接口名 描述 loadAd(adParam: AdRequestParams, adOptions: AdOptions, listener: AdLoadListener): void 请求单广告位广告&#xff0c;通过AdRequestParams、AdOptions…

责任链模式 Chain of Responsibility

1 意图 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 2 结构 Handler 定义一个处理请求的接口;(可选)实现后继链。 ConcreteHandler …

【Linux】- 权限(2)

接上一篇文章&#xff0c;继续介绍linux权限的相关知识。https://blog.csdn.net/hffh123/article/details/143432940?spm1001.2014.3001.5501j 目录 一、chown&#xff1a;修改文件的拥有者 二、chgrp&#xff1a;修改文件所属组 三、关于other的介绍 四、文件类型 1、分类…