一、link和@import的区别
- link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSS。
- link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。
- link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持。
- ink支持使用Javascript控制DOM去改变样式;而@import不支持。
二、常用CSS选择器
- id选择器( #myid)
- 类选择器(.myclassname)
- 标签选择器(div, h1, p)
- 相邻选择器(h1 + p)
- 子选择器(ul > li)
- 后代选择器(li a)
- 通配符选择器( * )
- 属性选择器(a[rel = “external”],input[type=”text”])
- 伪类选择器(a: hover, li: nth - child,:first-child,:last-child,:hover,:focus,:active)
- 多个类选择器
三、CSS规则权重
- !important : infinty
- 内联样式 : 1000
- ID选择器 : 100
- Class 属性选择器 伪类选择器(:hover) : 10
- 标签 : 1
- 通配符 : 0
- 注意 : 优先级相同时采用就近原则
四、CSS画三角形
1 | width:0; |
五、CSS标签嵌套
(一)div和p嵌套
p标签里是不能嵌套div的,如果嵌套了,则浏览器会解析成如下代码1
2
3
4
5
6
7
8<!-- 嵌套前 -->
<p>
<div></div>
</p>
<!-- 浏览器解析后 -->
<p></p>
<div></div>
<p></p>
(二)a标签嵌套
a标签里是不能嵌套a的,如果嵌套了,则浏览器会解析成如下代码1
2
3
4
5
6
7<!-- 嵌套前 -->
<a href="https://www.cctv.com">
<a href="https://www.cctv.com"></a>
</a>
<!-- 浏览器解析后 -->
<a href="https://www.cctv.com"></a>
<a href="https://www.cctv.com"></a>
六、CSS属性继承
(一)所有元素都可以继承的属性
- 元素可见性:visibility
- 光标属性:cursor
(二)内联可以继承的属性
- 字体系列属性
- 除text-indent、text-align之外的文本系列属性
(三)块级可以继承的属性
- text-indent
- text-align
七、display:none与visibility:hidden的区别
- display : 隐藏对应的元素但不挤占该元素原来的空间。
- visibility : 隐藏对应的元素并且挤占该元素原来的空间。
八、height:100% 不起作用
(一)问题
1 | <html> |
(二)原因
因为页面并没有缺省的高度值,所以,当你让一个元素的高度设定为百分比高度时,无法根据获取父元素的高度,也就无法计算自己的高度。换句话说,父元素的高度只是一个缺省值:height: auto;当你要求浏览器根据这样一个缺省值来计算百分比高度时,只能得到undefined的结果。也就是一个null值,浏览器不会对这个值有任何的反应。
(三)解决
1 | <html style="height: 100%"> |
九、inline-block之间有空白
(一)问题
1 | <ul> |
(二)原因
浏览器的默认行为会把inline元素间的空白字符(空格换行tab)渲染成一个空格。也就是我们上面的代码li换行后会产生换行字符,而它会变成一个空格,当然空格就占用一个字符的宽度。
(三)解决
- 去掉换行,将所有li写在一排。
- 将ul内的字符尺寸(font-size)直接设为0。
十、单词拼写检查
(一)问题
如果在 类型为text型的input元素、textarea元素、里输入一些不能构成单词的字母时,下面会有一条红色波浪线,这是因为input默认是打开了拼写检查的原因。
(二)解决
1 | <textarea spellcheck="false">absolute testK</textarea> |
十一、transition动画导致文字模糊和抖动
(一)解决:添加backface-visibility
1 | .designer .d_item .slide-image{ |