末了
喜欢的话别忘了关注、点赞哦~
开源分享:【大厂前端口试题分析+核心总结学习笔记+真实项目实战+最新解说视频】
在大型项目中,我会使用 Clearfix 方法,在必要的地方使用.clearfix。设置overflow: hidden的方法大概使其子元素表现不完备,当子元素的高度大于父元素时。
6.怎样解决不同欣赏器的样式兼容性问题?
- 在确定问题缘故原由和有问题的欣赏器后,使用单独的样式表,仅供出现问题的欣赏器加载。这种方法必要使用服务器端渲染。
- 使用已经处置惩罚好此类问题的库,比如 Bootstrap。
- 使用 autoprefixer 自动天生 CSS 属性前缀。
- 使用 Reset CSS 或 Normalize.css。
7.怎样为功能受限的欣赏器提供页面? 使用什么样的技术和流程?
- 优雅的降级:为现代欣赏器构建应用,同时确保它在旧版欣赏器中正常运行。
- Progressive enhancement - The practice of building an application for a base level of user experience, but adding functional enhancements when a browser supports it.
- 渐进式加强:构建基于用户体验的应用,但在欣赏器支持时添加新增功能。
- 使用 caniuse.com 检查特性支持。
- 使用 autoprefixer 自动天生 CSS 属性前缀。
- 使用 Modernizr进行特性检测。
8.有什么不同的方式可以隐藏内容(使其仅实用于屏幕阅读器)?
这些方法与可访问性有关。
- visibility: hidden:元素仍然在页面流中,并占用空间。
- width: 0; height: 0:使元素不占用屏幕上的任何空间,导致不表现它。
- position: absolute; left: -99999px: 将它置于屏幕之外。
- text-indent: -9999px:这只实用于block元素中的文本。
- Metadata: 例如通过使用 Schema.org,RDF 和 JSON-LD。
- WAI-ARIA:怎样增长网页可访问性的 W3C 技术规范。
纵然 WAI-ARIA 是抱负的解决方案,我也会采用绝对定位方法,因为它具有最少的注意事项,实用于大多数元素,而且使用起来非常简朴。
参考资料:
- www.w3.org/TR/wai-aria…
- developer.mozilla.org/en-US/docs/…
- a11yproject.com/
9.编写高效的 CSS 应该注意什么?
首先,欣赏器从最右边的选择器,即关键选择器(key selector),向左依次匹配。根据关键选择器,欣赏器从 DOM 中筛选出元素,然后向上遍历被选元素的父元素,判断是否匹配。选择器匹配语句链越短,欣赏器的匹配速度越快。克制使用标签和通用选择器作为关键选择器,因为它们会匹配大量的元素,欣赏器必须要进行大量的工作,去判断这些元素的父元素们是否匹配。
BEM (Block Element Modifier) methodology recommends that everything has a single class, and, where you need hierarchy, that gets baked into the name of the class as well, this naturally makes the selector efficient and easy to override. BEM (Block Element Modifier)原则上发起为独立的 CSS 类定名,而且在必要层级关系时,将关系也体如今定名中,这自然会使选择器高效且易于覆盖。
搞清楚哪些 CSS 属性会触发重新结构(reflow)、重绘(repaint)和合成(compositing)。在写样式时,克制触发重新结构的大概。
参考资料:
- developers.google.com/web/fundame…
- csstriggers.com/
10.使用 CSS 预处置惩罚的优缺点分别是什么?
长处:
- 进步 CSS 可维护性。
- 易于编写嵌套选择器。
- 引入变量,增长主题功能。可以在不同的项目中共享主题文件。
- 通过混淆(Mixins)天生重复的 CSS。
- Splitting your code into multiple files. CSS files can be split up too but doing so will require a HTTP request to download each CSS file.
- 将代码分割成多个文件。不进行预处置惩罚的 CSS,固然也可以分割成多个文件,但必要建立多个 HTTP 请求加载这些文件。
缺点:
11.对于你使用过的 CSS 预处置惩罚,说说喜欢和不喜欢的地方?
喜欢:
- 绝大部分长处上题以及提过。
- Less 用 JavaScript 实现,与 NodeJS 高度结合。
Dislikes:
- 我通过node-sass使用 Sass,它用 C ++ 编写的 LibSass 绑定。在 Node 版本切换时,我必须经常重新编译。
- Less 中,变量名称以@作为前缀,容易与 CSS 关键字肴杂,如@media、@import和@font-face。
12.怎样实现一个使用非标准字体的网页计划?
使用@font-face并为不同的font-weight定义font-family。
13.解释欣赏器怎样确定哪些元素与 CSS 选择器匹配。
这部分与上面关于编写高效的 CSS 有关。欣赏器从最右边的选择器(关键选择器)根据关键选择器,欣赏器从 DOM 中筛选出元素,然后向上遍历被选元素的父元素,判断是否匹配。选择器匹配语句链越短,欣赏器的匹配速度越快。
例如,对于形如p span的选择器,欣赏器首先找到所有<span>元素,并遍历它的父元素直到根元素以找到<p>元素。对于特定的<span>,只要找到一个<p>,就知道’`已经匹配并停止继续匹配。
参考资料:
- stackoverflow.com/questions/5…
14.描述伪元素及其用途。
CSS 伪元素是添加到选择器的关键字,去选择元素的特定部分。它们可以用于装饰(:first-line,:first-letter)或将元素添加到标记中(与 content:…组合),而不必修改标记(:before,:after)。
- :first-line和:first-letter可以用来修饰文字。
- 上面提到的.clearfix方法中,使用clear: both来添加不占空间的元素。
- 使用:before和after展示提示中的三角箭头。鼓励关注点分离,因为三角被视为样式的一部分,而不是真正的 DOM。如果不使用额外的 HTML 元素,只用 CSS 样式绘制三角形是不太大概的。
参考资料:
- css-tricks.com/almanac/sel…
15.说说你对盒模型的理解,以及怎样告知欣赏器使用不同的盒模型渲染结构。
CSS 盒模型描述了以文档树中的元素而天生的矩形框,并根据排版模式进行结构。每个盒子都有一个内容区域(例如文本,图像等)以及四周可选的padding、border和margin区域。
CSS 盒模型负责盘算:
- 块级元素占用多少空间。
- 边框是否重叠,边距是否合并。
- 盒子的尺寸。
盒模型有以下规则:
- 块级元素的大小由width、height、padding、border和margin决定。
- 如果没有指定height,则块级元素的高度等于其包含子元素的内容高度加上padding(除非有浮动元素,请参阅下文)。
- 如果没有指定width,则非浮动块级元素的宽度等于其父元素的宽度减去父元素的padding。
- 元素的height是由内容的height来盘算的。
- 元素的width是由内容的width来盘算的。
- 默认情况下,padding和border不是元素width和height的组成部分。
参考资料:
- www.smashingmagazine.com/2010/06/the…
这是我整理的口试题中的一部分,此外还包含HTML、JavaScript、React、Vue、欣赏器、服务端与网络、算法等等…
篇幅有限,仅展示部分内容
如果你必要这份完备版的口试题+分析,【点击我】就可以了,免费分享给各人。
16.* { box-sizing: border-box; }会产生怎样的效果?
- 元素默认应用了box-sizing: content-box,元素的宽高只会决定内容(content)的大小。
- box-sizing: border-box改变盘算元素width和height的方式,border和padding的大小也将盘算在内。
- 元素的height = 内容(content)的高度 + 垂直方向的padding + 垂直方向border的宽度
- 元素的width = 内容(content)的宽度 + 水平方向的padding + 水平方向border的宽度
17. display的属性值都有哪些?
- none, block, inline, inline-block, table, table-row, table-cell, list-item.
18. inline和inline-block有什么区别?
我把block也加入其中,为了得到更好的比较。
| | block | inline-block | inline |
| — | — | — | — |
| 大小 | 填充其父容器的宽度。 | 取决于内容。 | 取决于内容。 |
| 定位 | 重新的一行开始,而且不允许旁边有 HTML 元素(除非是float) | 与其他内容一起流动,并允许旁边有其他元素。 | 与其他内容一起流动,并允许旁边有其他元素。 |
| 可否设置width和height | 能 | 能 | 不能。 设置会被忽略。 |
| 可以使用vertical-align对齐 | 不可以 | 可以 | 可以 |
| 边距(margin)和填充(padding) | 各个方向都存在 | 各个方向都存在 | 只有水平方向存在。垂直方向会被忽略。 尽管border和padding在content四周,但垂直方向上的空间取决于’line-height’ |
| 浮动(float) | - | - | 就像一个block元素,可以设置垂直边距和填充。 |
19.relative、fixed、absolute和static四种定位有什么区别?
经过定位的元素,其position属性值必然是relative、absolute、fixed或sticky。
- 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: sticky 对 table 元素的效果与 position: relative 雷同。
参考资料:
- developer.mozilla.org/en/docs/Web…
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 项目上:
- order
- flex-basis
- flex-grow
- flex-shrink
- flex
- align-self
Grid
CSS网格结构用于将页面分割成数个主要区域,或者用来定义组件内部元素间大小、位置和图层之间的关系。
像表格一样,网格结构让我们可以或许按行或列来对齐元素。 但是,使用CSS网格大概还是比CSS表格更容易结构。 例如,网格容器的子元素可以本身定位,以便它们像CSS定位的元素一样,真正的有重叠和条理。
21.响应式计划与自顺应计划有何不同?
响应式计划和自顺应计划都以进步不同设备间的用户体验为目标,根据视窗大小、分辨率、使用情况和控制方式等参数进行优化调整。
响应式计划的顺应性原则:网站应该依附一份代码,在各种设备上都有精良的表现和使用效果。响应式网站通过使用媒体查询,自顺应栅格和响应式图片,基于多种因素进行变化,创造出优良的用户体验。就像一个球通过膨胀和收缩,来顺应不同大小的篮圈。
自顺应计划更像是渐进式加强的现代解释。与响应式计划单一地去适配不同,自顺应计划通过检测设备和其他特征,从早已定义好的一系列视窗大小和其他特性中,选出最恰当的功能和结构。与使用一个球去穿过各种的篮筐不同,自顺应计划允许使用多个球,然后根据不同的篮筐大小,去选择最符合的一个。
参考资料:
- developer.mozilla.org/en-US/docs/…
- mediumwell.com/responsive-…
- css-tricks.com/the-differe…
22.你有没有使用过视网膜分辨率的图形?当中使用什么技术?
我倾向于使用更高分辨率的图形(表现尺寸的两倍)来处置惩罚视网膜表现。更好的方法是使用媒体查询,像@media only screen and (min-device-pixel-ratio: 2) { ... },然后改变background-image。
对于图标类的图形,我会尽大概使用 svg 和图标字体,因为它们在任何分辨率下,都能被渲染得非常清楚。
还有一种方法是,在检查了window.devicePixelRatio的值后,使用 JavaScript 将<img>的src属性修改,用更高分辨率的版本进行更换。
参考资料:
- www.sitepoint.com/css-techniq…
23.什么情况下,用translate()而不用绝对定位?什么时间,情况相反。
translate()是transform的一个值。改变transform或opacity不会触发欣赏器重新结构(reflow)或重绘(repaint),只会触发复合(compositions)。而改变绝对定位会触发重新结构,进而触发重绘和复合。transform使欣赏器为元素创建一个 GPU 图层,但改变绝对定位会使用到 CPU。 因此translate()更高效,可以缩短平滑动画的绘制时间。
当使用translate()时,元素仍然占据其原始空间(有点像position:relative),这与改变绝对定位不同。
参考资料:
- www.paulirish.com/2012/why-mo…
其他答案
- neal.codes/blog/front-…
- quizlet.com/28293152/fr…
- peterdoes.it/2015/12/03/…
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;
}
前端框架
前端框架太多了,真的学不动了,别慌,其实对于前端的三大马车,Angular、React、Vue 只要把其中一种框架学明白,底层原理实现,其他两个学起来不会很吃力,这也取决于你以后就职的公司要求你会哪一个框架了,当然,会的越多越好,但是每每每个人的时间是有限的,对于自学的门生,或者即将口试找工作的人,当然要选择一门框架深挖原理。
以 Vue 为例,我整理了如下的口试题。
如果你觉得对你有资助,可以戳这里获取:【大厂前端口试题分析+核心总结学习笔记+真实项目实战+最新解说视频】
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |