博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WEB前端面试题汇总(CSS)
阅读量:6964 次
发布时间:2019-06-27

本文共 3792 字,大约阅读时间需要 12 分钟。

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

<1>、relative:相对定位,相对于自己本身在正常文档流中的位置进行定位。

<2>、absolute:生成绝对定位,相对于最近一级定位不为static的父元素进行定位。
<3>、fixed: 生成绝对定位,相对于浏览器窗口或者frame进行定位。
<4>、static:默认值,没有定位,元素出现在正常的文档流中。
<5>、sticky:生成粘性定位的元素,容器的位置根据正常文档流计算得出。


position:absolute和float属性的异同?

共同点:对内联元素设置float和absolute属性,可以让元素脱离文档流,并且可以设置其宽高。

不同点:float仍可占据位置,不会覆盖在另一个BFC区域上,浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。absolute会覆盖文档流中的其他元素。


box-sizing属性有哪些?

box-sizing属性主要用来控制元素的盒模型的解析模式。默认值是content-box;

<1>、content-box:让元素维持W3C的标准盒模型。元素的宽度/高度由border+padding+content的宽度/高度决定,设置width/height属性指的是content部分的宽/高。
<2>、border-box:让元素维持IE传统盒模型(IE6以下版本和IE6~7的怪异模式)。设置width/height属性指的是border+padding+content的宽度/高度。
<3>、padding-box:设置width/height属性指的是padding+content的宽度/高度。

标准浏览器下,按照W3C规范对盒模型解析,一旦修改了元素的边框或边距,就会影响元素的盒子尺寸,就不得不重新计算元素的盒子尺寸,从而影响整个页面的布局。


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

选择符

