2020年前端笔试面试题(一.css)

156 阅读7分钟

一.CSS篇:

1.什么是渐进增强(progressive enhancement)、优雅降级(graceful degradation)?

渐进增强 progressive enhancement:

  • 针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。

优雅降级 graceful degradation:

  • 一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。

两者的区别:

  • 优雅降级是从最复杂的现状开始,并试图减少用户体验的供给;而渐进增强是从最基础的、能够起作用的版本开始,并且不断扩充,以适应未来环境的需求。更合适的说话是,渐进增强是保证基本效果的情况下增强效果,优雅降级是保证最恶劣情况下的基本效果。

2.设计中使用了非标准的字体,该如何处理?

  • a.用图片代替。

  • b.使用一些在线字体库,例如Typekit,Google Webfonts等。

  • c.使用@font-face

3.如何隐藏网页内容,只让它们在屏幕阅读器上使用?

  • a.display:none;

  • b.visibility:hidden;

  • c.overflow:hidden;

  • d.position:absolute;top:-999px;

  • e.opacity:0;

4.CSS引入的方式有哪些?

  • a.使用元素链接外部的样式文件

  • b.在head中使用标签里面书写。

  • c.在css中使用@import标记来导入样式表单

  • d.在DOM中插入style属性。

5.link和@import的区别?

  • a.link属于HTML标签的,而@import只是css提供的一种引入方式。

  • b.link标签还能干其它很多的事,例如定义RSS,rel连接属性。@import只能加载css

  • c.兼容性的差别:@import是CSS2.1提出的,IE5以上的才能识别,link标签无此问题

  • d.link属于html文档中的标签,Dom能够控制,但不能对@import进行Dom操作

6.css属性position的属性值有哪些,描述它们的作用。

  • a.position:static css中所有的position默认属性都是static.例如两个页面中都有同一个div,一个需要决定定位,另一个不需要。那么可以设置为static

  • b.relative相对定位,设置relative之后,就可以设置TRBL("left", "top", "right" 以及 "bottom" ),相对于自己本身的位置进行定位。设置relative,没有TRBL设置,则不会进行任何位置改变。移动之后所占的物理空间还是存在的,相对定位后并不会影响相邻的元素。

  • c.绝对定位absolute 给定absolute之后,会飘出文档流,本身的物理空间也消失了。找最近的设置了relative的元素位置进行参照,没有设置则以祖先元素html为参照。

  • d.fixed绝对定位,相对于浏览器窗口进行绝对定位,同样可以通过TRBL设置位置。

  • e.inherit从父元素中继承position属性。

7.前端页面由哪三层构成,分别是什么?作用是什么?

  • 网页分成三个层次,即:结构层、表示层、行为层.

网页的结构层(structural layer):

  • 由 HTML 或 XHTML 之类的标记语言负责创建。标签,也就是那些出现在尖括号里的单词,对网页内容的语义含义做出了描述,但这些标签不包含任何关于如何显示有关内容的信息。例如,P标签表达了这样一种语义:"这是一个文本段."

网页的表示层(presentation layer):

  • 由 CSS 负责创建。CSS 对“如何显示有关内容”的问题做出了回答。 

网页的行为层(behavior layer):

  • 负责回答“内容应该如何对事件做出反应”这一问题。这是 Javascript 语言和 DOM 主宰的领域。

8.你怎么来实现页面设计图,你认为前端应该如何高质量完成工作? 一个满屏(品)字布局 如何设计?   

  • 首先划分成头部、body、脚部; 

  • 实现效果图是最基本的工作,精确到2px;与设计师,产品经理的沟通和项目的参与

  • 做好的页面结构,页面重构和用户体验处理hack,兼容、写出优美的代码格式针对服务器的优化、拥抱 HTML5。

9、为什么要初始化CSS样式?

  • 因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异.当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。

  • 最简单的初始化方法就是: * {padding: 0; margin: 0;} 。

10、 说下行内元素和块级元素的区别?行内块元素的兼容性使用?(IE8 以下)

  • (Q1) 行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-height),margin上下无效,padding上下无效。 块级元素:各占据一行,垂直方向排列。从新行开始结束接着一个断行。

  • (Q2) 兼容性:display:inline-block;*display:inline;*zoom:1;

11、 清除浮动有哪些方式?比较好的方式是哪一种?

(Q1)

  • (1)父级div定义height。

  • (2)结尾处加空div标签clear:both。

  • (3)父级div定义伪类:after和zoom。

  • (4)父级div定义overflow:hidden。

  • (5)父级div定义overflow:auto。

  • (6)父级div也浮动,需要定义宽度。

  • (7)父级div定义display:table。

  • (8)结尾处加br标签clear:both。

(Q2)

  • 比较好的是第3种方式,好多网站都这么用。

12、display有哪些值?说明他们的作用。

  • block:块类型。默认宽度为父元素宽度,可设置宽高,换行显示。

  • none:缺省值。象行内元素类型一样显示。

  • inline:行内元素类型。默认宽度为内容宽度,不可设置宽高,同行显示。

  • inline-block:默认宽度为内容宽度,可以设置宽高,同行显示。

  • list-item:像块类型元素一样显示,并添加样式列表标记。

  • table:此元素会作为块级表格来显示。

  • inherit:规定应该从父元素继承 display 属性的值。

13、CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先级高?

  • 标签选择符 类选择符 id选择符

  • 继承不如指定 Id>class>标签选择

  • 后者优先级高

14、什么是静态网页?什么叫做动态网页?

  • (1)静态网页:没有数据交互的网页,没有数据库参与,没有服务器端数据的加载。比如静态网页就是只有html+css+JavaScript做成的网站。

  • (2)动态网页:有后台数据参与的网页,网页中的数据是从数据库取的,需要有后台逻辑的支持。比如动态网页就是jsp页面(后台语言是java)、asp页面(后台语言是asp.net)。

15、前端语言有哪些?后端语言有哪些?

  • (1)前端语言:HTML、css、javascript。

  • (2)后端语言(服务器端语言):php、java、asp.net。最近新出的node.js

16、前端性能优化有哪些方法?

①对于页面来说:

  • 尽量减少DOM元素的数量
  • 减少iframe的数量
  • 减少http的请求次数
  • 提前加载

②对于CSS来说:

  • 将样式表置顶

  • 使用link代替@important

  • 区别1:link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。

  • 区别2:link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持。link支持定义RSS(简易信息聚合).

  • 区别3:link支持使用Javascript控制DOM去改变样式;而@import不支持。

③对于JS来说:

  • 将脚本置底

  • 使用外部JS和CSS文件

  • 精简JS和CSS文件,去除重复脚本