2023年最新前端面试题汇总大全(含答案超详细,HTML,JS,CSS汇总篇)-- 持续更新 5

简介: 2023年最新前端面试题汇总大全(含答案超详细,HTML,JS,CSS汇总篇)-- 持续更新

41.什么是FOUC?如何避免?

FOUC: 即无样式内容闪烁,也可以称为文档样式短暂失效,主要就是指HTML已加载而样式表并未加载,此后样式表再加载而产生的闪烁现象。


如何避免:


样式表前置 : 根据浏览器渲染的顺序,将CSS在中引入或者嵌入

尽量使用link避免使用@import、

42.清除浮动的方式,各自优缺点?

额外标签法: 给谁清除浮动,就在其后额外添加一个空白标签


优点: 通俗易懂,书写方便。(不推荐使用)

缺点: 添加许多无意义的标签,结构化比较差。

父级添加overflow方法: 可以通过触发BFC的方式,实现清楚浮动效果。


优点: 简单、代码少、浏览器支持好


缺点: 内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素。不能和position配合使用,因为超出的尺寸的会被隐藏。


使用after伪元素清除浮动: :after方式为空元素的升级版,好处是不用单独加标签了。


优点: 符合闭合浮动思想,结构语义化正确,不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)

缺点: 由于IE6-7不支持

43.在网页中的应该使用奇数还是偶数的字体?为什么呢?

偶数字号相对更容易和 web 设计的其他部分构成比例关系

44.如果需要手动写动画,你认为最小时间间隔是多久,为什么?(阿里)

多数显示器默认频率是60Hz,即1秒刷新60次,所以理论上最小间隔为1/60*1000ms = 16.7ms

45.base64的原理及优缺点?

优点可以加密,减少了HTTTP请求

缺点是需要消耗CPU进行编解码

46.流体布局,圣杯布局,双飞翼布局?

圣杯布局和双飞翼布局的区别:


相同点

两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局,并且中间部分在HTML代码中要写在前边,这样它就会被优先加载渲染。

不同点

主要的不同之处就是在解决中间部分被挡住的问题时,采取的解决办法不一样。圣杯布局是在父元素上设置了padding-left和padding-right,在给左右两边的内容设置position为relative,通过左移和右移来使得左右两边的内容得以很好的展现,而双飞翼布局则是在中间这个div的外层又套了一个div来放置内容,在给这个中间的div设置margin-left和margin-right 。

47.postcss的作用

PostCSS是一个使用JS插件转换CSS的工具。这些插件可以支持变量和混合、transpile未来CSS语法、内联图像等。


作用:


支持未来的css: 使用cssnext书写未来的css(postcss-cssnext plugin)

编译速度大大提升。PostCSS 声称比预处理器快 3-30 倍。

丰富的插件系统,解放你的双手。

css模块化,将作用域限制于组件内,避免了全局作用域的问题,再也不用担心样式名重复了

Postcss属于css后处理器,动态编译css,也就是说,在运行的时候进行编译。


48.css有个content属性吗?有什么作用?有什么应用?

css的content属性专门应用在 before/after伪元素上,用于来插入生成内容。最常见的应用是利用伪类清除浮动。


49.水平居中方法

元素为行内元素,设置父元素text-align:center

如果元素宽度固定,可以设置左右margin为auto;

绝对定位和移动: absolute + transform

使用flex-box布局,指定justify-content属性为center

display设置为tabel-ceil

50.详细说一说css3的animation,transition

animation

css3的animation是css3新增的动画属性,这个css3动画的每一帧是通过@keyframes来声明的,keyframes声明了动画的名称,通过from、to或者是百分比来定义动画过程

每一帧动画元素的状态,通过animation-name来引用这个动画,同时css3动画也可以定义动画运行的时长、动画开始时间、动画播放方向、动画循环次数、动画播放的方式,

这些相关的动画子属性有:

animation-name定义动画名

animation-duration定义动画播放的时长

animation-delay定义动画延迟播放的时间

animation-direction定义 动画的播放方向

animation-iteration-count定义播放次数

animation-fill-mode定义动画播放之后的状态

animation-play-state定义播放状态,如暂停运行等

animation-timing-function定义播放的方式,如恒速播放、减速播放等。

transition

transition-property :规定设置过渡效果的css属性名称

transition-duration :规定完成过渡效果需要多少秒或毫秒

transition-timing-function :指定过渡函数,规定速度效果的速度曲线

transition-delay :指定开始出现的延迟时间

51.什么是css Hack?常见Hack

描述:是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSS hack就是让你记住这个标准),以达到应用不同的CSS样式的目的。


常见hack:


属性级Hack:比如IE6能识别下划线“”和星号“*”,IE7能识别星号“*”,但不能识别下划线””,而firefox两个都不能认识。

选择符级Hack:比如IE6能识别html .class{},IE7能识别+html .class{}或者*:first-child+html .class{}。

IE条件注释Hack:IE条件注释是微软IE5开始就提供的一种非标准逻辑语句。

52.浏览器是怎样解析CSS选择器的?

浏览器解析 CSS 选择器的方式是从右到左

53.抽离样式模块怎么写,说出思路

CSS可以拆分成2部分:公共CSS 和 业务CSS:

网站的配色,字体,交互提取出为公共CSS。这部分CSS命名不应涉及具体的业务

对于业务CSS,需要有统一的命名,使用公用的前缀。可以参考面向对象的CSS

54.元素竖向的百分比设定是相对于容器的高度吗?

不是


无论是竖向还是横向的百分比设定都是相对于容器的宽度。我们可以通过margin和padding来进行验证


55.全屏滚动的原理是什么? 用到了CSS的那些属性?

原理类似图片轮播原理,超出隐藏部分,滚动时显示

可能用到的CSS属性:overflow:hidden; transform:translate(100%, 100%); display:none;

56.设置元素浮动后,该元素的 display 值会如何变化

设置元素浮动后,该元素的 display 值自动变成 block


57.display:inline-block 什么时候会显示间隙?

相邻的 inline-block 元素之间有换行或空格分隔的情况下会产生间距

非 inline-block 水平元素设置为 inline-block 也会有水平间距

可以借助 vertical-align:top; 消除垂直间隙

可以在父级加 font-size:0; 在子元素里设置需要的字体大小,消除垂直间隙

把 li 标签写到同一行可以消除垂直间隙,但代码可读性差

58.pageX,clientX,screenX,offsetX区别?

pageX/Y: 对于整个页面来说,包括了被卷去的body部分的长度


clientX/Y: 点击位置距离当前body可视区域的x,y坐标


screenX/Y: 点击位置距离当前电脑屏幕的x,y坐标


offsetX/Y: 相对于带有定位的父盒子的x,y坐标

bbd6b4c095f44d67a103687b51d652fb.png

59.如何对不同IE版本浏览器做兼容测试?

使用工具切换IE版本,然后在IE浏览器运行测试


60.border- radius详解

在开发中我们经常通过正方形设置border- radius:50%来实现圆


border-radius参数选择:


border-radius:10px;将创建四个大小一样的圆角

border-radius:10px 15px 10px 15px; 四个值分别表示左上角、右上角、右下角、左下角

border-radius:10px 15px; 第一个值表示左上角、右下角;第二个值表示右上角、左下角

border-radius:10px 15px 5px; 第一个值表示左上角;第二个值表示右上角、左下角;第三个值表示右下角。

61.让页面里的字体变清晰,变细用CSS怎么做?

-webkit-font-smoothing: antialiased;


63.CSS3渐变?

CSS3 定义了两种类型的渐变(gradients):


线性渐变 - 向下/向上/向左/向右/对角方向

径向渐变 -(Radial Gradients)- 由它们的中心定义

线性渐变:


语法:background-image:linear-gradientdirection,color-stop1,color-stop2,……);

direction:渐变方向/角度,可选(45deg,to bottom,to top,to right,to left,to left top…)

color-stop:选择颜色rgba可以设置透明度,也可以设置色标点区域 例:rgba(255,255,255,0.3) 20%

径向渐变:


语法:background-image: radial-gradient(shape size at position, start-color, …, last-color);

shape 参数定义了形状。它可以是值 circle 或 ellipse。其中,circle 表示圆形,ellipse 表示椭圆形。默认值是 ellipse。

size:主要用来确定径向渐变的结束形状大小。如果省略了,其默认值为“farthest-corner”

at position起点:中心点的位置,可以是关键字(水平方向–left,center,right, 垂直方向–top,center,bottom),具体数值或百分比。

64.响应式布局和自适应布局的区别 ?

响应式布局是指通过CSS媒体查询,根据不同设备或视口宽度设置不同的样式来适应不同屏幕大小,实现页面的自动调整和优化。响应式布局可以使网站在桌面、平板电脑和手机等多种设备上都能够以最佳的显示效果呈现。

自适应布局是指根据屏幕尺寸选择合适的布局方式,使页面在不同设备上看起来更加美观和可读性更好。自适应布局相对来说更加固定一些,它的页面布局通常是由几个固定的布局组成,在不同的屏幕尺寸下选择不同的布局组合来进行展示,而不是像响应式布局那样直接改变样式。

65.z-index失效的几种情况

position属性未设置或值为static:如果要使用z-index属性,您需要首先将元素的position属性设置为relative、absolute或fixed。否则,即使设置了z-index,也无法使其生效。

父元素的z-index值高于子元素:当一个父元素和它的子元素都设置了z-index时,子元素的z-index可能会失效。

浮动元素的z-index失效:当使用浮动元素时,z-index属性可能不起作用。这是因为浮动本身就具有一定的层叠性质,并且浮动元素之间的堆叠顺序由它们在文档流中的先后顺序决定。

66.float之后display值改为?

block


67.css中的锚点

<a name="go">来我这里</a>
......
<a href="#go">我来了</a>

可以使用id属性来替代name属性 , 使用id来定义锚点,可以定位针对任何标签来定位。name属性只能针对a标签来定位。


68.移动端1px问题解决方案

利用 css 的 伪元素::after + transfrom 进行缩放

优点:全机型兼容,实现了真正的1px,而且可以圆角。适用于老项目。

缺点:暂用了after 伪元素,可能影响清除浮动。

设置viewport的scale值

优点:全机型兼容,直接写1px不能再方便。

缺点:适用于新的项目,老项目可能改动大。

使用组件库vant/ant-design-mobile

69.阻止移动端H5开发浏览器默认左右滑动行为

html{
    touch-action:none;
}
//此时上下左右都不可滑动
--------改动
html{
touch-action:none;
touch-action:pan-y;
}

70.CSS中 定位position 和 transform 移动元素的比较

性能方面:transform性能远高于position


通过translate移动,元素依然会占据其原始空间。如果通过position移动则会改变位置触发重绘


71.margin-left:auto,margin-right:auto,margin:auto区别

margin-left:auto 右对齐


margin-right:auto 左对齐


margin:auto 居中


72.css全屏滚动

overflow-y;overflow-x;scroll-snap-type;scroll-snap-align;必要属性

<style>
        html,
        body {
            height: 100%;
            margin: 0;
        }
        ul {
            margin: 0;
            /* scroll-behavior: smooth 让页面在滚动时拥有平滑的过渡效果,而不是瞬间跳转 */
            scroll-behavior: smooth;
            font-size: 40px;
            width: 100%;
            height: 100%;
            /* 
            overflow-y: auto 表示当内容超出元素的高度时,元素会显示垂直方向的滚动条以便用户浏览。如果内容不超出元素的高度,则不会显示滚动条。
            overflow-x: hidden 则表示当内容超出元素的宽度时,元素不会显示水平方向的滚动条,同时超出部分的内容也将被隐藏。
            */
            overflow-y: auto;
            overflow-x: hidden;
            border: 1px solid #000;
            /* 
            scroll-snap-type: y mandatory; 表示在垂直方向上开启滚动对齐功能,并强制要求元素对齐到滚动容器的边缘。这样可以确保每个子元素都在独立的、整数倍的位置停留,从而实现更加规整的页面布局。
            */
            scroll-snap-type: y mandatory;
            /*设置父级*/
            padding: 0;
        }
        li {
            height: 100%;
            width: 100%;
            flex-shrink: 0;
            /* 
            scroll-snap-align: center; 则表示对齐方式为中心对齐,当子元素的中心点(水平轴和垂直轴的中心点)与滚动容器的中心点重合时,就会触发对齐效果。
            */
            scroll-snap-align: center;
            /*子级设置*/
            text-align: center;
        }
        li:nth-child(1) {
            background-color: teal;
        }
        li:nth-child(2) {
            background-color: gold;
        }
        li:nth-child(3) {
            background-color: green;
        }
    </style>
  <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
目录
相关文章
|
1月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
1月前
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
|
18天前
纸屑飘落生日蛋糕场景js+css3动画特效
纸屑飘落生日蛋糕CSS3动画特效是一款js+css3制作的全屏纸屑飘落,生日蛋糕点亮庆祝动画特效。
35 3
|
28天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
35 6
|
1月前
|
JSON JavaScript 前端开发
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
本文介绍了JSONP的工作原理及其在解决跨域请求中的应用。首先解释了同源策略的概念,然后通过多个示例详细阐述了JSONP如何通过动态解释服务端返回的JavaScript脚本来实现跨域数据交互。文章还探讨了使用jQuery的`$.ajax`方法封装JSONP请求的方式,并提供了具体的代码示例。最后,通过一个更复杂的示例展示了如何处理JSON格式的响应数据。
38 2
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
|
1月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
42 4
|
1月前
|
前端开发 JavaScript
如何在 JavaScript 中访问和修改 CSS 变量?
【10月更文挑战第28天】通过以上方法,可以在JavaScript中灵活地访问和修改CSS变量,从而实现根据用户交互、页面状态等动态地改变页面样式,为网页添加更多的交互性和动态效果。在实际应用中,可以根据具体的需求和场景选择合适的方法来操作CSS变量。
|
1月前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
优化CSS和JavaScript加载
|
1月前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
Next.js和Nuxt.js在优化CSS和JavaScript加载方面提供了多种策略和工具。Next.js通过代码拆分、图片优化和特定的CSS/JavaScript优化措施提升性能;Nuxt.js则通过代码分割、懒加载、预渲染静态页面、Webpack配置和服务端缓存来实现优化。两者均能有效提高应用性能。
|
1月前
|
前端开发 JavaScript
用HTML CSS JS打造企业级官网 —— 源码直接可用
必看!用HTML+CSS+JS打造企业级官网-源码直接可用,文章代码仅用于学习,禁止用于商业
141 1