Html_Css问答集(7)


46、在vscode,html与head和body在同一个垂直线上,它们并不是兄弟元素,为什么?

    在 Code(Visual Studio Code)或其他代码编辑器中,HTML文档的格式和缩进方式可以帮助开发者更清晰地组织和理解代码结构。虽然<html>, <head>, 和 <body>标签在编辑器中可能显示在同一垂直线上,但实际上它们有着明确的父子关系。

    层级结构:
        <html> 是根元素,是整个HTML文档的顶层父元素。
        <head> 和 <body> 是 <html> 的直接子元素,表示文档的头部和主体。
    缩进和对齐:
        编辑器通常会根据用户的设置或默认格式,选择合适的缩进和对齐方式。
        由于 <html> 元素通常只包含 <head> 和 <body> 两个子元素,并且它们是开发者最常操作的部分,因此编辑器可能会将它们放在同一垂直线上,以避免不必要的缩进,节省水平空间,提高代码的可读性。

    VS Code等编辑器为了简洁和节省空间,常常将 <head> 和 <body> 标签与 <html> 标签在同一垂直线上显示。


47、有了em为什么还要有rem?

    由于 em 单位的继承性,它总是相对于父元素的字体大小进行计算,这样在嵌套元素中可能会导致累积效应,计算起来更加复杂且容易出现意想不到的结果。为了避免这种复杂性和不确定性,rem 单位被引入。

    rem 单位是相对于根元素(<html>)的字体大小来计算的,这意味着在整个文档中,无论嵌套层级有多深,rem 单位都保持一致,确保了一致的比例和预测性。如果使用 body 作为基准,仍然会存在嵌套和继承的复杂性问题。

    rem 是相对于根元素 <html> 的 font-size,并且值在整个文档中是全局一致的,不会受到嵌套层级的影响。
    rem 不是继承性的,而是基于根元素的 font-size 来计算的。
    CSS 的其他属性可以继承,例如 font-size,但 rem 本身只是一个固定的计算单位。
    通过使用 rem,你可以确保在整个文档中拥有一致的比例和布局,更加容易实现响应式设计。

    简言之,rem直接找祖师父html的font-size来计算,不嵌套混乱计算。


48、回答下面问题:

        <style>.outer {height: 400px;background-color: gray;}.box {font-size: 20px;/* height: 100px;width: 100px; */}.box1 {background-color: orange;}.box2 {background-color: skyblue;float: left;}.box3 {background-color: green;}</style></head><body><div class="outer"><div class="box box1">1</div><div class="box box2">2</div><div class="box box3">3</div></div></body>


    上面box1独占一行,box3则围绕box2显示在其右侧。为什么?
    现在去掉box的宽与高的注释,box1仍然独占一行,但box3不再与box2的右侧,而是下方(注意是文字 ),为什么?
    
    浮动的本质:让周围的文字围绕着原浮动元素进行显示。位置上来说,浮动元素在天上,围绕的元素在地下。
    
    无宽高时的布局:
        初始状态下,box1 是块级元素,占据父容器的整个宽度,因此它独占一行。接着,box2 浮动到左边,再之后的 box3 作为块级元素会围绕浮动的 box2 排列,但也会占据其余的整个宽度,所以它出现在 box2 的右侧并独占下一行。
        注意:box2在天上,box3与box1在地下,box2的下方(地下)也是box3的一部分。
    
    
    为 box 添加宽度和高度:
        box1 由于是块级元素,仍然独占一行。    box2 浮动到左边(并固定在 100px 宽高区域)。box3 尝试在 box2 右侧显示,但由于块级元素的特性,它不能“围绕”浮动的块级元素,而是被浮动元素“推到”下一行。
        为什么被推到下一行,而不是右侧呢?
        此时,从视觉上看,由于 box2 和 box3 宽高都为 100px,它们实际占据相同的位置,导致 box3 的背景色和内容都被 box2 覆盖。只剩下 box3 的文字溢出,继续向下排列。
    
        为了证实:可以设置 box2 设置为透明时,你会看到box2的位置是绿色,它也即是 box3 的背景色,这表明 box3 实际上仍然位于 box2 的下方,但它的文字内容由于空间限制被迫溢出到父容器的下方,并显示在那里。
    
    
    总结:
        box3 一直尝试在 box2 的右侧显示,但由于块级性质和浮动元素的“推挤”行为,它在视觉层面上被 box2 覆盖,只剩文本溢出,显示在 box2 的下方。
        区别:文字在下方显示,所以此时它是溢出,所以溢出部分也就没有背景色。
    


