1、浏览器怎么知道CSS选择器要渲染哪个元素?
答:(1)解析HTML文档
(2)构建CSSOM(CSS对象模型)
(3)匹配选择器
(4)计算样式
(5)渲染树构建
(6)布局(回流)
(7)绘制(重绘)
2、清除浮动有哪些方式?
答:(1) 额外的清除元素:在浮动元素后添加一个空元素,并设置 clear: both; 属性。
(2)伪元素:在父元素上使用 :after 伪元素,并设置 content 和 display: table; 或 display: block; 来清除浮动。
(3)Flexbox:将父元素设置为Flex布局,这样子元素的浮动不会影响布局。
(4)Grid布局:将父元素设置为Grid布局,同样可以避免浮动影响。
(5)Overflow属性:给父元素设置 overflow: auto; 或 overflow: hidden; ,使其包含浮动子元素。
(6)双栏布局:使用双栏布局技术,其中一栏用于内容,另一栏用于清除浮动。
(7)BFC(块格式化上下文):通过某些CSS属性(如 overflow: hidden; )创建BFC,以包含浮动元素。
3、伪类和伪元素的区别?
答:(1)功能:伪类基于元素的状态,伪元素基于元素的位置。
(2)文档树:伪类不创建新节点,伪元素创建虚拟的新节点。
(3)使用场景:伪类常用于交互,伪元素常用于装饰。
4、margin下边距重叠问题?(块元素的父子元素之间外边距塌陷)
答:(1)问题:在CSS中,当两个垂直方向上的块级元素(block-level elements)相邻放置时,它们的垂直外边距(margin)可能会发生重叠现象,这种现象被称为“外边距折叠”(margin collapsing)。
(2)以下是外边距重叠的一些要点:相邻元素、外边距计算方式、方向性(垂直)、清除浮动、BFC。
5、Uniapp中怎么区分微信和支付宝?
答:(1)使用 uni.getEnv API:这个API可以获取当前的运行环境,通过检查返回值来确定是微信小程序还是支付宝小程序。
(2)条件编译:Uniapp支持条件编译,可以使用 #ifdef MP-WEIXIN 和 #ifdef MP-ALIPAY 来编写特定于微信或支付宝的代码。
(3)平台特定的API调用:根据微信和支付宝提供的平台特定API来区分,因为它们可能有不同的API实现。
6、什么是预处理语言?
答:预处理语言通常指的是在实际编译或解释之前,对源代码进行处理的编程语言或工具。比如sass、less等。
7、遇到过哪些浏览器的兼容性问题?
答:(1)CSS前缀:
问题:某些CSS属性需要浏览器前缀,如 -webkit- 、 -moz- 等。
解决方法:使用Autoprefixer工具自动添加所需的前缀。
(2)Flexbox和Grid布局:
问题:旧版浏览器可能不支持Flexbox或CSS Grid。
解决方法:使用Flexbox或Grid的polyfills,或者回退到更传统的布局方法,如浮动(floats)。
(3)HTML5和CSS3特性:
问题:旧版浏览器可能不完全支持HTML5和CSS3。
解决方法:使用特性检测库(如Modernizr)来检测浏览器支持情况,并提供回退方案。
(4)JavaScript新特性:
问题:旧版浏览器可能不支持ES6+的新特性。
解决方法:使用Babel等工具将ES6+代码转译为ES5代码。
(5)跨域问题:
问题:不同浏览器对CORS的支持可能不同。
解决方法:确保服务器正确设置CORS头部,或者使用JSONP作为替代方案(仅限于GET请求)。
更多详情:爱米的前端小笔记(csdnxitujuejinzhiHuBaidu小红shu)同步更新,等你来看!都是利用下班时间整理的,整理不易,大家多多👍💛➕🤔哦!你们的支持才是我不断更新的动力!