前端开发最常见面试题—css(含答案)

1、什么是盒子模型?
在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(content),元素的内边距(padding),元素的边框(border),元素的外边距(margin)四个部分。这四个部分占有的空间中,有的部分可以显示相应的内容,而有的部分只用来分隔相邻的区域或区域。4个部分一起构成了css中元素的盒模型。

2、CSS选择符有哪些?哪些属性可以继承?
id选择器( # myid)
类选择器(.myclassname)
标签选择器(div, h1, p)
相邻选择器(h1 + p)
子选择器(ul > li)
后代选择器(li a)
通配符选择器(*)
属性选择器(a[rel = “external”])
伪类选择器(a:hover, li:nth-child)
可继承的样式: font-size font-family color
不可继承的样式:border padding margin width height ;

3、CSS优先级算法如何计算?
优先级就近原则,同权重情况下样式定义最近者为准。
载入样式以最后载入的定位为准。
优先级为:!important > id > class > tag important比内联优先级高

4、CSS3新增伪类有那些?举例:
p:first-of-type 选择属于其父元素的首个 p元素的每个 p元素。
p:last-of-type 选择属于其父元素的最后 p元素的每个 p元素。
p:only-of-type 选择属于其父元素唯一的 p元素的每个 p元素。
p:only-child 选择属于其父元素的唯一子元素的每个 p元素。
p:nth-child(2) 选择属于其父元素的第二个子元素的每个 p元素。
:after 在元素之前添加内容,也可以用来做清除浮动。
:before 在元素之后添加内容
:enabled 控制表单可用
:disabled 控制表单控件的禁用状态。
:checked 单选框或复选框被选中。

5、display有哪些值?说明他们的作用。
block:像块类型元素一样显示。
none:元素隐藏
inline-block:像行内元素一样显示,但其内容像块类型元素一样显示。 一般很少用到
list-item:像块类型元素一样显示,并添加样式列表标记。
table:此元素会作为块级表格来显示
inherit:规定应该从父元素继承 display属性的值

6、position包含几种属性?absolute和relative的区别?
static:默认状态、没有定位、正常流
inherit:从父元素集成position属性的值
fixed:生成绝对定位的元素(相对于浏览器窗口进行定位)
absolute:生成绝对定位的元素(相位与static定位以外的第一个父元素定位)
relative:生成相对定位的元素(相对于其正常位置定位)
absolute和relative区别:父元素的padding对relative的子元素布局有影响,absolute的子元素不受影响

7、CSS3有哪些新特性?
圆角:(border-radius:8px)
多列布局:(column-count/column-gap/column-rule) 不用,本身有bug
阴影和反射:(Shadow\Reflect)
文字特效:(text-shadow)
文字阴影文字渲染:(Text-decoration)
下划线之类的线性渐变(gradient)
转换 (transform)
过渡(transition)
动画(animation)

8、浮动元素引起的问题和解决办法?
浮动元素引起的问题:
(1)父元素的高度无法被撑开,影响与父元素同级的元素
(2)与浮动元素同级的非浮动元素(内联元素)会跟随其后
(3)若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构
解决办法:
(1)使用空标签清除浮动。弊端就是增加了无意义标签。
style=“clear:both;
(2)使用overflow。给包含浮动元素的父标签添加css属性 overflow:auto
(3)使用after伪类:
#parent:after{
content:” ";
height:0;
visibility:hidden;
display:block;
clear:both;
}

9、css sprite是什么,有什么优缺点。
概念:将多个小图片拼接到一个图片中。通过background-position和元素尺寸调节需要显示的背景图案。
优点:减少HTTP请求数,极大地提高页面加载速度。增加图片信息重复度,提高压缩比,减少图片大小。更换风格方便,只需在一张或几张图片上修改颜色或样式即可实现。
缺点:图片合并麻烦,维护麻烦,修改一个图片可能需要从新布局整个图片,样式。

10、如何通过css 实现元素的垂直水平居中?注意:前提是元素没有固定的宽高
(实现方法有多种,以下是其中一种)
.ele{
/设置元素绝对定位/
position:absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}

11、px和em的区别
相同点:px和em都是长度单位;
异同点:px的值是固定的,指定是多少就是多少,计算比较容易。em得值不是固定的,并且em会继承父级元素的字体大小。
浏览器的默认字体高都是16px。所以未经调整的浏览器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em。

