CSS有4种定义方式:javascript
一、类:名称前面是一个点,须要注意的是类其实是属性,点前面若是没有其它内容,则默认是全局的,有的话,是专门那个对象的java
二、ID:名称前面是个"#",这种专门用于对象的id属性的,本质上做用就是当你使用id的时候若是又想设置样式, 那么就没必要再写class属性了。.net
还能避免其它id使用此属性,由于id 必须惟一。固然,这种避免基本没用,由于你无需避免,不用就好了对象
三、标签:其实每一个内置标签,好比p, a, img, 都有预置好了的样式,固然还有其它做用。可是这个本质上和自定义标签是同样的,只不过内部已经定义好了继承
四、伪类:事件
伪类只有4种: link,hover,active,visitedip
从名称来看,是专门针对超连接标签a的, 可是后来扩展到其它任何标签get
伪类的本质是描述不一样状态下的样式自动切换it
若是不用伪类,你能够用JavaScript在相应的事件里本身处理。伪类提供了一个简单的方法class
五、CSS标签伪类的写法:
伪类冒号的两端不能有空格, 这说明,冒号实际上是一个链接符,和点号是属性的链接符同样,
由于CSS的空格表示不一样的对象,也就是说,任何CSS样式名称若是之间有空格,那么就别认为是两个标签,而不是一个。
(1) 若是没空格,就被认为是一个标签,例如div:hover{color:red}
这个CSS语句实际上只定义了一个CSS对象,就是div:hover,或者说给div添加了一个属性hover,
这个属性不一样于通常的属性,它响应鼠标移动过来的消息,使用的时候不用写hover,全部div都自动会响应鼠标移过来, 颜色变成红色
(2)而div.hover{color:red}
这个CSS语句也只定义了一个CSS对象,就是div.hover,
这等于给div添加了一个普通属性hover, 这个属性怎么用呢?
须要你在div标签里写class="hover", 必须这么用,不然不起做用
(3)div .hover{color:red}又表示什么呢?
由于div和.hover之间有个空格,这其实是两个标签,可是描述了一种继承关系,
咱们定义的hover样式,必须在div的下一级标签里设置才起做用, div外边和div自身设置class="hover"都不起做用
更多的也是同样,div .hover .abc,
表示3重继承关系, 想要这个样式起做用,就须要div下面的一个标签设置class为hover,这个标签内部的子标签再设置class为abc, 这样才行
(4)div,.hover{color:red}
在div和.hover之间有个逗号, 这实际上是一种并列关系,是一种简写,等价于div{color:red} .hover{color:red}这样两个标签订义
CSS样式标签能够重复定义,后面定义的样式会添加或者覆盖
(5)还有更怪异的写法: div.hover.abc{color:red},
之间没有空格, 此时实际上定义的是div属性hover的属性abc的样式, 怎么使用它呢?
由于这种基本没什么用,没有引入特殊的使用规则,就是<div class="hover abc">文本</div>这样
(奇怪的是"abc hover"这样反着写也行,其实是并列关系),这和使用两个样式的状况会冲突,单看这里你不知道hover和abc是否是两个类。
总之若是此时又有同名的全局,好比abc样式,hover样式,那么也会一股脑全用上, 固然, div.hover.abc会有优先权。