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

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

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)。

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

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

由于默认情况下,span 元素和 a 元素都是 display 属性值为 inline 的非替换元素,它们都会生成行内框。当一行内无法容纳所有行内级框(一行无法放下所有行内元素标签的时候),在容器的边界处会发生换行。换行时,行内框的内容允许被拆分,在多行显示。如,span 元素的内容被拆分在多行显示。但是这里其实有一个例外,如果行内元素都是数字和字母的时候就会一直往后追加,并不会换行,这个时候要想让他换行就需要用一些样式进行控制。
在这里插入图片描述
在这里插入图片描述
原子行内级框
而原子行内级框具有原子性,其内容永远作为一个整体,在同一行内显示,不允许被拆分。这就是它之所以被称为原子行内级框的理由。当然,这是有道理的,想想你有什么理由要把一幅图像、或一个文本输入框、或一个表格拆分开来(换行)进行显示。也就是说图片就算是很大也不会被拆开

如果把 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,则行内框的高度小于内容区的高度,使内容溢出到行内框的外面。在堆叠的行中,这种情况会导致相邻两行的内容发生重叠。

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

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

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

img { width: 40px; height: 40px; border: 1px dashed #ccc; } 此时,图像的显示尺寸将是 40px*40px,而不是其固有尺寸 20px*20px。如图 4‑66 所示:

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

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

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

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

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

相关文章

sparkSQL的UDF,最常用的regeister方式自定义函数和udf注册方式定义UDF函数 (详细讲解)

- UDF&#xff1a;一对一的函数【User Defined Functions】 - substr、split、concat、instr、length、from_unixtime - UDAF&#xff1a;多对一的函数【User Defined Aggregation Functions】 聚合函数 - count、sum、max、min、avg、collect_set/list - UDTF&#xff1a;…

[SAP ABAP] 面向对象程序设计-类和对象

面向对象开发的特点&#xff1a;封装、继承和多态 什么是类和对象&#xff1f; 类(CLASS)是创建对象的模板&#xff0c;对象(OBJECT)是类的实例 一个类可以创建多个对象 类 > 类型 对象 > 个体 在ABAP语言中&#xff0c;定义一个类&#xff0c;需要包含定义(defin…

需求不明确时如何设计测试用例?

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、与产品澄清问题 需求不明确时&#xff0c;首先&#xff0c;应弄明白&#xff0c;需求有哪些模块及功能算法不明确&#xff1f; 需求有问题找相关负责人沟通…

C++:多态中的虚/纯虚函数,抽象类以及虚函数表

我们在平时&#xff0c;旅游或者是坐高铁或火车的时候。对学生票&#xff0c;军人票&#xff0c;普通票这些概念多少都有些许耳闻。而我们上篇文章也介绍过了继承与多继承。如果这些票我们都分别的去写一个类&#xff0c;当然很冗余&#xff0c;这里我们便可以去使用继承&#…

Sun Solaris开机自启配置

Sun Solaris 开机自启配置 1. 运行级别定义&#xff08;rc0.d — rcS.d&#xff09; Linux/Solaris系统启动相关目录、脚本说明&#xff1a; init: 系统启动超级进程inittab: 进程启动配置init.d: 启动脚本存放目录rc0---rc6: 运行级别目录rcS: 单用户模式启动脚本 Linux/S…

机器学习—例子:图像识别

在上篇文章中&#xff0c;在一个需求预测示例中看到了神经网络是如何工作的&#xff0c;那么如何将类似类型的想法应用于计算机视觉应用程序。 如果你正在开发人脸识别应用程序&#xff0c;让我们深入研究一下。假设一个神经网络将这样的图片作为输入&#xff0c;并输出图片中…

微服务系列五:避免雪崩问题的限流、隔离、熔断措施

目录 实验环境说明 前言 一、一片小雪花引起的雪崩&#xff01; 1.1 雪崩问题&#xff08;级联失败问题&#xff09;示意图 1.2 雪崩问题的产生原因与解决策略 二、雪崩问题的具体解决策略 2.1 请求限流 2.2 线程隔离 2.3 服务熔断 2.4 总结——具体解决策略 三、微…

C语言之写一个修改数组内容的函数

问题代码: 函数ltrim是为了消除buf字符数组中左边空格&#xff0c; memmove函数介绍 如果对c语言指针运用非常熟练的人,结合函数功能就会发现这个代码非常的傻逼&#xff0c;你会发现为什么需要返回&#xff0c;buf不用接收返回值&#xff0c;执行这个函数后buf中的内容就已经…

第二十七章 Vue异步更新之$nextTick

目录 一、概述 二、完整代码 2.1. main.js 2.2. App.vue 一、概述 需求&#xff1a;编辑标题, 弹出显示编辑框自动聚焦 1. 点击编辑&#xff0c;显示编辑框 2. 让编辑框&#xff0c;立刻获取焦点 我们常规的思路可能会编写如下代码来实现&#xff1a; 问题&#xff1a…

【含文档】基于ssm+jsp的IT论坛系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: apache tomcat 主要技术: Java,Spring,SpringMvc,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定义了三个…

【运维心得】按任何键都不能进BIOS三步解决

目录 第一步 键盘 第二步 工具 第三步 短路 估计经常搞运维的朋友&#xff0c;会经常碰到这个问题。 第一步 键盘 这个现象出现&#xff0c;首先要确定开机时&#xff0c;屏幕上是否会显示提示字符&#xff1f;比如F2、F10、DEL键之类的&#xff0c;如果有&#xff0c;那么就…

OpenCV基础05_GUI和PyMsql

目录 一、PySimpleGUI 1、布局和窗口 2、文本框组件 3、视频处理 4、图片处理 二、pymsql 1、数据库操作 2、数据采集 3、人脸识别 一、PySimpleGUI PySimpleGUI 是一个用于简化 GUI 编程的 Python 包&#xff0c;它封装了多种底层 GUI 框架&#xff08;如 tkinter、…

动态代理IP的应用场景有哪些?

在数字化时代&#xff0c;数据的价值不言而喻&#xff0c;而动态代理IP则如同企业数据采集的隐形翅膀&#xff0c;助力企业在信息海洋中翱翔。本文将深入探讨动态代理IP的应用场景&#xff0c;揭示其如何帮助企业提升业务成功率&#xff0c;保障数据采集的安全性与稳定性。 动…

从实验室到晶圆厂:光刻胶剥离液的关键转变

根据QYResearch调研团队最新发布的《全球光刻胶剥离液市场报告2023-2029》显示&#xff0c;预计到2029年&#xff0c;全球光刻胶剥离液市场规模将攀升至15.8亿美元&#xff0c;未来几年将以8.9%的复合年增长率&#xff08;CAGR&#xff09;持续增长。 上述图表及数据均来源于QY…

基本开关电源电路分析

一、BOOST电路&#xff08;升压&#xff09;&#xff1a; 下图为Boost电路的最基本拓扑&#xff0c;从左至右包括电源&#xff0c;储能电感L1&#xff0c;开关管Q1&#xff0c;二极管D1&#xff0c;输出滤波电容C1及负载电阻R1。 工作原理&#xff1a; 开关管导通状态&#xf…

【解决】Pico 串流 Unity 开发环境 Preview 黑屏问题

开发平台&#xff1a;Unity 6.0 开发工具&#xff1a;Pico SDK   一、问题描述 在 Unity 开发环境下运行 测试 PicoVR 表现时&#xff0c;出现 Game视窗 PicoVR投屏 呈现黑屏效果。详细背景如下&#xff1a; UnitySwitch PlateformPICO Integration SDKPICO Live Preview6…

网站域名注册流程详解

随着互联网的普及&#xff0c;网站已经成为人们获取信息、传播观点和开展业务的重要途径。在创建自己的网站之前&#xff0c;第一步是选择并注册一个合适的域名。域名是您网站的地址&#xff0c;它将帮助用户找到您的在线空间。在这篇文章中&#xff0c;我们将详细介绍网站域名…

AI赋能人才管理:东软助力企业数字化转型

在数字化转型大潮席卷全球的今天&#xff0c;如何在新时代背景下实现高效、智能的管理升级&#xff0c;也成为了广大企业关注的焦点。 不久前&#xff0c;东软正式发布TalentBase数智人力资本管理产品&#xff0c;以AI人才管理模式为企业人力资源管理注入了新的活力。 数字化转…

专治拖延症❗❗提升学习效率的秘密武器⏰【当当狸智能时间管理器D2】养成高效自律好习惯

孩子有拖延的习惯&#xff0c;做事磨蹭拖拉&#xff0c;学习效率底下❓ 尤其是低年龄段的孩子时间观念不强&#xff0c; 所以就很懒散很被动&#xff0c;做事的效率也很低 缺乏时间管理能力的孩子可能会 面临学业压力增大、成绩下滑、情绪消极等后果❌ 所以&#xff0c;一…

Python字符串(一图秒了)

一、概念 在Python中用单引号或双引号引起来的内容 定义 s abc123 s "abc" s #空字符串 s "" #空字符串 s #空格字符串 s " " #空格字符串 注意&#xff1a;空格字符串不是空字符串 二、字符串的访问&…