详细前端面试题CSS篇--持续更新 2

简介: 详细前端面试题CSS篇--持续更新

21.px和em,rem区别?

px:绝对长度单位,像素px是相对于显示器屏幕分辨率来说的

em:相对长度单位,相对于当前对象内文本的font-size,em的值并不是固定的,em会继承父级元素的font-size(参考物是父元素的font-size)

rem:相对于html根元素的font-size


22. 1rem、1em、1vh、1px,vmin,vmax各自代表的含义?

rem

rem是全部的长度都相对于根元素元素。通常做法是给html元素设置一个字体大小,然后其他元素的长度单位就为rem。

em

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

元素的width/height/padding/margin用em的话是相对于该元素的font-size

vw/vh

全称是 Viewport Width 和 Viewport Height,视窗的宽度和高度,相当于 屏幕宽度和高度的 1%,不过,处理宽度的时候%单位更合适,处理高度的 话 vh 单位更好。

px

px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。

一般电脑的分辨率有{19201024}等不同的分辨率

19201024 前者是屏幕宽度总共有1920个像素,后者则是高度为1024个像素

vmin/vmax: 取视窗高度和宽度的最小值作为基准/取视窗高度和宽度的最大值作为基准。

如果窗口高度1080,宽度1920那么。 1vmin=1080px/100=10.8px 1vmax=1920px/100=19.2px。

23. CSS画一个三角形?

这属于简单的css考查,平时在用组件库的同时,也别忘了原生的css

.a {
    width: 0;
    height: 0;
    border-width: 100px;
    border-style: solid;
    border-color: transparent #0099CC transparent transparent;
    transform: rotate(90deg); /*顺时针旋转90°*/
}
<div class="a"></div>

24.元素水平垂直居中

利用定位+margin:auto

利用定位+margin:负值

利用定位+transform

table布局

flex布局

grid布局

25.响应式布局原理

什么是响应式: 一种网络页面设计布局,页面的设计与开发应当根据用户行为以及设备环境(系统平台,屏幕尺寸,屏幕定向等)进行相应的响应和调整

基本原理: 通过媒体查询检测不同的设备屏幕尺寸做处理,为了处理移动端,页面头部必须有meta声明viewport.

实现方式

媒体查询

百分比布局

vw/vh

rem

26.CSS定位方式?

static:元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。


relative:元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。


absolute:元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。


fixed:元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。


27.css sprite(雪碧图,精灵图)是什么,有什么优缺点?

CSSSprites(精灵图),将一个页面涉及到的所有图片都包含到一张大图中去,然后利用CSS的 background-image,background-repeat,background-position属性的组合进行背景定位。


优点:


减少HTTP请求,极大提高页面加载速度

增加图片信息重复度,提高压缩比,减少图片大小

更换风格方便,只需要在一张或几张图片上修改颜色或样式即可

缺点:


图片合并麻烦

维护麻烦

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

设备像素:又称为物理像素, 指设备能控制显示的最小物理单位,不一定是一个小正方形区块,也没有标准的宽高,只是用于显示丰富色彩的一个“点”而已


css像素: 适用于web编程,在 CSS 中以 px 为后缀,是一个长度单位 。css中长度分为两类:绝对单位和相对单位,px属于相对单位


设备独立像素: 与设备无关的逻辑像素,代表可以通过程序控制使用的虚拟像素,是一个总体概念 。我们常说的分辨率,不严谨来讲是指的设备独立像素。在javascript中我们可以通过 window.screen.width/ window.screen.height 来查看


dpr:设备像素比, 代表设备独立像素到设备像素的转换关系


ppi:像素密度, 表示每英寸所包含的像素点数目


29.margin 和 padding 的使用场景

需要在border外侧添加空白,且空白处不需要背景 (色)时,使用 margin;


需要在border内测添加空白,且空白处需要背景(色) 时,使用 padding。


30.对line-height的理解,赋值方式

概念:


line-height 属性设置行间的距离(行高),说的直白一点,就是设置两段段文本之间的距离如果我们把一段文本的line-height设置为父容器的高度就可以实现文本垂直居中了。

原理:


我们可以理解为将div分为三份,分别为上边距,内容,下边距。举例:div高度100px,字体为16px,那么上下边距计算为(100px-16px)/2

赋值方式:


带单位:px 是固定值,而 em 会参考父元素 font-size 值计算自身的行高

纯数字:会把比例传递给后代。例如,父级行高为 1.5,子元素字体为 18px,则子元素行高为 1.5 * 18 = 27px

百分比:将计算后的值传递给后代

31.谈谈你对BFC的理解?触发条件?应用场景?

概念: BFC即块级格式化上下文,它是页面中的一块渲染区域,并且有一套属于自己的渲染规则。BFC目的是形成一个相对于外界完全独立的空间,让内部的子元素不会影响到外部的元素


触发条件:


根元素,即HTML元素

浮动元素:float值为left、right

overflow值不为 visible,为 auto、scroll、hidden

display的值为inline-block、inltable-cell、table-caption、table、inline-table、flex、inline-flex、grid、inline-grid

position的值为absolute或fixed

应用场景:


防止margin重叠

清楚内部浮动

自适应多栏布局

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

两栏布局:


使用float左浮动左边栏,右边使用margin-left撑出左边栏宽度大小,为父元素添加BFC通过overflow:hidden开启。

flex布局

三栏布局:


下面三个方法原理与两栏布局第一个方法相同

两边使用 float,中间使用 margin

两边使用 absolute,中间使用 margin

两边使用 float 和负 margin

flex布局

display: table 实现

通过 display: table设置为表格,设置 table-layout: fixed`表示列宽自身宽度决定,而不是自动计算。

内层的左中右通过 display: table-cell设置为表格单元。

左右设置固定宽度,中间设置 width: 100% 填充剩下的宽度

grid网格布局

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

理解:flex布局意为“弹性布局”,可以 简便、完整、响应式地实现各种页面布局 。 容器中默认存在两条轴,主轴和交叉轴,呈90度关系。项目默认沿主轴排列,通过flex-direction来决定主轴的方向


属性:


flex-direction 决定主轴的方向

flex-wrap 决定容器内项目是否可换行

wrap,换行

justify-content 项目在主轴上的对齐方式

flex-start(默认值):左对齐

flex-end:右对齐

center:居中

space-between:两端对齐,项目之间的间隔都相等

space-around:两个项目两侧间隔相等

align-items 项目在交叉轴上如何对齐

flex-start:交叉轴的起点对齐

flex-end:交叉轴的终点对齐

center:交叉轴的中点对齐 垂直居中

baseline: 项目的第一行文字的基线对齐

stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度

align-content

34.介绍一下grid网格布局

理解:Grid 布局即网格布局,是一个二维的布局方式,由纵横相交的两组网格线形成的框架性布局结构,能够同时处理行与列


容器属性:


display:grid该容器是一个块级元素/inline-grid该容器是一个行内元素

grid-template-columns 属性,grid-template-rows 属性:

设置列宽,行高几行几列。如果重复宽高可通过repeat(3,200px)表示3行列,200px宽高

grid-row-gap 属性, grid-column-gap 属性, grid-gap 属性

设置行列间距,grid-gap是两者简写

grid-template-areas 属性:用于定义区域

grid-auto-flow 属性: 划分网格以后,容器的子元素会按照顺序 , 顺序就是由grid-auto-flow决定

项目属性:


grid-column-start 属性、grid-column-end 属性、grid-row-start 属性以及grid-row-end 属性: 指定网格项目所在的四个边框,分别定位在哪根网格线,从而指定项目的位置

grid-area 属性: 属性指定项目放在哪一个区域 。由grid-template-areas 属性划分区域

justify-self 属性、align-self 属性以及 place-self 属性

35.CSS3动画有哪些?

transition 实现渐变动画 transition动画详解


transform 转变动画 transform属性详解


animation 实现自定义动画 animation详解


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

回流:布局引擎会根据各种样式计算每个盒子在页面上的大小与位置

重绘:当计算好盒模型的位置、大小及其他属性后,浏览器根据每个盒子特性进行绘制

触发条件:


回流:

添加或删除可见的DOM元素

元素的位置发生变化

元素的尺寸发生变化(包括外边距、内边框、边框大小、高度和宽度等)

内容发生变化,比如文本变化或图片被另一个不同尺寸的图片所替代

页面一开始渲染的时候(这避免不了)

浏览器的窗口尺寸变化(因为回流是根据视口的大小来计算元素的位置和大小的)

重绘------ 触发回流一定会触发重绘

颜色的修改

文本方向的修改

阴影的修改

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

内联首屏关键CSS

避免使用css表达式

异步加载CSS

资源压缩

合理使用选择器

减少使用昂贵的属性 如 box-shadow/border-radius/filter/透明度/:nth-child 等

不要使用@import

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

单行文本溢出


white-space:设置文字在一行显示,不能换行

overflow:文字长度超出限定宽度,则隐藏超出的内容

text-overflow:规定当文本溢出时,显示省略符号来代表被修剪的文本

clip:当对象内文本溢出部分裁切掉

ellipsis:当对象内文本溢出时显示省略标记(…)

text-overflow只有在设置了overflow:hidden和white-space:nowrap才能够生效的

多行文本溢出省略


基于高度截断 – 伪元素 + 定位

position: relative:为伪元素绝对定位

overflow: hidden:文本溢出限定的宽度就隐藏内容)

line-height: 20px:结合元素高度,高度固定的情况下,设定行高, 控制显示行数

height: 40px:设定当前元素高度

::after {} :设置省略号样式 – 设置伪元素

position: absolute:给省略号绝对定位

content:“…”

基于行数截断 – 纯css

-webkit-line-clamp: 2:用来限制在一个块元素显示的文本的行数,为了实现该效果,它需要组合其他的WebKit属性)

display: -webkit-box:和-webkit-line-clamp结合使用,将对象作为弹性伸缩盒子模型显示

-webkit-box-orient: vertical:和-webkit-line-clamp结合使用 ,设置或检索伸缩盒对象的子元素的排列方式

overflow: hidden:文本溢出限定的宽度就隐藏内容

text-overflow: ellipsis:多行文本的情况下,用省略号“…”隐藏溢出范围的文本

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

Chrome 中文版浏览器会默认设定页面的最小字号是12px,英文版没有限制 。


解决方案:


zoom : “变焦”,可以改变页面上元素的尺寸,属于真实尺寸

-webkit-transform:scale(): 针对chrome浏览器,加webkit前缀,用transform:scale()这个属性进行放缩

-webkit-text-size-adjust:none: 该属性用来设定文字大小是否根据设备(浏览器)来自动调整显示大小

区别:


Zoom 非标属性,有兼容问题,缩放会改变了元素占据的空间大小,触发重排

-webkit-transform:scale() 大部分现代浏览器支持,并且对英文、数字、中文也能够生效,缩放不会改变了元素占据的空间大小,页面布局不会发生变化

-webkit-text-size-adjust对谷歌浏览器有版本要求,在27之后,就取消了该属性的支持,并且只对英文、数字生效

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

理解: 扩充了 Css 语言,增加了诸如变量、混合(mixin)、函数等功能,让 Css 更易维护、方便 。 本质上,预处理是Css的超集 。 包含一套自定义的语法及一个解析器,根据这些语法定义自己的样式规则,这些规则最终会通过解析器,编译生成对应的 Css 文件


有哪些:sass,less,stylus


比较less和sass:


相同点:

首先sass和less都是css的预编译处理语言,它们引入了mixins,参数,嵌套规则,运算,颜色,名字空间,作用域,JavaScript赋值等加快了css开发效率,当然这两者都可以配合gulp和grunt等前端构建工具使用

区别:

less是基于JavaScript的在客户端处理 所以安装的时候用npm

sass是基于ruby所以在服务器处理

less优缺点

优点: less 简单,易上手;属于css的基础拓展;less更适合静态界面写样式时

缺点: JavaScript引擎需要额外的时间来处理代码然后输出修改过的CSS到浏览器

sass优缺点

优点: 功能强大,更加丰富的拓展sass适合游戏或者其他做效果时需要逻辑来更换不同样式

缺点: 复杂对于新手比较不友好

目录
相关文章
|
1月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
transition过渡属性 早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成。 但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化, 让效果显得更加细腻。简单点说,就是通过鼠标经过、获得焦点,被点击或对元素任何改变中触发, 并平滑地以动画效果改变CSS的属性值。 在CSS中创建简单的过渡效果可以从以下几个步骤来实现: 在默认样式中声明元素的初始状态样式; 声明过渡元素最终状态样式,比如悬浮状态; 在默认样式中通过添加
180 0
|
1月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
transform变形 css3在原来的基础上新增了变形和动画相关属性,通过这些属性可以实现以前需要大段JavaScript才能实现的 功能。 CSS3的变形功能可以对HTML组件执行位移、旋转、缩放、倾斜4种几何变换,这样的变换可以控制HTML组件 呈现出丰富的外观。 借助于位移、旋转、缩放、倾斜这4种几何变换,CSS3提供了transition动画。 transition动画比较简单,只要指定HTML组件的哪些CSS属性需要使用动画效果来执行变化,并指定动画时间,就可保证动画播放。 比transitio
141 1
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
Flex 布局 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 一、Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
231 1
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
Animation属性 css3为Animation动画提供的几个属性如下: 属性名 属性值 animation-name 指定动画名称,该属性指定一个已有的关键帧定义。 animation-duration 指定动画持续时间。 animation-timing-funtion 指定动画变化速度。 animation-delay 指定动画延迟多长时间才开始执行。 animation-iteration-count 指定动画的循环执行次数。 animation:这是一个复合属性。
170 1
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
position定位(核心) 我们讲盒模型的时候,提到了3个属性可以用来控制页面排版。 三大属性:position属性,display属性,float属性。 position 属性控制页面上元素间的位置关系。 display 属性控制页面元素是否显示或者是堆叠还是并排显示。 float 属性提供控制方法。 通过float这种控制方法,可以实现多栏布局,导航菜单等等。 position属性是干嘛用的?怎么用?有哪些属性值? position属性控制页面上元素间的位置关系,也就是排版。 怎么用?要知道怎么用
319 0
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
310 4
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
1964 2

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
  • 2
    面试性能测试总被刷?学员真实遇到的高频问题全解析!
  • 3
    前端工程化演进之路:从手工作坊到AI驱动的智能化开发
  • 4
    Vue 3 + TypeScript 现代前端开发最佳实践(2025版指南)
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距