首页 程序笔记 2024年前端CSS面试题

2024年前端CSS面试题

1.说说你对盒子模型的理解?

盒子模型是CSS中用于描述元素的一种模型,将元素看作一个盒子,盒子由边框(border)、内边距(padding)、内容(content)和外边距(margin)四部分组成。

边框是盒子周围的一条线,可以设置颜色、宽度等属性。

内边距是盒子内容和边框之间的空白区域,可以设置颜色、宽度等属性。

内容是盒子中显示的文字、图片等内容。

外边距是盒子和其他盒子之间的空白区域,可以设置颜色、宽度等属性。

盒子模型分为两种:标准盒模型和弹性盒模型。标准盒模型是CSS1中定义的盒子模型,默认情况下,所有元素都使用标准盒模型。弹性盒模型是CSS3中定义的盒子模型,可以根据元素的宽度或高度进行自适应。

2谈谈你对BFC的理解?

BFC(Block Formatting Context)是CSS中的一个概念,用于解决浮动元素之间相互影响的问题。BFC是指由一个或多个块元素组成的区域,这些块元素之间的浮动元素不会相互影响。

BFC可以通过以下两种方式创建:

使用display: block或display: flex或display: grid设置元素的display属性。

使用float: left或float: right设置元素的float属性。

BFC可以解决以下问题:

浮动元素之间的塌陷问题。

浮动元素与其他元素的边距和内边距的冲突问题。

浮动元素与表格的冲突问题。

3.什么是响应式设计?响应式设计的基本原理是什么?如何做?

响应式设计是指网站或应用程序能够根据不同的屏幕尺寸进行自动适配的设计。响应式设计的基本原理是使用CSS媒体查询来匹配不同屏幕尺寸的设备。

响应式设计的实现方法主要有以下两种:

使用CSS媒体查询来匹配不同屏幕尺寸的设备。

使用CSS flex布局或grid布局来实现自适应布局。

4.元素水平垂直居中的方法有哪些?如果元素不定宽高呢?

元素水平垂直居中的方法主要有以下几种:

使用text-align: center设置元素的水平居中。

使用margin-left: auto; margin-right: auto;设置元素的水平居中。

使用display: flex; justify-content: center;设置元素的水平居中。

使用display: grid; place-content: center;设置元素的水平居中。

使用line-height: height;设置元素的垂直居中。

使用margin-top: auto; margin-bottom: auto;设置元素的垂直居中。

使用display: flex; align-items: center;设置元素的垂直居中。

使用display: grid; place-content: center; align-items: center;设置元素的垂直居中。

如果元素不定宽高,可以使用position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);来实现水平垂直居中。

5.如何实现两栏布局,右侧自适应?三栏布局中间自适应呢?

实现两栏布局,右侧自适应,可以使用以下方法:

.container {
  width: 100%;
  display: flex;
  justify-content: space-between;
}

.left-column {
  width: 50%;
}

.right-column {
  width: 50%;
  flex: 1;
}

实现三栏布局,中间自适应,可以使用以下方法:

.container {
  width: 100%;
  display: flex;
  justify-content: space-between;
}

.left-column {
  width: 25%;
}

.middle-column {
  width: 50%;
  flex: 1;
}

.right-column {
  width: 25%;
}

6.css选择器有哪些?优先级?哪些属性可以继承?

CSS选择器可以根据元素的属性、位置、类型等进行选择。CSS选择器主要有以下几种:

标签选择器:根据元素的标签名称进行选择。

类选择器:根据元素的类属性进行选择。

ID选择器:根据元素的ID属性进行选择。

组合选择器:根据多个选择器进行选择。

伪类选择器:根据元素的状态进行选择。

伪元素选择器:根据元素的结构进行选择。

CSS选择器的优先级由以下几点决定:

选择器的类型:ID选择器的优先级最高,其次是类选择器、标签选择器、组合选择器、伪类选择器、伪元素选择器。

选择器的顺序:在同一级别中,选择器出现的顺序越靠前,优先级越高。

!important声明:使用!important声明的样式将覆盖所有其他样式。

以下是CSS选择器的优先级:

选择器类型 优先级

ID选择器 1

类选择器 2

标签选择器 3

组合选择器 4

伪类选择器 5

伪元素选择器 6

CSS属性可以根据以下几点进行继承:

所有属性都可以由父元素向子元素继承,除非父元素设置了inherit属性或!important声明。

以下属性不可以继承:

定位相关属性:position、top、right、bottom、left、z-index

背景相关属性:background-image、background-repeat、background-position、background-color、background-clip、background-origin、background-size

边框相关属性:border-width、border-style、border-color、border-radius

外边距相关属性:margin-top、margin-right、margin-bottom、margin-left

内边距相关属性:padding-top、padding-right、padding-bottom、padding-left

文本相关属性:font-family、font-size、font-style、font-weight、font-variant、font-stretch、line-height、color

字体相关属性:letter-spacing、word-spacing、text-align、text-decoration、text-transform、text-indent、text-overflow、text-shadow

列表相关属性:list-style-type、list-style-position、list-style-image

表格相关属性:border-collapse、border-spacing

表格单元格相关属性:width、height、border-width、border-style、border-color、border-radius、margin、padding

7.css中,有哪些方式可以隐藏页面元素?区别?

CSS中,有以下几种方式可以隐藏页面元素:

使用display: none属性来完全隐藏元素。

使用visibility: hidden属性来隐藏元素,但元素仍会占用空间。

使用opacity: 0属性来使元素透明,从而达到隐藏的效果。

区别

display: none属性完全隐藏元素,元素不会占用空间。

visibility: hidden属性隐藏元素,但元素仍会占用空间。

opacity: 0属性使元素透明,从而达到隐藏的效果,但元素仍会占用空间。

8.如何实现单行/多行文本溢出的省略样式?

实现单行/多行文本溢出的省略样式,可以使用以下方法:

使用text-overflow: ellipsis属性来设置溢出文本的省略样式。

使用white-space: nowrap属性来禁止文本换行。

使用overflow: hidden属性来隐藏溢出文本。

9.cSS如何画一个三角形?原理是什么?

CSS可以使用border-bottom属性来画一个三角形。border-bottom属性可以设置边框的宽度、样式和颜色。

示例

.triangle {
  border-bottom: 10px solid red;
}

原理

border-bottom属性设置的边框宽度为10px,样式为solid,颜色为red。因此,将会在元素的底部绘制一个10px宽、红色的边框,从而形成一个三角形。

10.如何使用css完成视差滚动效果?

视差滚动效果是指当页面滚动时,背景图片或元素会以不同的速度滚动,从而产生一种深度或运动的错觉。

CSS可以使用transform属性和translate()函数来实现视差滚动效果。

示例

.bg {
  background-image: url("image.png");
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
}

.element {
  width: 100px;
  height: 100px;
  position: absolute;
  top: 0;
  left: 0;
  transform: translate(-50%, -50%);
}

@media (min-width: 768px) {
  .bg {
    transform: translate(-50%, -50%) scale(0.5);
  }

  .element {
    transform: translate(-50%, -50%) scale(0.7);
  }
}

效果

<div class="bg"></div>
<div class="element"></div>

原理

transform: translate(-50%, -50%)属性将元素沿着水平和垂直方向平移50%。scale(0.5)属性将元素缩小到原来的一半。

11.csS3新增了哪些新特性?

CSS3新增了许多新特性,包括:

Flex布局:Flex布局是一种新的布局方式,可以实现更加灵活的布局。

Grid布局:Grid布局是一种网格布局方式,可以实现更加精确的布局。

多列布局:多列布局可以将元素分成多个列,从而实现更加紧凑的布局。

响应式布局:响应式布局可以根据不同屏幕尺寸,自动适应不同的布局。

媒体查询:媒体查询可以根据不同设备或浏览器,指定不同的样式。

伪类选择器:伪类选择器可以根据元素的状态或位置,选择元素。

伪元素选择器:伪元素选择器可以创建元素的虚拟子元素。

3D变换:3D变换可以将元素进行3D变换,实现一些特殊的效果。

过渡动画:过渡动画可以让元素在变化时更加自然。

动画:动画可以让元素进行动态变化。

字体图像:字体图像可以将字体转换为图像,实现一些特殊的效果。

SVG:SVG是一种可缩放矢量图形格式,可以用于创建复杂的图形。

12.css3动画有哪些?

CSS3动画有以下几种:

过渡动画:过渡动画可以让元素在变化时更加自然。

动画:动画可以让元素进行动态变化。

过渡动画

过渡动画可以让元素在变化时更加自然。过渡动画可以通过以下属性来设置:

transition-property: 设置动画的属性。

transition-duration: 设置动画的持续时间。

transition-timing-function: 设置动画的速度曲线。

transition-delay: 设置动画的延迟时间。

动画