<1>、id选择器(#myId);
<2>、类选择器(.myClassName);
<3>、标签选择器(div,p,h1);
<4>、相邻选择器(h1 + p);
<5>、子选择器(ul > li);
<6>、后代选择器(li a);
<7>、通配符选择器(*);
<8>、属性选择器(button[disabled="true"]);
<9>、伪类选择器(a:hover,li:nth-child);表示一种状态
<10>、伪元素选择器(li:before、:after,:first-letter,:first-line,:selecton);表示文档某个部分的表现

优先级

!important > 行内样式(比重1000) > id(比重100) > class/属性(比重10) > tag / 伪类(比重1);

伪类和伪元素区别

1>、伪类:a:hover,li:nth-child;
2>、伪元素:li:before、:after,:first-letter,:first-line,:selecton;

伪元素和伪类都是选择器的补充,伪类表示的是一种状态,伪元素表示文档的某个确定部分的表现。

伪元素选择器选择出来的部分不再dom里,也不能对其绑定事件,但是如果对伪元素前面的选择器定义的元素绑定了事件,伪元素同样会生效。

新增伪类

1>、li:first-of-type:选择属于其父元素的首个<li>元素;
2>、li:last-of-type:选择属于其父元素的最后一个<li>元素;
3>、li:only-of-type:选择属于其父元素的唯一一个<li>元素;
4>、li:only-child:选择属于其父元素的唯一子元素;
6>、li:nth-child(2):选择属于其父元素的第二个<li>元素;
7>、:enabled :disabled:选择表单控件的禁用状态;
8>、:checked:单选或复选框被选中状态;


对BFC规范的理解?

BFC定义:块级格式化上下文,一个创建了新的BFC的盒子是独立布局的,盒子里面的子元素的样式不会影响到外面的元素。在同一个BFC中的两个相邻的块级盒在垂直方向的margin会发生折叠。

BFC布局规则

1>、内部的box会在垂直方向,一个接一个的放置。
2>、box的垂直方向的距离有margin决定。属于同一个BFC的两个相邻box的margin会发生重叠。
3>、每个元素的margin box的左边,与包含块border box的左边相接触(对于从左往右的格式化,否则相反),即使存在浮动也是如此,除非这个盒子创建一个新的块级格式化上下文。
4>、BFC的区域不会与float box重叠。
5>、BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也是如此。
6>、计算BFC的高度时,浮动元素也参与计算。

哪些元素会产生BFC

1>、根元素;
2>、float属性不为none;
3>、position为absolute或fixed;
4>、display为inline-block,table-cell,table-caption,flex,inline-flex;
5>、overflow除了visible以外的值(hidden、auto、scroll);
6>、fieldset元素

运用BFC:

1>、解决margin重叠问题:根据BFC布局原则2,在元素外侧包裹一层容器,并触发该容器生成一个BFC,那么两个元素就不在同一个BFC,就不会发生margin重叠。

    

Haha

Hehe

图片描述

2>、自适应两栏布局

    

4dca44a927d4c1ffc30e3ae5f53a0b79.png?_=3674372

根据BFC布局规则第3条:即使存在浮动的元素aslide,但main的左边依然会与包含块的左边相接触。

解决:根据BFC布局规则第4条,我们可以通过通过触发main生成BFC, 来实现自适应两栏布局。

.main {    overflow: hidden;}

当触发main生成BFC后,这个新的BFC不会与浮动的aside重叠。因此会根据包含块的宽度,和aside的宽度,自动变窄。效果如下:

t01077886a9706cb26b.png?_=3674372

3>、清除内部浮动

    

t016035b58195e7909a.png?_=3674372

根据BFC布局规则第6条:计算BFC的高度时,浮动元素也参与计算,为达到清除内部浮动,我们可以触发par生成BFC,那么par在计算高度时,par内部的浮动元素child也会参与计算。

.par {    overflow: hidden;}

t016bbbe5236ef1ffd5.png?_=3674372


解释下浮动和它的工作原理?清除浮动的技巧:

原理:任何元素都可以被浮动,浮动元素脱离文档流,浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。

浮动引起的问题
1>、父元素的高度无法被撑开,影响与父元素同级的元素;
2>、与浮动元素同级的非浮动元素(内联元素)会跟随其后;
3>、若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构;

清除浮动

1>、使用空标签清除浮动
这种方法是在所有浮动标签后面添加一个空标签 <div style="clear:both;"></div>. 弊端就是增加了无意义标签。
2>、使用after伪类

#parent:after{    content:".";    height:0;    visibility:hidden;    display:block;    clear:both;}

3>、浮动外部元素;

4>、设置父元素overflow为hidden或者auto,触发父元素BFC;


常见兼容性问题

1>、png24位的图片在ie6浏览器上出现背景,解决方案是做成png8,也可以引用一段脚本处理。

2>、浏览器默认的margin和padding不同。解决方案:加一个全局的*{margin:0;padding:0}。
3>、ie6双边距bug(20px距离):块属性标签float后,又有横行的margin情况下,在ie6显示margin值比设置的大。解决方案:在float标签样式控制中加入_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别)。
4>、渐进识别方式,从总体中逐步排除局部:
首先,巧妙的使用“9”这一标记,将IE浏览器从所有情况中分离出来。
接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。

.bb{       background-color:#f1ee18;/*所有识别*/      .background-color:#00deff\9; /*IE6、7、8识别*/      +background-color:#a200ff;/*IE6、7识别*/      _background-color:#1e0bd1;/*IE6识别*/  }

待续....2015.5.29

转载地址:http://dmwsl.baihongyu.com/

你可能感兴趣的文章
JS判断客户端是否是iOS或者Android手机移动端
查看>>
Swing控件
查看>>
快速JavaEE轻量级框架&公用业务模块 设计&实现 6.1 - DAO测试
查看>>
文本特征提取算法实现
查看>>
这个qq的域名【c.gj.qq.com】是做什么的?chrome浏览器,访问什么网站都有这个请求...
查看>>
ubuntu14.04+Django1.7.1+nginx1.6+uwsgi2.0环境搭建
查看>>
C++中的类型转换
查看>>
大数据引发的变革与企业面临的挑战
查看>>
LRSlidingTableViewCell
查看>>
FlipCardNavigationView
查看>>
【系统日志笔记二】——撸起袖子写个自定义日志注解
查看>>
完全平衡树的简单实现(Scala)
查看>>
HttpServlet详解
查看>>
无线网络
查看>>
架构设计:生产者/消费者模式 第4页:注意事项
查看>>
1233
查看>>
php写入文件权限失败 file_put_contents: failed to open stream: Permission denied
查看>>
MarMoible的 java4android视频
查看>>
我想象的创业团队
查看>>
Android 自定义控件实现点击波浪效果(九)
查看>>