前端面试题(CSS篇三)

news2024/11/18 22:53:16

一、简单介绍使用图片 base64 编码的优点和缺点。

base64是一种图片处理格式,通过特定的算法将图片编码为一长串字符串,在页面显示的时候,可以使用该字符串来代替图片的url属性。

使用base64的优点:

        减少一个图片的http请求

使用base64的缺点:  

(1)根据base64的编码原理,编码后的大小会比原文件大小大1/3,如果把大图片编码到html/css中,不仅会造成文件体积的增加,影响文件的加载速度,还会增加浏览器对html或css文件解析渲染的时间。

(2)使用base64无法直接缓存,要缓存只能缓存包含base64的文件,比如HTML或者CSS,这相比域直接缓存图片的效果要差很多。

(3)兼容性的问题,ie8以前的浏览器不支持。

对于网站的小图标而言,可以使用base64图片来代替。

资料参考:

《玩转图片 base64 编码》icon-default.png?t=N7T8https://www.cnblogs.com/coco1s/p/4375774.html

《前端开发中,使用 base64 图片的弊端是什么?》icon-default.png?t=N7T8https://www.zhihu.com/question/31155574

《小 tip:base64:URL 背景图片与 web 页面性能优化》icon-default.png?t=N7T8https://www.zhangxinxu.com/wordpress/2012/04/base64-url-image-%E5%9B%BE%E7%89%87-%E9%A1%B5%E9%9D%A2%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/

二、'display'、'position'和'float'的相互关系?

(1)首先我们判断display属性是否为none,如果为none,则position和float属性的值不影响元素最后的表现。

(2)然后判断position的值是否为absolute或者fixed,如果是,则float属性失效,并且display的值应该被
设置为table或者block,具体转换需要看初始转换值。

(3)如果position的值不为absolute或者fixed,则判断float属性的值是否为none,如果不是,则display
的值则按上面的规则转换。注意,如果position的值为relative并且float属性的值存在,则relative相对
于浮动后的最终位置定位。

(4)如果float的值为none,则判断元素是否为根元素,如果是根元素则display属性按照上面的规则转换,如果不是,则保持指定的display属性值不变。

   总的来说,可以把它看作是一个类似优先级的机制,"position:absolute"和"position:fixed"优先级最高,有它存在
的时候,浮动不起作用,'display'的值也需要调整;其次,元素的'float'特性的值不是"none"的时候或者它是根元素的时候,调整'display'的值;最后,非根元素,并且非浮动元素,并且非绝对定位的元素,'display'特性值同设置值。

资料参考:

《position 跟 display、margincollapse、overflow、float 这些特性相互叠加后会怎么样?》icon-default.png?t=N7T8https://www.cnblogs.com/jackyWHJ/p/3756087.html

三、margin 重叠问题的理解。

相关知识点:

块级元素的上外边距(margin-top)与下外边距(margin-bottom)有时会合并为单个外边距,这样的现象称为“margin合并”。

产生折叠的必备条件:margin必须是邻接的!

而根据w3c规范,两个margin是邻接的必须满足以下条件:

•必须是处于常规文档流(非float和绝对定位)的块级盒子,并且处于同一个BFC当中。
•没有线盒,没有空隙,没有padding和border将他们分隔开
•都属于垂直方向上相邻的外边距,可以是下面任意一种情况
•元素的margin-top与其第一个常规文档流的子元素的margin-top
•元素的margin-bottom与其下一个常规文档流的兄弟元素的margin-top
•height为auto的元素的margin-bottom与其最后一个常规文档流的子元素的margin-bottom
•高度为0并且最小高度也为0,不包含常规文档流的子元素,并且自身没有建立新的BFC的元素的margin-top和margin-bottom


margin合并的3种场景:

(1)相邻兄弟元素margin合并。

解决办法:
•设置块状格式化上下文元素(BFC)

(2)父级和第一个/最后一个子元素的margin合并。

解决办法:

对于margin-top合并,可以进行如下操作(满足一个条件即可):
•父元素设置为块状格式化上下文元素;
•父元素设置border-top值;
•父元素设置padding-top值;
•父元素和第一个子元素之间添加内联元素进行分隔。

对于margin-bottom合并,可以进行如下操作(满足一个条件即可):
•父元素设置为块状格式化上下文元素;
•父元素设置border-bottom值;
•父元素设置padding-bottom值;
•父元素和最后一个子元素之间添加内联元素进行分隔;
•父元素设置height、min-height或max-height。

(3)空块级元素的margin合并。

解决办法:
•设置垂直方向的border;
•设置垂直方向的padding;
•里面添加内联元素(直接Space键空格是没用的);
•设置height或者min-height。

