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>
目录
相关文章
|
30天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
229 2
|
30天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
37 0
|
10天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
10天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
16 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
15天前
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
21 1
|
19天前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
68 6
|
16天前
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
15 1
|
19天前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
53 1
|
25天前
|
前端开发 JavaScript 安全
JavaScript前端开发技术
JavaScript(简称JS)是一种广泛使用的脚本语言,特别在前端开发领域,它几乎成为了网页开发的标配。从简单的表单验证到复杂的单页应用(SPA),JavaScript都扮演着不可或缺的角色。
19 3