动画可以让元素进行动态变化。动画可以通过以下属性来设置:

animation-name: 设置动画的名称。

animation-duration: 设置动画的持续时间。

animation-timing-function: 设置动画的速度曲线。

animation-delay: 设置动画的延迟时间。

animation-iteration-count: 设置动画的重复次数。

animation-direction: 设置动画的播放方向。

animation-fill-mode: 设置动画在动画完成后或被中断后元素的状态。

13.介绍一下grid网格布局

Grid布局是一种网格布局方式,可以实现更加精确的布局。Grid布局可以通过以下属性来设置:

grid-template-columns: 设置网格的列。

grid-template-rows: 设置网格的行。

grid-template-areas: 设置网格的区域。

grid-column-start: 设置元素在列中的起始位置。

grid-column-end: 设置元素在列中的结束位置。

grid-row-start: 设置元素在行中的起始位置。

grid-row-end: 设置元素在行中的结束位置。

place-content: 设置元素在网格中的布局方式。

justify-content: 设置元素在列中的布局方式。

align-items: 设置元素在行中的布局方式。

14.说说flexbox(弹性盒布局模型),以及适用场景?

Flexbox是一种新的布局方式,可以实现更加灵活的布局。Flexbox适用于以下场景:

水平布局

垂直布局

多列布局

流式布局

弹性布局

Flexbox的优势在于:

可以根据元素的宽度或高度进行自动布局

可以实现灵活的布局效果

可以实现响应式布局

Flexbox的缺点在于:

学习成本较高

在某些情况下可能不够灵活

15.说说设备像素.css像素、设备独立像素、dpr.ppi之间的区别?

设备像素、CSS像素、设备独立像素、dpr、ppi之间的区别:

设备像素:是指屏幕上的一个物理像素,通常是固定的。

CSS像素:是指在 CSS 中使用的像素单位,通常是设备像素的倍数。

设备独立像素:是指与设备像素无关的像素单位,通常是基于 16 的倍数。

dpr:是指设备像素密度,通常是指每英寸的像素数。

ppi:是指屏幕像素密度,通常是指每英寸的像素数。

区别:

属性 说明

设备像素 是指屏幕上的一个物理像素,通常是固定的

CSS 像素 是指在 CSS 中使用的像素单位,通常是设备像素的倍数

设备独立像素 是指与设备像素无关的像素单位,通常是基于 16 的倍数

dpr 是指设备像素密度,通常是指每英寸的像素数

ppi 是指屏幕像素密度,通常是指每英寸的像素数

16.说说em/px/rem/vh/vw区别?

属性 说明

em 是指相对于父元素的字体大小

px 是指绝对像素单位,与设备像素密度有关

rem 是基于根元素的字体大小

vh 是指屏幕高度的百分比

vw 是指屏幕宽度的百分比

区别:

属性 说明

em 是指相对于父元素的字体大小,适用于响应式布局

px 是指绝对像素单位,与设备像素密度有关,不适用于响应式布局

rem 是基于根元素的字体大小,适用于响应式布局

vh 是指屏幕高度的百分比,适用于响应式布局

vw 是指屏幕宽度的百分比,适用于响应式布局

17.让Chrome支持小于12px的文字方式有哪些?区别?

使用 rem 单位:rem 单位是基于根元素的字体大小,因此可以通过设置根元素的字体大小来控制所有元素的字体大小。

使用 font-size: calc() 函数:font-size: calc() 函数可以通过计算来设置字体大小,因此可以通过设置一个较大的初始字体大小来支持小于 12px 的文字。

使用 font-size: -webkit-xxx-font-size() 属性:-webkit-xxx-font-size() 属性是 Chrome 专有的属性,可以用于支持小于 12px 的文字。

18.怎么理解回流跟重绘?什么场景下会触发?

回流和重绘是 CSS 渲染过程中的两个重要概念。

回流:是指浏览器重新计算元素的布局,包括元素的位置、大小、边距、内边距等。回流会导致元素的样式发生变化,因此需要重新绘制元素。

重绘:是指浏览器重新绘制元素,包括元素的背景、颜色、字体等。重绘不会导致元素的布局发生变化,但会影响元素的显示效果。

回流和重绘会导致页面性能下降,因此需要尽量避免。

回流触发场景:

元素的属性发生变化,例如 width、height、position、float 等。

元素的样式发生变化,例如 color、font-size、background-color 等。

元素的父元素发生变化,例如 display、position、float 等。

重绘触发场景:

元素的背景、颜色、字体等发生变化。

元素的 transform 属性发生变化。

元素的 opacity 属性发生变化。

19.说说对Css预编语言的理解?有哪些区别?

CSS 预编语言是指在 CSS 代码中使用 JavaScript 代码进行处理的技术。CSS 预编语言可以实现一些 CSS 无法实现的功能,例如:

动态生成 CSS 代码。

条件编译 CSS 代码。

模块化 CSS 代码。

CSS 预编语言有以下几种:

Sass:Sass 是 CSS 的模块化预编语言。Sass 可以使用类似 CSS 的语法来编写 CSS 代码,并提供一些 CSS 无法实现的功能,例如变量、嵌套、函数等。

Less:Less 是 CSS 的模块化预编语言。Less 与 Sass 类似,但 Less 的语法更接近 CSS。

Stylus:Stylus 是 CSS 的模块化预编语言。Stylus 的语法与 CSS 完全不同,因此学习成本较高。

CSS 预编语言的区别:

语言 特点

Sass 语法与 CSS 相似,提供更多功能

Less 语法与 CSS 相似,学习成本较低

Stylus 语法与 CSS 完全不同,学习成本较高

20.如果要做优化,cSS提高性能的方法有哪些?

CSS 提高性能的方法有以下几种:

使用 CSS 预编语言:CSS 预编语言可以帮助我们减少 CSS 代码的冗余,从而提高 CSS 的性能。

使用 CSS 变量:CSS 变量可以帮助我们避免重复使用 CSS 属性值,从而提高 CSS 的性能。

使用 CSS 嵌套:CSS 嵌套可以帮助我们将 CSS 代码组织得更加合理,从而提高 CSS 的性能。

使用 CSS 媒体查询:CSS 媒体查询可以帮助我们根据不同的屏幕尺寸或设备类型,生成不同的 CSS 代码,从而提高 CSS 的性能。

使用 CSS 性能工具:CSS 性能工具可以帮助我们分析 CSS 代码的性能,从而找到性能瓶颈并进行优化。

具体使用哪种方法可以根据实际情况来选择。

1

站心网

