CSS前端经典面试题及解析——小白入门必备,2024年最新阿里web前端开发面试解答问题

  • :first-line:first-letter可以用来修饰文字。

  • 上面提到的.clearfix方法中,使用clear: both来添加不占空间的元素。

  • 使用:beforeafter展示提示中的三角箭头。鼓励关注点分离,因为三角被视为样式的一部分,而不是真正的 DOM。如果不使用额外的 HTML 元素,只用 CSS 样式绘制三角形是不太可能的。

参考资料:

15.说说你对盒模型的理解,以及如何告知浏览器使用不同的盒模型渲染布局。

CSS 盒模型描述了以文档树中的元素而生成的矩形框,并根据排版模式进行布局。每个盒子都有一个内容区域(例如文本,图像等)以及周围可选的paddingbordermargin区域。

CSS 盒模型负责计算:

  • 块级元素占用多少空间。

  • 边框是否重叠,边距是否合并。

  • 盒子的尺寸。

盒模型有以下规则:

  • 块级元素的大小由widthheightpaddingbordermargin决定。

  • 如果没有指定height,则块级元素的高度等于其包含子元素的内容高度加上padding(除非有浮动元素,请参阅下文)。

  • 如果没有指定width,则非浮动块级元素的宽度等于其父元素的宽度减去父元素的padding

  • 元素的height是由内容的height来计算的。

  • 元素的width是由内容的width来计算的。

  • 默认情况下,paddingborder不是元素widthheight的组成部分。

参考资料:

这是我整理的面试题中的一部分,此外还包含HTML、JavaScript、React、Vue、浏览器、服务端与网络、算法等等…

篇幅有限,仅展示部分内容

如果你需要这份完整版的面试题+解析,【点击我】就可以了,免费分享给大家。

16.* { box-sizing: border-box; }会产生怎样的效果?

  • 元素默认应用了box-sizing: content-box,元素的宽高只会决定内容(content)的大小。

  • box-sizing: border-box改变计算元素widthheight的方式,borderpadding的大小也将计算在内。

  • 元素的height = 内容(content)的高度 + 垂直方向的padding + 垂直方向border的宽度

  • 元素的width = 内容(content)的宽度 + 水平方向的padding + 水平方向border的宽度

17. display的属性值都有哪些?

  • none, block, inline, inline-block, table, table-row, table-cell, list-item.

18. inlineinline-block有什么区别?

我把block也加入其中,为了获得更好的比较。

| | block | inline-block | inline |

| — | — | — | — |

| 大小 | 填充其父容器的宽度。 | 取决于内容。 | 取决于内容。 |

| 定位 | 从新的一行开始,并且不允许旁边有 HTML 元素(除非是float) | 与其他内容一起流动,并允许旁边有其他元素。 | 与其他内容一起流动,并允许旁边有其他元素。 |

| 能否设置widthheight | 能 | 能 | 不能。 设置会被忽略。 |

| 可以使用vertical-align对齐 | 不可以 | 可以 | 可以 |

| 边距(margin)和填充(padding) | 各个方向都存在 | 各个方向都存在 | 只有水平方向存在。垂直方向会被忽略。 尽管borderpaddingcontent周围,但垂直方向上的空间取决于’line-height’ |

| 浮动(float) | - | - | 就像一个block元素,可以设置垂直边距和填充。 |

19.relativefixedabsolutestatic四种定位有什么区别?

经过定位的元素,其position属性值必然是relativeabsolutefixedsticky

  • static:默认定位属性值。该关键字指定元素使用正常的布局行为,即元素在文档常规流中当前的布局位置。此时 top, right, bottom, left 和 z-index 属性无效。

  • relative:该关键字下,元素先放置在未添加定位时的位置,再在不改变页面布局的前提下调整元素位置(因此会在此元素未添加定位时所在位置留下空白)。

  • absolute:不为元素预留空间,通过指定元素相对于最近的非 static 定位祖先元素的偏移,来确定元素位置。绝对定位的元素可以设置外边距(margins),且不会与其他边距合并。

  • fixed:不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。打印时,元素会出现在的每页的固定位置。fixed 属性会创建新的层叠上下文。当元素祖先的 transform 属性非 none 时,容器由视口改为该祖先。

  • sticky:盒位置根据正常流计算(这称为正常流动中的位置),然后相对于该元素在流中的 flow root(BFC)和 containing block(最近的块级祖先元素)定位。在所有情况下(即便被定位元素为 table 时),该元素定位均不对后续元素造成影响。当元素 B 被粘性定位时,后续元素的位置仍按照 B 未定位时的位置来确定。position: stickytable 元素的效果与 position: relative 相同。

参考资料:

20.你了解 CSS Flex 和 Grid 吗?

Flex 主要用于一维布局,而 Grid 则用于二维布局。

Flex

flex容器中存在两条轴, 横轴和纵轴, 容器中的每个单元称为flex item。

在容器上可以设置6个属性:

  • flex-direction

  • flex-wrap

  • flex-flow

  • justify-content

  • align-items

  • align-content

注意:当设置 flex 布局之后,子元素的 float、clear、vertical-align 的属性将会失效。

Flex 项目属性

有六种属性可运用在 item 项目上:

  1. order

  2. flex-basis

  3. flex-grow

  4. flex-shrink

  5. flex

  6. align-self

Grid

CSS网格布局用于将页面分割成数个主要区域,或者用来定义组件内部元素间大小、位置和图层之间的关系。

像表格一样,网格布局让我们能够按行或列来对齐元素。 但是,使用CSS网格可能还是比CSS表格更容易布局。 例如,网格容器的子元素可以自己定位,以便它们像CSS定位的元素一样,真正的有重叠和层次。

21.响应式设计与自适应设计有何不同?