回答:

margin重叠指的是在垂直方向上,两个相邻元素的margin发生重叠的情况。

一般来说可以分为四种情形:

第一种是相邻兄弟元素的marin-bottom和margin-top的值发生重叠。这种情况下我们可以通过设置其中一个元素为BFC来解决。

第二种是父元素的margin-top和子元素的margin-top发生重叠。它们发生重叠是因为它们是相邻的,所以我们可以通过这一点来解决这个问题。我们可以为父元素设置border-top、padding-top值来分隔它们,当然我们也可以将父元素设置为BFC来解决。

第三种是高度为auto的父元素的margin-bottom和子元素的margin-bottom发生重叠。它们发生重叠一个是因为它们相邻,一个是因为父元素的高度不固定。因此我们可以为父元素设置border-bottom、padding-bottom来分隔它们,也可以为
父元素设置一个高度,max-height和min-height也能解决这个问题。当然将父元素设置为BFC是最简单的方法。

第四种情况,是没有内容的元素,自身的margin-top和margin-bottom发生的重叠。我们可以通过为其设置border、padding或者高度来解决这个问题。

四、对 BFC 规范(块级格式化上下文:block formatting context)的理解?

相关知识点:

块格式化上下文(Block Formatting Context,BFC)是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交互限定区域。

通俗来讲

•BFC是一个独立的布局环境,可以理解为一个容器,在这个容器中按照一定规则进行物品摆放,并且不会影响其它环境中的物品。
•如果一个元素符合触发BFC的条件,则BFC中的元素布局不受外部影响。

创建BFC

(1)根元素或包含根元素的元素
(2)浮动元素float=left|right或inherit(≠none)
(3)绝对定位元素position=absolute或fixed
(4)display=inline-block|flex|inline-flex|table-cell或table-caption
(5)overflow=hidden|auto或scroll(≠visible)

回答:

BFC指的是块级格式化上下文,一个元素形成了BFC之后,那么它内部元素产生的布局不会影响到外部元素,外部元素的布局也不会影响到BFC中的内部元素。一个BFC就像是一个隔离区域,和其他区域互不影响。

一般来说根元素是一个BFC区域,浮动和绝对定位的元素也会形成BFC,display属性的值为inline-block、flex这些属性时也会创建BFC。还有就是元素的overflow的值不为visible时都会创建BFC。

资料参考:

《深入理解 BFC 和 MarginCollapse》icon-default.png?t=N7T8https://www.w3cplus.com/css/understanding-bfc-and-margin-collapse.html

《前端面试题-BFC(块格式化上下文)》icon-default.png?t=N7T8https://segmentfault.com/a/1190000013647777

五、IFC 是什么?

IFC指的是行级格式化上下文,它有这样的一些布局规则:

(1)行级上下文内部的盒子会在水平方向,一个接一个地放置。
(2)当一行不够的时候会自动切换到下一行。
(3)行级上下文的高度由内部最高的内联盒子的高度决定。

资料参考:

《[译]:BFC 与 IFC》icon-default.png?t=N7T8https://segmentfault.com/a/1190000004466536#articleHeader5

《BFC 和 IFC 的理解(布局)》icon-default.png?t=N7T8https://blog.csdn.net/paintandraw/article/details/80401741

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

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

相关文章

倒退型自闭症与轻度自闭症有什么区别?

作为星贝育园自闭症儿童康复中心的一名专业教师,我深知家长们在面对自闭症谱系障碍(ASD)时的种种疑问与挑战,尤其是关于倒退型自闭症与轻度自闭症之间的区别。今天,我将从专业视角出发,深入浅出地解析这两种…

Java项目:基于SSM框架实现的德云社票务管理系统【ssm+B/S架构+源码+数据库+开题报告+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的德云社票务管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功…

在 Azure 云中开始使用适用于 Ubuntu 的 Grafana

介绍 Grafana 是一款开源工具,可用于可视化和分析数据。它特别适合跟踪计算机系统的运行情况。在构建微服务或其他类型的应用程序时,您可能需要分析日志数据、轻松可视化数据或设置特殊警报以接收有关系统中发生的某些事件的通知。 这就是为什么你可能…

【Python】已解决:(Python写入Excel表格报错)‘NoneType’ object has no attribute ‘write’

文章目录 一、分析问题背景二、可能出错的原因四、正确代码示例五、注意事项 已解决:(Python写入Excel表格报错)‘NoneType’ object has no attribute ‘write’ 一、分析问题背景 在处理Excel文件时,Python提供了多种库来方便…