49、分析下面各元素的布局?

        <style>.outer {width: 300px;background-color: gray;border: 1px solid black;}.d {height: 100px;width: 100px;background-color: skyblue;border: 1px solid black;margin: 10px;}.d1,.d2,.d3 {float: left;}.d4 {background-color: green;}.d1 {background-color: transparent;}</style></head><body><div class="outer"><div class="d d4">0</div><div class="d d1">1</div><div class="d d2">2</div><div class="d d3">3</div><div class="d d4">4</div></div></body>

    第0号元素在浮动前按正常文档流布局--独占一行。由于有border的设置,所以不会有首末元素边距被父容器“吃掉”的情况。
    第一、二、三号元素左浮动不按正常文档流排布,会在第0号元素的下方从左向右排布,有点类似span的味道,由于总宽度只有300px,不足以容纳第三号,所以第三号就另起一行在第一号的下方显示(浮动元素不受高度限制,但仍受宽度限制)。
    
    第四号元素没有浮动,按正常文档流在父容器中显示,由于第0号是独占一行,所以第四号就在第0号元素的下方显示,由于第一、二、三的浮动占据了原第四号的位置,所以第四号的背景仍在在第一号的下方,但文字4却只能显示第三号的下方。

    两个细节:
    (1)第四号元素因为合并原因,它与第0号元素的垂直距离是10px(不是20px)。而第一号元素是左浮动,不受合并影响,会是累加情况,因此它与第0号元素的垂直距离是10px+10px=20px,也即从俯视角度上,第四号元素在垂直上比第一号元素离第0号元素更近。
    
    (2)第三号是因宽度限制被挤到第一号元素的下面,实则上第一、二、三号元素它们都是在“一行”上。但第四号元素的宽度与左浮动的第1号一样(注意第四号受所有在此位置的左浮动节制,即第一、二、三的宽度大于了第四号宽度),结果是第四号的背景只能在这些浮动元素的后面,但文字只能另起一行显示(为什么另起一行呢?因为第四号元素的位置是独占一行,所以文字只能另启一起显示)

