CSS面试题汇总(二),在阿里工作5年了

19 阅读4分钟

px 和 em 都是长度单位,区别是,px 的值是固定的,指定是多少就是多少,计算比较容易。em 得值不是固定的,并且 em 会继承父级元素的字体大小。

浏览器的默认字体高都是 16px。所以未经调整的浏览器都符合: 1em=16px。那么 12px=0. 75em, 10px=0. 625em。

13. 如何垂直居中一个元素?

参考答案:

方法一:绝对定位居中(原始版之已知元素的高宽)

.content {

width: 200px;

height: 200px;

background-color: #6699ff;

position: absolute;

/父元素需要相对定位/

top: 50%;

left: 50%;

margin-top: -100px;

/设为高度的1/2/

margin-left: -100px;

/设为宽度的1/2/

}

方法二:绝对定位居中(改进版之一未知元素的高宽)

.content {

width: 200px;

height: 200px;

background-color: #6699ff;

position: absolute;

/父元素需要相对定位/

top: 50%;

left: 50%;

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

/在水平和垂直方向上各偏移-50%/

}

方法三:绝对定位居中(改进版之二未知元素的高宽)

.content {

width: 200px;

height: 200px;

background-color: #6699ff;

margin: auto;

/很关键的一步/

position: absolute;

/父元素需要相对定位/

left: 0;

top: 0;

right: 0;

bottom: 0;

/让四个定位属性都为0/

}

方法四:flex 布局居中

body {

display: flex;

/设置外层盒子display为flex/

align-items: center;

/设置内层盒子的垂直居中/

justify-content: center;

/设置内层盒子的水平居中/

.content {

width: 200px;

height: 200px;

background-color: #6699ff;

}

}

那么问题来了,如何垂直居中一个 img(用更简便的方法。)

.content {

//img的容器设置如下

display: table-cell;

text-align: center;

vertical-align: middle;

}

14. BFC 什么是 BFC?

参考答案:

  • 什么是 BFC

BFC(Block Formatting Context)格式化上下文,是 Web 页面中盒模型布局的 CSS 渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器。

  • 形成 BFC 的条件

浮动元素,float 除 none 以外的值

定位元素,position(absolute,fixed)

display 为以下其中之一的值 inline-block,table-cell,table-caption

overflow 除了 visible 以外的值(hidden,auto,scroll)

  • BFC 的特性

内部的 Box 会在垂直方向上一个接一个的放置。

垂直方向上的距离由 margin 决定

bfc 的区域不会与 float 的元素区域重叠。

计算 bfc 的高度时,浮动元素也参与计算

bfc 就是页面上的一个独立容器,容器里面的子元素不会影响外面元素。

15. 用纯 CSS 创建一个三角形的原理是什么?

参考答案:

span {

width: 0;

height: 0;

border-top: 40px solid transparent;

border-left: 40px solid transparent;

border-right: 40px solid transparent;

border-bottom: 40px solid #ff0000;

}

在这里插入图片描述

16. Sass、LESS 是什么?大家为什么要使用他们?

参考答案:

他们是 CSS 预处理器。他是 CSS 上的一种抽象层。他们是一种特殊的语法/语言编译成 CSS。

例如 Less 是一种动态样式语言. 将 CSS 赋予了动态语言的特性,如变量,继承,运算, 函数. LESS 既可以在客户端上运行 (支持 IE 6+, Webkit, Firefox),也可一在服务端运行 (借助 Node. js)。

为什么要使用它们?

1.结构清晰,便于扩展。

2.可以方便地屏蔽浏览器私有语法差异。这个不用多说,封装对浏览器语法差异的重复处理,减少无意义的机械劳动。

3.可以轻松实现多重继承。

4.完全兼容 CSS 代码,可以方便地应用到老项目中。LESS 只是在 CSS 语法上做了扩展,所以老的 CSS 代码也可以与 LESS 代码一同编译。

算法

  1. 冒泡排序

  2. 选择排序

  3. 快速排序

  4. 二叉树查找: 最大值、最小值、固定值

  5. 二叉树遍历

  6. 二叉树的最大深度

  7. 给予链表中的任一节点,把它删除掉

  8. 链表倒叙

  9. 如何判断一个单链表有环

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

开源分享:docs.qq.com/doc/DSmRnRG…