黑马程序员技术交流社区

标题: 【广州前端】- CSS基础面试题及答案(一) [打印本页]

作者: AngularBaby    时间: 2018-5-3 16:55
标题: 【广州前端】- CSS基础面试题及答案(一)
本帖最后由 AngularBaby 于 2018-5-3 17:04 编辑

1 介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的?

标准盒子模型:宽度=内容的宽度(content)+ border + padding + margin

低版本IE盒子模型:宽度=内容宽度(content+border+padding)+ margin


2 box-sizing属性?

用来控制元素的盒子模型的解析模式,默认为content-box

context-box:W3C的标准盒子模型,设置元素的 height/width 属性指的是content部分的高/宽

border-box:IE传统盒子模型。设置元素的height/width属性指的是border + padding + content部分的高/宽


3 CSS选择器有哪些?哪些属性可以继承?

CSS选择符:

可继承的属性:

不可继承的样式

优先级(就近原则):

!important > [ id > class > tag ]

!important 比内联优先级高。


4 CSS优先级算法如何计算?

元素选择符:1

class选择符:10

id选择符:100

元素标签:1000

5 CSS3新增伪类有那些?

6 如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中?

[CSS] 纯文本查看 复制代码
        div {
            border: 1px solid red;
            margin: 0 auto;
            height: 50px;
            width: 80px;
        }


浮动元素的上下左右居中:

[CSS] 纯文本查看 复制代码
        div {
            border: 1px solid red;
            float: left;
            position: absolute;
            width: 200px;
            height: 100px;
            left: 50%;
            top: 50%;
            margin: -50px 0 0 -100px;
        }


绝对定位的左右居中:

[CSS] 纯文本查看 复制代码
        div {
            border: 1px solid black;
            position: absolute;
            width: 200px;
            height: 100px;
            margin: 0 auto;
            left: 0;
            right: 0;
        }


7 display有哪些值?说明他们的作用?

8 position的值?

9 CSS3有哪些新特性?

10 请解释一下CSS3的flexbox(弹性盒布局模型),以及适用场景?

该布局模型的目的是提供一种更加高效的方式来对容器中的条目进行布局、对齐和分配空间。在传统的布局方式中,block 布局是把块在垂直方向从上到下依次排列的;而 inline 布局则是在水平方向来排列。弹性盒布局并没有这样内在的方向限制,可以由开发人员自由操作。

试用场景:弹性布局适合于移动前端开发,在Android和ios上也完美支持。


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

首先,需要把元素的宽度、高度设为0。然后设置边框样式。

[CSS] 纯文本查看 复制代码
        div {
            width: 0;
            height: 0;
            border-top: 40px solid transparent;
            border-left: 40px solid transparent;
            border-right: 40px solid transparent;
            border-bottom: 40px solid #ff0000;
        }


12 一个满屏品字布局如何设计?

第一种真正的品字:

第二种全屏的品字布局:

上面的div设置成100%,下面的div分别宽50%,然后使用float或者inline使其不换行。


13 常见的兼容性问题?

1、不同浏览器的标签默认的margin和padding不一样。

[CSS] 纯文本查看 复制代码
        * {
            margin: 0;
            padding: 0;
        }

2、IE6双边距bug:块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大。hack:display:inline;将其转化为行内属性。

3、渐进识别的方式,从总体中逐渐排除局部。首先,巧妙的使用“\9”这一标记,将IE浏览器从所有情况中分离出来。接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。

[CSS] 纯文本查看 复制代码
{
            background-color: #f1ee18;
            /*所有识别*/
            .background-color: # 00deff \9;
            /*IE6、7、8识别*/
            +background-color: #a200ff;
            /*IE6、7识别*/
            _background-color: # 1e0bd1;
            /*IE6识别*/
        }

4、设置较小高度标签(一般小于10px),在IE6,IE7中高度超出自己设置高度。hack:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。

5、IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性。解决方法:统一通过getAttribute()获取自定义属性。

6、Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示,可通过加入 CSS 属性 -webkit-text-size-adjust:none; 解决。

7、超链接访问过后hover样式就不出现了,被点击访问过的超链接样式不再具有hover和active了。解决方法是改变CSS属性的排列顺序:L-V-H-A ( love hate )

a:link {} a:visited {} a:hover {} a:active {}


14 为什么要初始化CSS样式

因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。


15 absolute的containing block计算方式跟正常流有什么不同?

无论属于哪种,都要先找到其祖先元素中最近的 position 值不为 static 的元素,然后再判断:

如果都找不到,则为 initial containing block。

补充:

16 CSS里的visibility属性有个collapse属性值?在不同浏览器下以后什么区别?

当一个元素的visibility属性被设置成collapse值后,对于一般的元素,它的表现跟hidden是一样的。

17 display:none与visibility:hidden的区别?

18 position跟display、overflow、float这些特性相互叠加后会怎么样?

display属性规定元素应该生成的框的类型;position属性规定元素的定位类型;float属性是一种布局方式,定义元素在哪个方向浮动。

类似于优先级机制:position:absolute/fixed优先级最高,有他们在时,float不起作用,display值需要调整。float 或者absolute定位的元素,只能是块元素或表格。


19 对BFC规范(块级格式化上下文:block formatting context)的理解?

BFC规定了内部的Block Box如何布局。

定位方案:

满足下列条件之一就可触发BFC:

20 为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式?

浮动元素碰到包含它的边框或者浮动元素的边框停留。由于浮动元素不在文档流中,所以文档流的块框表现得就像浮动框不存在一样。浮动元素会漂浮在文档流的块框上。

浮动带来的问题:

清除浮动的方式:

点击查看更多精彩前端资源






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2