50、分析下面元素的布局.

      <style>.outer {width: 500px;background-color: gray;border: 1px solid black;float: left;}.box {width: 100px;height: 100px;background-color: skyblue;border: 1px solid black;margin: 10px;}.box1,.box2,.box3 {float: left;}</style></head><body><div class="outer"><div class="box box1">1</div><div class="box box2">2</div><div class="box box3">3</div><!-- <div class="box box4">4</div> --></div></body>

    (1)当父容器 outer 左浮动后,它和它的子元素 box1, box2, box3 都将被视为浮动元素,它们会沿着父容器内部的左侧排列。这四个元素都会在天上浮动。
    
    (2)父容器能否容纳三个子元素?是的,尽管在天上,一样容纳。
        注意:
        浮动元素像内联元素一样水平排列。 这意味着无论兄弟元素原本是块级元素还是内联元素,只要它们都设置了 float 属性,它们就会像内联元素一样,从左到右水平排列,直到父元素容纳不下它们为止。
        如果是都是右浮动,那么它们从右向左象内联元素一样排列。
        
        由于父容器 outer 的宽度为 500px,三个子元素会从父容器的左侧开始排列。如果父容器的宽度有限(由500px改为300px时),当第三个子元素超过父容器的宽度时,它会向下溢出,并在下一行排列。
        
        父元素没有浮动时,因为没有内容,所以高度不会撑起,会变成一条线。
        上面由于父元素也浮动了,都在天上,因此父元素一样可以容纳三个浮动的元素,因此它的内容由三个浮动的元素撑开,它的高度就有了。注意它的宽度不受是否影响。
        
        当父元素浮动后设置了高度(如height200px),那么在天上,也不会由子元素来撑开高度,直接是200px,如果小于子元素的高度,浮动的这些子元素一样会溢出父元素,仍然可以用overflow:hidden来进行隐藏。
        
    (3)后续元素的影响,只需要看父元素的浮动即可。
        父元素被视为一个整体----当父元素内所有子元素都设置了 float: left,整个父元素会作为一个整体进行浮动。
        后续元素会绕过父元素----由于父元素浮动,后续元素会绕过它进行排列。
        后续元素无法直接与父元素子元素交互----后续元素不会直接与父元素内部的子元素进行交互,它们会视为父元素是一个整体,并在其右侧进行排列。
        子元素的实际排列-----父元素内部的子元素仍然会按照水平排列的规则进行排列,直到父元素容纳不下它们为止。

    (4)上面父元素的float:left注释后,增加overflow: hidden后也会出现容纳现象。
        默认情况下: 当子元素浮动时,父元素的高度会默认收缩到最小的尺寸,只包含父元素的内联内容。因为浮动的子元素会脱离文档流,父元素无法识别子元素的高度。

        overflow: hidden 的作用: 当父元素设置 overflow: hidden 时,它会强制父元素将所有子元素都包含在内,即使是浮动元素。

        高度撑开的原因: 由于 overflow: hidden 强制父元素包含所有子元素,父元素的高度会自动调整以容纳所有浮动子元素,包括子元素的 margin 和 padding。
        
        注意:
            父元素没有高度: 当父元素没有设置高度时,它的高度会自动根据子元素的高度来决定。 由于浮动子元素会脱离文档流,父元素默认高度会收缩到最小的尺寸,只包含父元素的内联内容。此时,子元素不会溢出,因为父元素的高度会随着子元素的高度而改变。
            父元素有高度: 当父元素设置了固定的高度时,子元素就有可能溢出。如果子元素的总高度超过父元素的高度,而父元素又设置了 overflow: hidden,那么溢出的部分就会被隐藏起来。
            
            如果box4要显示的话,它仍然在box1的上方,文字4也会因为超过父容器而hidden。改overflow为scroll,向下滚动时就会发现容器内部下方有4.


51、块元素margin:0 auto会水平居中,为什么auto 0不会垂直居中?而上下左右为0时的绝对定位时,margin:auto会水平垂直居中?

    水平居中:
        对于水平居中,margin: 0 auto 设置了块元素的左右外边距 (left 和 right) 为 auto。块级元素在其父容器的宽度是明确的(即它有一个明确的宽度或可以确定宽度),浏览器可以根据这个宽度和父容器的宽度自动计算左右外边距以使该元素水平居中。(根据剩余可用空间计算,下同)
        
    垂直居中:
        对于垂直居中,margin: auto 0 设置的是上下外边距 (top 和 bottom) 为 auto,但这种设置通常不会对块级元素的垂直居中有任何效果,这是因为块级元素的高度在大多数典型的布局中是不明确或无法自动计算的。父元素的高度通常不是固定的,因此浏览器无法像计算左右外边距那样自动计算上下外边距以实现垂直居中。
    
    注意:
        需要:一是块元素,二是子元素需要小于父元素。否则就没有剩余可用空间来计算,就不会水平居中了。
        
    
    元素的四边都设置为0:top: 0; right: 0; bottom: 0; left: 0; 强制当前元素紧贴其包含块的所有四个边。
    margin: auto:
        设置 margin 为 auto 使浏览器自动计算边距。由于 top, right, bottom, left 都已经设为0,对应的 auto margin 将会分配剩余的可用空间,从而均匀分布在上下左右边距。
    宽度和高度:
        当 width 和 height 被指定时,浏览器会根据元素的宽度和高度来均匀分配上下左右的 auto 边距。(即父元素减去子元素的宽高后,再除以2即得上下左右的空白)
    
    最终,这个绝对定位的元素会在包含块的中心位置。
    

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

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

相关文章

Sm4【国密4加密解密】

当我们开发金融、国企、政府信息系统时&#xff0c;不仅要符合网络安全的等保二级、等保三级&#xff0c;还要求符合国密的安全要求&#xff0c;等保测评已经实行很久了&#xff0c;而国密测评近两年才刚开始。那什么是密码/国密&#xff1f;什么是密评&#xff1f;本文就关于密…

Linux:线程概念 线程控制

Linux&#xff1a;线程概念 & 线程控制 线程概念轻量级进程 LWP页表 线程控制POSIX 线程库 - ptherad线程创建pthread_createpthread_self 线程退出pthread_exitpthread_cancelpthread_joinpthread_detach 线程架构线程与地址空间线程与pthread动态库 线程的优缺点 线程概念…

机器学习与数据挖掘知识点总结(二)分类算法

目录 1、什么是数据挖掘 2、为什么要有数据挖掘 3、数据挖掘用在分类任务中的算法 朴素贝叶斯算法 svm支持向量机算法 PCA主成分分析算法 k-means算法 决策树 1、什么是数据挖掘 数据挖掘是从大量数据中发现隐藏在其中的模式、关系和规律的过程。它利用统计学、机器学…

关于数据库存储【\】转义字符反斜杠丢失的问题

背景 开始的时候&#xff0c;发现一个很奇怪的现象 富文本编辑器&#xff0c;前端存储带有"的内容&#xff0c;回显的时候解析就会出问题 后来发现&#xff0c;其实是只要是需要带有\进行转义的内容就会有问题 排查 从前端提交数据&#xff0c;后端获取数据&#xff…

CAPL如何在底层模拟TCP Client端建立TCP连接

TCP连接的三次握手过程中,Client端需要做的事情是:发起连接请求,接收Server端的连接请求并确认。 如果Client端不使用TCP/IP协议栈和Socket接口函数完成连接,而是通过组装以太网报文完成连接,需要注意: Client不使用TCP/IP协议栈,所以不应该配置TCP/IP协议栈。否则收到…

TCP协议参数设置说明

ip route下的tcp参数设置 能设置的参数不止这些&#xff0c;只列出了我们关心的 rto_min 通过路由表覆盖全局rto_min&#xff0c;最好是对端配合设置quickack 避坑&#xff1a;这玩意是用jiffies为单位记录的&#xff0c;jiffies的单位是4ms&#xff0c;配10ms的话生效的时候…

14.shell awk数组

awk数组 awk数组awk数组示例Nginx日志分析 awk数组 1.什么是awk数组 数组其实也算是变量,传统的变量只能存储一个值,但数组可以存储多个值 2.awk数组应用场景 通常用来统计、比如:统计网站访问TOP10、网站url访问TOP10等等 3.awk数组统计技巧 1.在awk中,使用数组时,不仅可以…

Interview preparation--RabbitMQ

AMQP AMQP(Advanced Message Queueing protocol). 高级消息队列协议&#xff0c;是进程之间床底一步新消息的网络协议AMQP工作原理如下&#xff1a; 发布者&#xff08;Publisher&#xff09;发布消息&#xff08;Message&#xff09;经过交换机&#xff08;Exchange&#xff…

新视窗新一代物业管理系统 GetCertificateInfoByStudentId SQL注入漏洞复现

0x01 产品简介 新视窗物业管理系统属于专家型的物业管理软件,能够给物业公司内部管理提供全面的解决方案,具有房产管理、客户管理、租赁管理、仪表管理、财务收费、发票管理、合同管理、仓储管理、设施设备管理、客户服务管理、会员管理、人事管理、资产管理、日常办公、档案…

SASS详解:从零到一,轻松驾驭CSS预处理器