1.说说你对盒子模型的理解? 盒子模型是CSS中用于描述元素的一种模型,将元素看作一个盒子,盒子由边框(bor..

为您推荐

前端CSS框架Bootstrp和TailWind CSS如何选择?

在当今前端开发领域,CSS框架扮演着至关重要的角色,它们不仅简化了样式编写,也提高了开发效率。Bootstrap与Tailwind CSS作为两个备受瞩目的框架,各自拥有独特的特点与适用场景,开发者在项目启动之初,往往会面临..

2025年常见SQLServer数据库面试题

分享一些 2025年常见的 SQL Server 数据库面试题,涵盖基础知识、性能优化、高级查询、管理与运维等多个方面,适用于开发、DBA 及数据分析相关岗位的面试。1. SQL Server 的基本架构是什么?答案:SQL Server 的架构..

网站统计中的访问信息收集的前端实现

网站数据统计分析工具是网站站长和运营人员经常使用的一种工具,比较常用的有谷歌分析、百度统计和腾讯分析等等。所有这些统计分析工具的第一步都是网站访问数据的收集。目前主流的数据收集方式基本都是基于javascri..

前端开发必备网站

1.MDN开发者文档网址:https://developer.mozilla.org/zh-CN/2.CSS教程:https://www.schoolw3c.com/html-css/css/3.node中文网:http://cnodejs.org/getstart4.JavaScript教程网:https://zh.javascript.info/5.web开..

Tesseractjs 前端OCR识别提取图像文本字符工具 支持 100+ 种语言

Tesseract.js 简介Tesseract.js 是一个基于 Tesseract OCR 引擎的开源 JavaScript 库,用于在浏览器和 Node.js 环境中执行光学字符识别 (OCR)。它的特点是无需依赖服务器端支持,完全在客户端执行 OCR 操作。Tessera..

前端开发有必要学习Blazor吗?

前端开发者是否需要学习 Blazor 取决于你的技术栈、职业目标和项目需求。Blazor 是一个由 .NET 支持的框架,允许开发者使用 C# 进行前端开发,这对专注于 JavaScript 的传统前端开发者而言可能具有不同的吸引力和适..

十大前端开发框架

编者按:考虑到英文原文的长度以及可读性,十大前端开发框架将分成上下两部分呈现给大家。上半部分着重讲的是Bootstrap家族框架,第二节将会跟大家分享更多其他的框架。随着互联网的不断成熟以及我们越来越多的用各..

前端js拖拽插件库有哪些?

前端拖拽插件主要包括GoJS、vue.draggable、Vue.Draggable.next、gridster.js、interact.js等。以下是对这些插件的具体介绍:GoJSGoJS官网:https://gojs.netGoJS是一款功能丰富的JavaScript库,主要用于构建流程图..

尤雨溪成立VoidZero 成前端开发主流框架

尤雨溪和他的虚空帝国:VoidZero,一场前端的创世纪!2024年初秋,一个名字,VoidZero,如同代码中突然插入的一行神秘指令,瞬间扰乱了前端世界的平静。而这行指令的编写者,正是前端界的传奇,Vue.js之父—&md..

.NET 9 即将推出的功能Task.WhenEach

.NET 爱好者!我刚刚偶然发现了一个非常酷的新 PR,它被合并到 .NET 运行时存储库中,我想分享一个例子。希望您能为新的 .NET 版本大肆宣传!在即将到来的 .NET 9 版本中,我们预计会有一个名为 .它在这里让您的异步..

针对 Go 语言开发的 SQL 驱动模拟库

数据库交互是几乎所有应用程序不可或缺的一部分,开发者们常常需要对数据库进行各种操作,包括插入、更新、删除和查询等。然而,在开发过程中直接对真实数据库进行操作不仅耗时耗力,还可能带来数据一致性和安全性的..

DockerUI 中文可视化Docker管理工具使用示例

DockerUI 是由国内开发者打造的一款优秀的 Docker 可视化管理工具。该工具拥有简洁直观的UI界面,可以轻松进行Docker主机管理、集群管理,以及Docker任务的编排等操作。DockerUI不仅展示了资源利用率、系统信息和更..

Blazor的N种渲染模式原理和常见问题说明

我们从下面这幅图开始,下图显示了三种渲染模式,分别称之为静态SSR、交互式SSR(即之前的BlazorServer)、交互式CSR(即之前的BlazorWasm)。还有一种渲染模式BlazorHybrid,稍后说。一、先浅层理解一个图例静态SSR:经..

前端CSS常见的三种设计模式

CSS设计模式主要包括OOCSS、SMACSS和BEMCSS等。以下是对这些模式的具体介绍:OOCSS:面向对象的CSS,旨在编写高可复用、低耦合和高扩展的CSS代码。它将抽象(结构)和实现(样式)分离,抽离公共代码,以提高代码的..

WinToUSB | 把Windows塞进U盘里即插即用

不论是在外出差,还是在家临时办公,现在很多设备携带起来都不是那么方便,在这种情况下,有一个轻巧而高效的操作系统环境就显得格外关键。今天,要给大家介绍一款超级实用的便携式系统启动盘,凭借其独特功能和卓越..

.NET Framework被淘汰了吗?

.NET Framework并未完全被淘汰,但它的某些版本确实已经停止支持。微软在2023年11月10日停止了对.NET Framework 4.8之前的版本的支持。这一决策意味着使用这些旧版本的应用程序将不再获得安全更新和其他维护,从而可..

强大的 .NET Mock 框架 单元测试模拟库Moq使用教程

单元测试是确保代码质量和可靠性的重要手段。当我们的代码依赖于外部系统、数据库或第三方服务时,编写有效的单元测试可能会变得复杂且耗时。为了简化这一过程,模拟(Mocking)技术应运而生。在 .NET 生态系统中,M..

CLS 问题:超过 0.1(桌面设备) 是什么意思?

在网页设计和开发中,CLS(Cumulative Layout Shift)是指页面布局的累计偏移量。当一个用户与页面互动时,如果页面的某些元素突然改变位置或大小,导致整个布局发生偏移,就会产生布局偏移。这种偏移可能会影响用户..

Angular UT 模拟执行setTimeout

在 Angular 单元测试中,我们经常需要模拟异步操作,比如 setTimeout。提高测试速度: 真实环境下的 setTimeout 会阻塞测试,导致测试运行时间过长。确保测试的可靠性: 模拟 setTimeout 可以让我们更好地控制异步操..

JavaScript 的 sessionStorage 能否加锁?

直接给 sessionStorage 加锁是不可能的。sessionStorage 的本质: sessionStorage 是浏览器提供的一种用于在当前浏览器会话中存储数据的机制。它存储在客户端,数据仅在当前浏览器窗口或标签页中有效。加锁的必要性..

发表回复

返回顶部