前端面试题——CSS篇

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

有两种:IE盒子模型、W3C盒子模型;
盒模型:内容(content)、填充(padding)、边界(margin)、边框(border);
区别:IE的content部分吧border和padding计算进去;在CSS3中引入了box-sizing属性,它可以允许改变默认的CSS盒模型对原宿宽高的计算方式。
共包括两个选项:
content-box:标准盒模型,CSS定义的宽高只包括content的宽高。
border-box:IE盒模型,CSS定义的宽高包括了content、padding和border。
在标准模式下,一个块的总宽度=width+margin(左右)+padding(左右)+border(左右)
在怪异模式下,一个块的总宽度=width+margin(左右)(即width已经包括了padding和border值)

2.CSS优先级算法如何计算?

  • 优先级就近原则,同权重情况下样式定义最近者为准;
  • 载入样式以最后载入的定位为准
    优先级为
    !important>id>class>tag
    important比内联优先级高

3.如何居中div?

水平垂直居中问题,在CSS中margin:0 auto;可以实现水平居中,但是在垂直中方面一直没有特定的属性,知道CSS3的出现,有了弹性盒,可以通过设置弹性和直接设置居中位置,做浏览器兼容的话可以通过使用一些hack处理负margin方法,table-cell方法,位移方法。
负margin方法
CSS代码:

.container{
  width:500px;
  height:400px;
  border:2px solid red;
  position:relative;
}
.inner{
  width:480px;
  height:380px;
  background-color:green;
  position:absolute;
  top:50%;
  left:50%;
  margin-top:-190px;
  margin-left:-240px;
}

HTML代码:

<div class="container">
  <div class="inner"></div>
</div>

这里,我们首先用top:50%left:50%让inner的坐标原点(左上角)移动到container的中心,然后再利用负margin让它往左偏移自身宽的一半,再往上偏移自身高的一半,这样inner的中心点就跟container的中心点对齐了。
table-cell方法
CSS代码:

div{
  width:300px;
  height:300px;
  border:3px solid red;
  display:table-cell;
  vertical-align:middle;
  text-align:center;
}
img{
  vertical-align:middle;
}

HTML代码:

<div> <img src="love.jpg"> </div>

通过将盒子转换为table元素,table元素本身是可以通过属性控制位置,div上面的vertical-align:middle是控制垂直方向上的居中的,而text-align:center是控制水平方向的。
弹性盒子法
CSS代码:

.container{
  width:300px;
  height:200px;
  border:3px solid red;
  display: -webkit-flex; 
  display: flex; 
  -webkit-align-items: center; 
  align-items: center; 
  -webkit-justify-content: center; 
  justify-content: center; 
}
.inner{
  border: 3px solid #458761;
  padding: 20px;
 }

HTML代码:

<div class="container">
  <div class="inner">
 我在容器中水平垂直居中 
  </div>
</div>

align-items 控制垂直方向的居中,justify-content 控制水平方向的居中。这是 CSS3 的新方法。
位移方法
位移方法和margin定位方法一样,只不过把margin改成了位移不需要计算一半是多少,直接transform:translate(-50%,-50%)

div{
  width:200px;
  height:200px;
  background:green;
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
}

div绝对定位水平垂直居中(margin:auto实现绝对定位元素的居中)

div{
  width:200px;
  height:200px;
  background:green;
  left:0;
  top:0;
  bottom:0;
  right:0;
  margin:auto;
}

4.position的值relative和absolute定位原点是?

absolute 生成绝对定位的元素,相对于值不为static的第一个父元素进行定位。
fixed (老IE不支持)生成绝对定位的元素,相对于浏览器窗口进行定位。
relative 生成相对定位的元素,相对于其正常位置进行定位。
static 默认值。没有定位,元素出现在正常的流中(忽略top,bottom,left,right,z-index声明)。
inherit 规定从父元素继承position属性的值。

5.CSS定义的权重

以下是权重的规则:标签的权重为1,class的权重为10,id的权重为100,以下例子是演示各种定义的权重值:
/权重为 1/ div{}
/权重为 10/ .class1{}
/权重为 100/ #id1{}
/权重为 100+1=101/ #id1 div{}
/权重为 10+1=11/ .class1 div{}
/权重为 10+10+1=21/ .class1 .class2 div{}
如果权重相同,则最后定义的样式会起作用,但是应避免这种情况出现。

6.请解释一下为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式?

浮动元素脱离文档流,不占据空间。浮动元素碰到包含他的边框或者浮动元素的边框停留。
1.使用空标签清除浮动
这种方式是在所有浮动标签后面添加一个空标签定义 CSS clear:both;弊端就是增加了无意义标签。
2.使用overflow
给包含浮动元素的父标签添加CSS属性overflow:autozoom:1;zoom:1用于兼容IE6。
3.使用after伪对象清除浮动
该方法只适用于非IE浏览器。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342