html中的标签分为三类:行标签,块标签,行内块标签
在html中,有些标签会默认带有一些样式,那么我们就认为有些标签不纯净,比如:行标签中b会使文本加粗,u会使文本加下划线,块标签中h1会加粗加黑,我们在对于这些非纯净的行标签和块标签进行编辑样式的操作时不容易且不清晰,不如直接使用CSS在最前面统一设置样式。而纯净的块标签指的是标签本身不会对文本有任何样式的作用 ,这样方便我们的编辑和样式的修饰,并通过CSS来控制样式而不是标签,纯净的行标签经常把文本包裹起来 :
CSS解耦举例:
font标签中字体的尺寸最大size是7,没办法只通过html将文本放的更大,而使用CSS中的font-size改变字体大小可以没有限制。
CSS与html结合的方式主要有以下三种:内联样式,内部样式,外部样式:
将CSS代码写在标签的内部,那么样式就会作用到该标签上
#内联举例: <div style="font-family: 宋体">你好,世界!</div>
style=“属性名1:值1;属性名2:值2…;”
注:其中可做选择的属性有:color(文本颜色),font-size(字体大小),font-family(字体)等可供选择
将CSS代码单独写在页面内部,通过选择器选择一个或多个标签进行样式的展示和控制;
#内部样式举例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> div{ font-family: 宋体; font-size: 50px; color: red; } </style> </head> <body> <div>Hello,world!</div> </body> </html>
将CSS代码单独写在一个文件中,哪个页面想要用这个样式,就可以引用该样式,一次控制一次或多个页面,复用性更高,开发首选:
#外部举例: <link rel="stylesheet" type="text/css" href="css/test.css"/> #使用时需要在该文件路径中创建一个名为css的文件夹 #并在文件夹中新建.css文件:test.css #在test.css中书写对应的css属性进行控制,例如下面的: div{ font-family: 宋体; font-size: 50px; color: red; }
针对上面的样式选择中,如果使用内联样式则不需要考虑对应选择器的选用,而对于开发中常选择内部样式和外部样式,选择器是不可避免的,而选择器的选取有利于提高代码复用性等,以下重点介绍三种最常用的选择器以及一些其他的选择器:
id选择器经常作为针对某一个特定标签的样式编辑进行的选择,id选择器又称名选择器,即通过名字去选择对应标签:
#上面的style标签中CSS修饰如下: #test{ font-size: 20px; color: blue; } #对应在下面出现以及被控制的标签如下: <div id="test">测试</div>
class选择器又称为类选择器,即将一些可以算作一类的标签进行统一的样式编辑,在定义标签时需要将标签的类先定义好:
#上面的style标签中CSS修饰如下: .t1{ font-size: 30px; color: blue; } .t2{ font-size: 40px; color: red; } #对应在下面出现以及被控制的标签如下: <div class="t1">测试1</div> <div class="t1">测试2</div> <div class="t2">测试1</div> <div class="t2">测试2</div>
标签名选择器是针对于一系列标签名进行编辑的,即可以一次性选择一个或多个标签(同名/同类型标签),按标签的名称进行选择:
#上面的style标签中CSS修饰如下: div{ font-size: 15px; color: black; } span{ font-size: 50px; color: #4cae4c; } #对应在下面出现以及被控制的标签如下: <div>测试1</div> <div>测试2</div> <span>测试1</span> <span>测试2</span>
依据标签中的嵌套关系进行层层向内的选择,方向是从外到内,使用空格将标签中的嵌套隔开,如:div ul li a{},选中标签嵌套中的如下标签:
<div> <ul> <li> <a>
注意可以将选择器结合,在上面的例子中如果有多个div仅想让一个div有效果就可以命名该div的id为d1,使用选择器:#d1 ul li a{}依旧可以进行选择,同样也可以结合类选择器等等
在前面的标签名选择器,id选择器和类选择器的基础上使用逗号隔开需要控制的多个并列级的标签,如:h1,h2,h3{},选中的标签是:
<h1></h1> <h2></h2> <h3></h3>
同样选择器之间可以进行灵活地组合:如:h1,#t2,.tn{}选择的标签有标签h1,id为t2的 标签,属于类tn的标签
全局通配: 使用通配符星号可以选择所有标签,如:
*{}
会选择所有标签;
局部通配: 使用通配符之间的组合进行局部的通配,在指定标签名之后使用*对于该标签名中的全部标签,即指明一定的范围,如:
div *{}
选中的标签仅div标签下包含的所有标签;
原先的设计目的是针对a标签(即链接)的四种状态:链接状态,鼠标悬浮状态,鼠标按下状态,链接访问后的状态:
以a标签为例阐述四种伪类选择器:
注意:
[1]链接的页面展示中如果不想出现下划线,在{}中使用:text-decoration:none 进行去下划线;
[2]悬浮和按下对于其他标签都有效果,如div标签,可以使交互界面更加丰富
子选择器针对的是标签嵌套,举例:
<div id="fu"> <div id="zi"></div> </div>
则外层的div标签id为fu,内层的div标签id为zi;
相邻选择器是针对两个挨着的标签进行选择和控制,例如:
对于自带属性的标签,如:
需要控制h1标签中align=“center”,针对携带align属性的标签选择:h1[align]{} 可以选择有align属性的h1标签;[align]{} 可以选择所有标签中含align的标签,h1[align=‘center’] 可以直接选中上面的示例标签;注意属性选择器中有许多针对不同情况的语法
伪元素选择器针对的是标签中的文本中的元素进行编辑,如:
选中p标签中首字母:p::first-letter{}
选中id为p的标签中的首行:#p::first-line{}
对于同一个div标签可以通过多种选择器进行对应的选择,如:id选择,class选择,标签名选择进行选择,但是当出现三个控制属性中没有属性重复的部分,那么按理来说会将三种选择器中的效果均呈现出来,但是在实际情况中,当出现冲突的时候会依据优先级进行相应的选择,即按优先级由高到底的顺序进行选择: