前端面试问题汇总

2018-03-18  本文已影响26人  不大不小的石头

1. 请简述常见的布局方案?

  1. 比较可靠的基于浮动的布局。创建两列,分别一左一右浮动。如果想要创建三列,则可以在两列的基础上,选择其中主要的一列,在这个列中重复使用之前两列的方案,就形成三列布局了。
  2. 简单的双栏布局也可以通过结合 BFC 和 浮动来实现。当相邻元素浮动的,而此时将自身 overflow 设置为 hidden 则会由于创建了一个新的 BFC,而出现双栏布局。
  3. 对于方案2,倘若主元素不使用 overflow 而是只使用较大的 外边距 来容纳浮动元素,也能实现双栏布局。
  4. 如果用 伸缩布局 来实现圣杯布局。则主要思路就是在页头、主体和页脚上实现竖直方向的三行布局,然后在主体容器内实现水平方向上三列布局。两侧可以通过宽度固定和 order 指定来使主体处于中间并保持伸缩。

2. 请简述针对不同需求下的居中方案?

  1. 如果是行内元素 ———— inline-block + text-align
  2. 如果是块级元素 ———— 对自身使用 margin: auto
  3. 对于有垂直居中需求的 ———— 结合 absolute + transform
  4. 就方案3,倘若子元素为定宽元素,则可以使用负的 margin 来代替 transform
  5. 如果允许使用 flex ———— 则可以直接使用 justify-content or align-items 实现水平或垂直居中
  6. 使用 table + margin 也能实现水平居中,table-cell + vertial-align 也能实现垂直居中。但很少接触

3. 如何实现垂直居中?

  1. 见问题2的部分方案

4. CSS 如何实现动画?

  1. 可以直接播放 GIF,但问题是 GIF 支持的颜色数量有限, GIF 并不具备 Alpha 透明度特性,更重要的是无法修改某些动画参数 ———— 比如持续时间、循环次数、是否暂停等
  2. 当前可取方案:将动画中的所有帧全部拼合到一张 PNG 图片中,然后定义一段 关键帧 @keyframes loader 来挪动背景图,最后在 animation 中将 平滑特性 替换成 分步特性 stepssteps 的参数则是关键帧的数量

5. CSS 如何实现页脚固定在视图底部?

  1. 通过使用 flex 布局,使主体内容和页脚按竖直方向柱式排列,并用视口单位保证页面的最小高度一直占据浏览器的整个高度。再让主体内容自动伸展并占满所有的可用空间。则页脚固定。

6. 盒子模型是什么?

  1. 盒子模型是 CSS 的基石之一,它指定元素如何显示以及如何相互交互。页面上的每个元素被看做一个矩形框,这个框由元素的内容、内边距、边框和外边距组成。

格外注意几点:早期 IE 的盒子模型(width 属性为内容、内边距和边框宽度的总和)、垂直外边距叠加机制(当两个盒子的垂直外边距相遇时,两者的间隔高度只取决于其中的外边距高度的较大者)

7. 如何清除浮动? 不同的方法有什么利弊?

  1. 浮动元素之所以让容器塌陷,是因为它脱离了文档流
  2. 框的文本内容总是会受到浮动元素的影响,从而形成 文字绕排。如果使用 clear 属性去清除浮动,则会撑开容器。而清除浮动的方法无论是添加 div 空标签还是借助伪元素,其实都是为了给页面添加不可见的内容,并给它设置清除浮动从而撑开本来塌陷的容器元素。
  3. 给容器设置 BFC 例如添加 overflow 的 hidden 也能清除浮动,但是弊端是会在某些情况下产生滚动条或内容截断的问题

8. 选择器的优先级如何确定?

1.选择器的特殊性分为四个等级: abcd

于是,行内样式总是最优先,ID 选择器比没有 ID 选择器的规则特殊,具有 类 选择器的比只有 类型 选择器的规则特殊

9. HTML5 新增了哪些标签和特性? 如何理解语义化?

  1. 新增的标签有
  1. 新增的特性有

10. 请简述 flex 弹性布局的优势和布局规则?

  1. 方便地垂直居中内容
  2. 改变元素的视觉次序
  3. 在盒子里自动插入空白以及对齐元素,自动对齐元素之间的空白
  4. 布局规则:

11. px/em/rem的区别?

12. sass 和 less 的区别有哪些?

13. 浏览器如何优化动画?

14. 动画为什么首先推荐使用 CSS ?

15. 如何理解 BFC(Block Formatting Context) 块格式上下文?

  1. BFC 就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。
2. 触发方式包括:
3. BFC 的约束规则

涉及内容:为父元素设置overflow:hidden 或浮动父元素,这就会包含子浮动元素,解决高度塌陷。这就是因为添加 overflow 的 hidden 属性自动生成了 BFC 的原理

16. animation 和 transiton 有哪些值得注意的属性?

17. 有哪些比较重要的 meta 属性?

18. 如何使用 CSS 画出一个三角形?

19. dispaly: none; 和 visibilty: hidden; 的区别?

20. CSS 中 link 和 @import 的区别是什么?

21. 请简述 float 和 absolute 的异同?

22. 请介绍一下 box-sizing 的属性?

23. CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3新增伪类有那些?

24. position的值, relative 和 absolute 分别是相对于谁进行定位的?

25. CSS3有哪些新特性?

26. Doctype 作用? 严格模式与混杂模式如何区分?它们有何意义?

27. HTML 与 XHTML——二者有什么区别?

28. 常见兼容性问题?

29. 浮动元素引起的问题和解决办法?

30. DOM 操作——怎样添加、移除、移动、复制、创建和查找节点?

31. html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?

32. iframe的优缺点?

33. 请说说移动端性能优化?

34. 如何实现高度相等的列?

  1. 给每个框设置超级大的底部内边距,然后用数值相似的负的外边距来消除这个高度。这会导致每个列溢出容器元素,如果将容器的 overflow 属性设置为 hidden。则列就会在最高点被裁剪。于是得到高度相等的列。

35. 简述 CSS 定位? 哪些是可视化模型,哪些是定位模型?

  1. CSS 中有三种基本的定位机制: 普通流(相对定位并不脱离普通流)、浮动和绝对定位。除非专门指定,否则所有的框都在普通流中定位。
上一篇 下一篇

猜你喜欢

热点阅读