响应式设计和自适应设计都以提高不同设备间的用户体验为目标,根据视窗大小、分辨率、使用环境和控制方式等参数进行优化调整。

响应式设计的适应性原则:网站应该凭借一份代码,在各种设备上都有良好的显示和使用效果。响应式网站通过使用媒体查询,自适应栅格和响应式图片,基于多种因素进行变化,创造出优良的用户体验。就像一个球通过膨胀和收缩,来适应不同大小的篮圈。

自适应设计更像是渐进式增强的现代解释。与响应式设计单一地去适配不同,自适应设计通过检测设备和其他特征,从早已定义好的一系列视窗大小和其他特性中,选出最恰当的功能和布局。与使用一个球去穿过各种的篮筐不同,自适应设计允许使用多个球,然后根据不同的篮筐大小,去选择最合适的一个。

参考资料:

22.你有没有使用过视网膜分辨率的图形?当中使用什么技术?

我倾向于使用更高分辨率的图形(显示尺寸的两倍)来处理视网膜显示。更好的方法是使用媒体查询,像@media only screen and (min-device-pixel-ratio: 2) { ... },然后改变background-image

对于图标类的图形,我会尽可能使用 svg 和图标字体,因为它们在任何分辨率下,都能被渲染得十分清晰。

还有一种方法是,在检查了window.devicePixelRatio的值后,利用 JavaScript 将<img>src属性修改,用更高分辨率的版本进行替换。

参考资料:

23.什么情况下,用translate()而不用绝对定位?什么时候,情况相反。

translate()transform的一个值。改变transformopacity不会触发浏览器重新布局(reflow)或重绘(repaint),只会触发复合(compositions)。而改变绝对定位会触发重新布局,进而触发重绘和复合。transform使浏览器为元素创建一个 GPU 图层,但改变绝对定位会使用到 CPU。 因此translate()更高效,可以缩短平滑动画的绘制时间。

当使用translate()时,元素仍然占据其原始空间(有点像position:relative),这与改变绝对定位不同。

参考资料:

其他答案

24.一边固定宽度一边宽度自适应

可以使用flex布局 复制下面的HTML和CSS代码 用浏览器打开可以看到效果

.wrap {

display: flex;

justify-content: space-between;

}

.div1 {

min-width: 200px;

}

.div2 {

width: 100%;

background: #e6e6e6;

}

html,

body,

div {

height: 100%;

margin: 0;

}

25.水平垂直居中的方式

flex

// 父容器

display: flex;

justify-content: center;

align-items: center;

position

// 父容器

position: relative;

// 子容器

position:absolute;

margin:auto;

top:0;

bottom:0;

left:0;

right:0;

position+transform

// 父容器

position: relative;

// 子容器

position: absolute;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

table-cell

html, body {

height: 100%;

width: 100%;

margin: 0;

}

.box {

display: table;

height: 100%;

width: 100%;

}

.content {

display: table-cell;

vertical-align: middle;

text-align: center;

}

.inner {

background-color: #000;

display: inline-block;

width: 200px;

height: 200px;

}

26.display:none、visibile:hidden、opacity:0的区别

| | 是否隐藏 | 是否在文档中占用空间 | 是否会触发事件 |

| — | — | — | — |

| display: none | 是 | 否 | 否 |

| visibile: hidden | 是 | 是 | 否 |

| opacity: 0 | 是 | 是 | 是 |

27.CSS中link和@import的区别

  • link属于HTML标签,而@import是CSS提供的

  • 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载

  • import只在IE5以上才能识别,而link是HTML标签,无兼容问题

  • link方式的样式的权重 高于@import的权重

28.文本超出部分显示省略号

单行

overflow: hidden;

text-overflow: ellipsis;

white-space: nowrap;

多行

display: -webkit-box;

-webkit-box-orient: vertical;

-webkit-line-clamp: 3; // 最多显示几行

overflow: hidden;

29.利用伪元素画三角

.info-tab {

position: relative;

}

.info-tab::after {

content: ‘’;

border: 4px solid transparent;

border-top-color: #2c8ac2;

position: absolute;

top: 0;

}

复制代码

30.已知父级盒子的宽高,子级img宽高未知,想让img铺满父级盒子且图片不能变形

需要用到cssobject-fit属性

div {

width: 200px;

height: 200px;

}

img {

object-fit: cover;

width: 100%;

height: 100%;

}

MDN

31.iframe的作用

iframe是用来在网页中插入第三方页面,早期的页面使用iframe主要是用于导航栏这种很多页面都相同的部分,这样在切换页面的时候避免重复下载。

优点

  1. 便于修改,模拟分离,像一些信息管理系统会用到。

  2. 但现在基本不推荐使用。除非特殊需要,一般不推荐使用。

缺点

  1. iframe的创建比一般的DOM元素慢了1-2个数量级

  2. iframe标签会阻塞页面的的加载,如果页面的onload事件不能及时触发,会让用户觉得网页加载很慢,用户体验不好,在Safari和Chrome中可以通过js动态设置iframe的src属性来避免阻塞。

  3. iframe对于SEO不友好,替换方案一般就是动态语言的Incude机制和ajax动态填充内容等。

32.过渡与动画的区别是什么

  • transition

可以在一定的时间内实现元素的状态过渡为最终状态,用于模拟以一种过渡动画效果,但是功能有限,只能用于制作简单的动画效果而动画属性

  • animation

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

读者福利

========

由于篇幅过长,就不展示所有面试题了,想要完整面试题目的朋友(另有小编自己整理的2024大厂高频面试题及答案附赠)


一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

//img-blog.csdnimg.cn/20201126205036657.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzM3OTAzNDY4,size_16,color_FFFFFF,t_70)


一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-PbxToriJ-1712915371637)]

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值