1、介绍一下标准的css的盒子模型?与低版本IE的盒子模型有什么不同?
标准(w3c)的盒子模型:内容content+填充padding+边框border+边界margin
宽高指的是content的宽高
低版本IE盒子模型:内容(content+padding+border)+边界margin,
宽高指的是content+padding+border部分的宽高。
2、padding和margin有什么不同?
他们是盒模型中的内边距和外边距,padding是施加给自身的,margin是施加给外部的。
3、line-height和height的区别?
line-height一般是指布局里面一段文字上下行之间的高度,是针对字体来设置的。height一般是指容器的整体高度。
4、为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式?
浮动元素碰到包含它的边框或者浮动元素的边框停留。由于浮动元素不在文档流中,所以文档流的块框表现得就像浮动框不存在一样。浮动元素会漂浮在文档流的块框上。
父元素的高度无法被撑开,影响与父元素同级的元素
与浮动元素同级的非浮动元素(内联元素)会跟随其后
若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构。
清除浮动的方式:
父级div定义height
最后一个浮动元素后加空div标签 并添加样式clear:both。
包含浮动元素的父标签添加样式overflow为hidden或auto。
父级div定义zoom
5、CSS选择器有哪些?哪些属性可以继承?
CSS选择符:id选择器(#myid)、类选择器(.myclassname)、标签选择器(p, h1, p)、相邻选择器(h1 + p)、子选择器(ul > li)、后代选择器(li a)、通配符选择器(*)、属性选择器(a[rel=external”])、伪类选择器(a:hover, li:nth-child)
可继承的属性:font-size, font-family, color
不可继承的样式:border, padding, margin, width, height
优先级(就近原则):!important > [ id > class > tag ]
!important 比内联优先级高
6、 CSS3新增伪类有那些?
p:first-of-type 选择属于其父元素的首个元素
p:last-of-type 选择属于其父元素的最后元素
p:only-of-type 选择属于其父元素唯一的元素
p:only-child 选择属于其父元素的唯一子元素
p:nth-child(2) 选择属于其父元素的第二个子元素
:enabled :disabled 表单控件的禁用状态。
:checked 单选框或复选框被选中。
7、CSS3有哪些新特性?
-
RGBA和透明度
-
background-image background-origin(content-box/padding-box/border-box) background-size background-repeat
-
word-wrap(对长的不可分割单词换行)word-wrap:break-word
-
文字阴影:text-shadow: 5px 5px 5px #FF0000;(水平阴影,垂直阴影,模糊距离,阴影颜色)
-
font-face属性:定义自己的字体
-
圆角(边框半径):border-radius 属性用于创建圆角
-
边框图片:border-image: url(border.png) 30 30 round
-
盒阴影:box-shadow: 10px 10px 5px #888888
-
媒体查询:定义两套css,当浏览器的尺寸变化时会采用不同的属性
8、设置元素浮动后,该元素的display值是多少?
- 自动变成display:block
9、 ::before 和 :after中双冒号和单冒号有什么区别?解释一下这2个伪元素的作用?
单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。
::before就是以一个子元素的存在,定义在元素主体内容之前的一个伪元素。并不存在于dom之中,只存在在页面之中。
:before 和 :after 这两个伪元素,是在CSS2.1里新出现的。起初,伪元素的前缀使用的是单冒号语法,但随着Web的进化,在CSS3的规范里,伪元素的语法被修改成使用双冒号,成为::before ::after
10、DIV布局的三种方式?
常规流式布局:
元素按照自身HTML元素定义的位置显示(怎么写的怎么显示)
元素按照自身的常规显示特性显示
浮动布局:
左浮动 float:left;
右浮动 float:right;
定位布局:
静态定位:position:static;(默认值),不写position相当于写上position:static;以前没学定位的时候其实都是静态定位,元素在它原本的位置显示,即使加了top、left等也不起作用。
相对定位:position: relative;相对定位是相对于自身的原始位置进行平移,如果设置position:relative;表示相对定位。z-index:值越大越在上面(z-index必须加在已经定位的元素上才起作用。)
绝对定位: position: absolute
;子容器相对于父容器的定位,如果没有父容器,则相对于body定位。
11、link和@import的区别:
1、从属关系区别
@import是 CSS 提供的语法规则,只有导入样式表的作用;link是HTML提供的标签,不仅可以加载 CSS 文件,还可以定义 RSS、rel 连接属性等。
2、加载顺序区别
加载页面时,link标签引入的 CSS 被同时加载;@import引入的 CSS 将在页面加载完毕后被加载。
3、兼容性区别
@import是 CSS2.1 才有的语法,故只可在 IE5+ 才能识别;link标签作为 HTML 元素,不存在兼容性问题。
4、DOM可控性区别
可以通过 JS 操作 DOM ,插入link标签来改变样式;由于 DOM 方法是基于文档的,无法使用@import的方式插入样式。