【Python进阶】函数的扩展

函数 目录 函数 一、容器知识补充 1、字典遍历方法 2、遍历字典元素 keys()方法: values()方法: items()方法: 3、公共运算符 4、公共方法 二、函数介绍 1、函数的概念 2、引入函数 3、函数定义与调用 4、函数的参数 5、函数…

了解基于大模型的多模态风险内容识别技术研究

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 在 AIGC 多场景、多模态的应用中,平台用户输入的信息以及平台模型生成的内容中,可能存在大量涉及色情、敏感、暴力、违禁等风险元素。多模态风险内容识别是一种先进的内容安全分…

【C++】继承(一)

目录 1、继承的概念与定义 1.1 继承的概念 1.2 继承的定义 1.2.1 定义格式 1.2.2 继承基类成员访问方式的变化 2、基类和派生类对象赋值转换 3、继承中的作用域 4、派生类的默认成员函数 4.1 构造函数 4.2 拷贝构造 4.3 operator 4.4 析构函数 面向对象的三大特性是…

CAN转PN网关模块连接激光切割机的配置方法

激光切割机在工业生产中被广泛应用,而激光发射器与控制设备常以不同的协议存在两者之间,CAN总线和Profinet以各自的特点被广泛用于设备当中。本文将介绍介绍兴达易控CAN转Profinet网关模块(XD-PN_CAN20)连接 CAN 激光切割机的使用…

使用Python绘制双向条形图

使用Python绘制双向条形图 双向条形图效果代码 双向条形图 双向条形图用于比较两个类别的数值分布,条形在中轴线两侧对称排列。这种图表常用于显示两个变量的对比情况,例如男女不同年龄段人口数量对比。 效果 代码 import matplotlib.pyplot as plt i…

实现模型贴图的移动缩放旋转

技术:threejscanvasfabric 效果图: 原理:threejs中没有局部贴图的效果,只能通过map 的方式贴到模型上,所以说换一种方式来实现,通过canvasfabric来实现图片的移动缩放旋转,然后将整个画布以map…

APP项目测试 之 APP性能测试-- 性能测试工具(SoloPi工具)

1.SoloPi简介 (1)什么是SoloPi? SoloPi: 是一个无线化、非侵入式的 Android 自动化工具 ,具备 录制回放、性能测试 等功能。 (2)SoloPi的作用是什么? 基础性能测试:能够…

STM32-I2C硬件外设

本博文建议与我上一篇I2C 通信协议​​​​​​共同理解 合成一套关于I2C软硬件体系 STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担 特点: 多主机功能&#x…

[word] Word如何快速生成一段文本 #知识分享#学习方法

Word如何快速生成一段文本 Word如何快速生成一段文本?有时候我们会用一大段文字来做一些功能测试,不少朋友的做法就是脸滚键盘,一顿乱按,这样看起来文笔不通,看着也会比较难受,测试功能的效果也不怎么理想…

【全面讲解下Foxit Reader】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

微信小程序毕业设计-学生实习与就业管理系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

一款免费的PDF编辑软件,内置了OCR功能,识别效果好

主要是想分享给大家他的OCR功能,面对无法编辑的PDF或者图片,如何批量的转成文字或者带有格式的word文档,很多时候或者很多工具做的不理想,今天分享的这款工具应该是目前为止,我遇到的最好的批量OCR工具。他不是简单的O…

spring boot实现短信验证码功能

1、到阿里云网站申请 https://market.aliyun.com/products/5700000 2/cmapi00046920.html2、配置文件,可申请测试 sms:app-code: xxxxxxxxxtemplate-id: xxxxxxx3、使用restTemplate用于第三方接口调用 package com.example.rsocketclient.config;import org.spr…

笔记14:程序中的循环结构

生活中的循环现象: -日复一日,年复一年 -春夏秋冬,四季交替 -周日,周一,周二,周三,周四,周五,周六 -人生是一个轮回,多年后,又会回到最初的原点 …

Python学习从0开始——Kaggle实践可视化001

Python学习从0开始——Kaggle实践可视化001 一、创建和加载数据集二、数据预处理1.按name检查,处理重复值(查重)2.查看存在缺失值的列并处理(缺失值处理)2.1按行或列查看2.2无法推测的数据2.3可由其它列推测的数据 3.拆…

大数据Spark 面经

1: Spark 整体架构 Spark 是新一代的大数据处理引擎,支持批处理和流处理,也还支持各种机器学习和图计算,它就是一个Master-worker 架构,所以整个的架构就如下所示: 2: Spark 任务提交命令 一般我们使用shell 命令提…