12、display与visibility有何异同?
display可以有很多值,visibility只有两个常用值:visible、hidden。
当display为none、visibility为hidden时都会隐藏元素。但display会隐藏掉元素空间,visibility会保留元素空间。

13、什么是响应式设计?响应式设计的基本原理是什么?
响应式设计就是为了实现根据不同设备环境自动响应及调整网页布局的一种设计方案。基本原理就是利用css的媒体查询功能更具不同屏幕的大小,向下兼容设备、移动优先,达到响应的效果。

14、响应式布局的原理?
Meta标签定义:
使用 viewport meta 标签在浏览器上控制布局
meta name=“viewport” content=“width=device-width,initial-scale=1,maximumscale=1” />
使用媒体查询Media Queries适配对应样式:
@media only screen and (min-width:768px)and(max-width:1024px){}
@media only screen and (width:320px)and (width:768px){}
百分比布局:宽度不固定,可以使用百分比
#head{width:100%;}
#content{width:50%;}
响应式图片
#wrap img{ max-width:100%; height:auto;}
字体设置
一个响应式的字体应关联它的父容器的宽度,这样才能适应客户端屏幕。css3引入了新的单位叫做rem,和em类似,但相对于Html元素,rem更方便使用,而em是相对于父级元素的:
html{font-size:100%;}
完成后,可以定义响应式字体:
@media (min-width:640px){body{font-size:1rem;}}
@media (min-width:960px){body{font-size:1.2rem;}}
@media (min-width:1200px){body{font-size:2rem;}}

<think>好的,我现在要帮用户整理前端开发CSS常见的面试题。首先,我需要回忆一下自己学过的CSS知识,以及常见的面试问题。可能用户正在准备面试,需要全面且有条理的内容。我需要分门别类,把问题组织得清晰易懂,方便用户复习。 首先,常见的CSS面试题通常包括盒模型、布局方式、选择器、优先级、响应式设计、Flexbox和Grid、BFC、居中方法、动画、预处理器等。我应该每个类别列举几个典型问题,并给出简要的解答,但用户可能不需要太详细的解释,而是需要关键点提示,方便他们回忆或深入查找资料。 比如盒模型方面,可能会问标准盒模型和IE盒模型的区别。这需要解释content-box和border-box的区别。然后布局方面,传统布局、Flexbox和Grid的区别及应用场景。还有清除浮动的方法,这也是经典问题,可能需要提到clearfix技巧或者使用overflow属性。 选择器部分,常见的有类选择器、ID选择器、属性选择器等,以及它们的优先级计算,比如内联样式、ID、类、元素选择器的权重。响应式设计可能会问媒体查询的使用,或者移动端适配的方案,比如viewport设置或者rem布局。 Flexbox和Grid是现在流行的布局方式,需要解释容器和项目的属性,比如justify-content、align-items,以及Grid的网格布局。BFC(块级格式化上下文)的问题通常会问如何触发BFC以及它的作用,比如清除浮动、防止外边距重叠等。 居中问题,水平垂直居中的多种实现方式,比如Flexbox、绝对定位+transform、Grid等。动画方面,关键帧动画和过渡的区别,如何实现渐变效果。预处理器如Sass/Less的区别,变量、嵌套、混入等功能的用法。 另外,还有一些其他问题,比如CSS3新特性(阴影、渐变、过渡等),伪类和伪元素的区别,CSS优化方法(如减少重排重绘、压缩代码),CSS模块化的方案(如CSS Modules、BEM命名规范)等。 我需要确保每个问题都是面试中高频出现的,同时答案要准确,避免错误。比如在盒模型中,标准盒模型的宽度是content,而IE盒模型包括border和padding。在优先级计算时,内联样式权重大于ID选择器。BFC的触发方式包括overflow: hidden、float不为none、display: inline-block等。 可能还需要注意一些容易混淆的概念,比如Flexbox的一维布局和Grid的二维布局区别,伪类(如:hover)和伪元素(如::before)的不同用法。在响应式设计中,媒体查询的断点设置,以及移动端适配的rem和vw/vh单位的应用。 另外,用户可能想知道实际应用中的问题,比如如何解决样式冲突、CSS性能优化技巧、如何实现特定布局(圣杯布局、双飞翼布局)等。虽然这些可能部分属于布局问题,但可以作为扩展内容。 最后,我需要组织这些内容,分点列出问题和答案,结构清晰,便于用户快速浏览和记忆。可能需要使用标题和子标题来划分不同的主题,但根据用户的要求,回答应使用中文,并且按照用户给出的系统级指令,数学公式需要用正确格式,但CSS问题中可能较少涉及数学公式,不过如果有的话需要正确应用LaTeX。 检查是否有遗漏的重要主题,比如CSS Sprites雪碧图的作用(减少HTTP请求),CSS变量(自定义属性)的使用,以及现代CSS特性如CSS Houdini的概念。另外,可能会有关于CSS框架的问题,如Bootstrap的使用经验,但可能属于加分项而非基础。 总结下来,我需要整理大约10个左右的常见主题,每个主题下列出1-2个典型问题,并给出简明扼要的答案要点。确保覆盖全面,重点突出,语言简洁准确,符合面试准备的需求。</think>以下是前端开发中常见的CSS面试题及核心知识点整理,按主题分类便于系统复习: --- ### 一、盒模型 **问题1:标准盒模型与IE盒模型区别?** - **标准盒模型** (`box-sizing: content-box`): `width/height` = 内容区域(content)的尺寸。 - **IE盒模型** (`box-sizing: border-box`): `width/height` = 内容 + 内边距(padding) + 边框(border)的总和。 --- ### 二、布局方式 **问题2:如何实现元素水平垂直居中?** - **Flexbox**: ```css .parent { display: flex; justify-content: center; align-items: center; } ``` - **绝对定位 + Transform**: ```css .child { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); } ``` --- ### 三、选择器与优先级 **问题3:CSS选择器优先级规则?** 优先级由高到低: 1. `!important` 2. 内联样式(如`style="color: red;"`) 3. ID选择器(`#id`) 4. 类/伪类/属性选择器(`.class`, `:hover`, `[type="text"]`) 5. 元素/伪元素选择器(`div`, `::before`) 6. 通配符(`*`) --- ### 四、浮动与清除浮动 **问题4:如何清除浮动?** - **Clearfix Hack**: ```css .clearfix::after { content: ""; display: block; clear: both; } ``` - **父元素设置** `overflow: auto` 或 `overflow: hidden`。 --- ### 五、Flexbox与Grid **问题5:Flexbox与CSS Grid的区别?** - **Flexbox**: 一维布局(行或列),适合组件内元素排列。 - **Grid**: 二维布局(行+列),适合整体页面结构。 --- ### 六、BFC(块级格式化上下文) **问题6:BFC的作用及触发方式?** - **作用**: 隔离外部元素,避免外边距重叠、清除浮动。 - **触发方式**: `overflow: hidden`、`float: left/right`、`display: inline-block`、`position: absolute/fixed`。 --- ### 七、响应式设计 **问题7:如何实现移动端适配?** - **Viewport设置**: ```html <meta name="viewport" content="width=device-width, initial-scale=1"> ``` - **媒体查询(Media Queries)**: ```css @media (max-width: 768px) { ... } ``` - **REM布局**: 基于根元素字体大小(如`1rem = 16px`)动态调整。 --- ### 八、动画与过渡 **问题8:CSS动画与过渡的区别?** - **过渡(Transition)**: 属性变化时平滑过渡(如`:hover`触发)。 - **动画(Animation)**: 通过`@keyframes`定义复杂动画,可循环或延迟执行。 --- ### 九、预处理器 **问题9:Sass/Less的优点?** - 支持变量、嵌套、混入(Mixin)、函数等特性。 - 模块化开发,提升代码复用性。 --- ### 十、性能优化 **问题10:如何减少CSS重排(Reflow)?** - 避免频繁操作DOM样式。 - 使用`transform`和`opacity`实现动画(触发GPU加速)。 - 将复杂元素设置为`position: absolute/fixed`,脱离文档流。 --- ### 高频扩展问题 1. **伪类 vs 伪元素**: - 伪类(如`:hover`)表示元素状态。 - 伪元素(如`::before`)创建虚拟元素。 2. **CSS Sprites**: 合并小图标减少HTTP请求。 3. **CSS变量**: 使用`--var-name`定义,`var(--var-name)`调用。 --- 掌握以上内容可覆盖80%的CSS面试考点,建议结合实际代码练习加深理解!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值