Sass&#xff08;Syntactically Awesome Stylesheets&#xff09;是一个流行的CSS预处理器&#xff0c;它扩展了CSS的功能&#xff0c;使得开发者可以更高效地编写样式表。本文将带你从Sass的基础语法开始&#xff0c;逐步深入&#xff0c;帮助你轻松掌握这一强大的工具。 1. 变…

2024.06.01 校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、实习 | 先临三维2025实习生招聘 实习 | 先临三维2025实习生招聘 2、实习 | 腾讯音乐娱乐MUX2024实习生招聘 实习 | 腾讯音乐娱乐MUX2024实习生招聘 3、实习 | 2024年长沙市开福区“未…

HTML+CSS 动态卡片

效果演示 实现了一个带有动态背景和图片放大效果的卡片展示。卡片的背景是由两种颜色交替组成的斜线条纹&#xff0c;同时背景会以一定速度循环滚动。当鼠标悬停在卡片上时&#xff0c;卡片的图片会放大&#xff0c;并且卡片的背景会变为彩色。 Code HTML <!DOCTYPE html&…

简单聊一下Oracle,MySQL,postgresql三种锁表的机制,行锁和表锁

MySQL&#xff1a; MySQL使用行级锁定和表级锁定。行级锁定允许多个会话同时写入表&#xff0c;适用于多用户、高并发和OLTP应用。表级锁定只允许一个会话一次更新表&#xff0c;适用于只读、主要读取或单用户应用。 比如mysql开启一个窗口执行 begin; update xc_county_a…

【STM32】飞控设计

【一些入门知识】 1.飞行原理 【垂直运动】 当 mg&#xff1e;F1F2F3F4&#xff0c;此时做下降加速飞行 当 mg&#xff1c;F1F2F3F4&#xff0c;此时做升高加速飞行 当 mgF1F2F3F4 &#xff0c;此时垂直上保持匀速飞行。 【偏航飞行】 ω 4 ω 2 ≠ ω 1 ω 3 就会产生水…

我的考研经历

当我写下这篇文章时&#xff0c;我已经从考研 的失败中走出来了&#xff0c;考研的整个过程都写在博客日志里面了&#xff0c;在整理并阅读考研的日志时&#xff0c;想写下一篇总结&#xff0c;也算是为了更好的吸取教训。 前期日志模板&#xff1a;时间安排的还算紧凑&#x…

git如何将本地仓库的代码提交到远程仓库

首先复制需要克隆的远程仓库的地址&#xff1a; git clone https://github.com/your-username/your-repository.git 先将远程仓库的文件拉去到本地仓库&#xff1a; git pull origin main添加指定文件 git add XXX 添加当前目录下所有未追踪&#xff08;untracked&#xf…

【启明智显分享】Model系列工业级HMI芯片:开源RISC-V+RTOS实时系统,开放!高效!

前言 「Model系列」芯片是启明智显针对工业、行业以及车载产品市场推出的系列HMI芯片&#xff0c;主要应用于工业自动化、智能终端HMI、车载仪表盘、两轮车彩屏仪表、串口屏、智能中控、智能家居、充电桩显示屏、储能显示屏、工业触摸屏等领域。此系列具有高性能、低成本的特点…

C4D如何预览动画?C4D动画云渲染助力

C4D是一款功能丰富的3D设计软件&#xff0c;以其快速的预览渲染和多样的渲染插件而闻名&#xff0c;其卓越的渲染效果赢得了CG行业专业人士的广泛赞誉。尽管C4D的渲染功能十分强大&#xff0c;但对于初学者而言&#xff0c;其复杂的渲染设置可能会带来一些挑战。本文一起来看看…

最好用的邮箱管理软件推荐,邮箱管理软件哪个好?(干货篇)

在快节奏的工作与生活中&#xff0c;有效管理电子邮件成为提升个人与团队效率的关键。 面对海量信息流&#xff0c;一款好的邮箱管理软件不仅能够帮助我们高效地整理收件箱&#xff0c;还能确保重要邮件不会错过&#xff0c;同时提升通讯的便捷性和安全性。 本文将为您推荐几款…

Http协议JSON格式

1. 计算机网络 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统。 思考:计算机网络…