一、CSS的基本了解
CSS代码,主要由两部分构成:
选择器{
属性:值;
}
选择器:决定针对哪些元素进行修改
属性和值都是针对被选中的元素进行的。
举个例子:
style标签里面就可以放置CSS代码,一个html文件中可以把style放到任意位置,但是一般习惯上放到head标签中,并且style可以存在多份~
二、CSS的另外两种使用规则
1.行内样式表-内联样式表
通过标签的style 属性来设置的样式,不需要写选择器(只是针对当前标签生效)
注意:行内样式的优先级高于上面所说的内部样式(即使用选择器),如果两边同时尝试设置不同的属性值时,行内样式会覆盖内部样式~
可以看到,内部样式和行内样式同时针对p标签的颜色、字体大小进行了设置,但此时在页面中起到作用的是行内样式~
2.外部样式表
当CSS进一步的复杂了之后,就可以把CSS单独放到一个文件中,然后再html中单独引入~
此时在html中引入TEST1.CSS,TEST1.CSS就称为外部样式表,通过实验link标签来引入一个外部的CSS,href属性就描述了css的位置,rel属性表示引入的文件类型,stylesheet就表示“样式表”。此时就说明了引入了一个名叫TEST1.CSS的外部样式表。我们可以看到,在压面中div标签中的内容就是通过这个TEST1.CSS中的内容来设置的~
注意:外部样式写的代码,如果代码修改了,不一定为立即生效!!!(受限于游览器缓存的影响)
原因是:当浏览器首次访问网站的时候,就会下载这下css到本地,后面第二次再访问的时候,这些css就不必再重新下载(浏览器缓存),存在的意义就是为了提高访问速度~
解决措施:强制让浏览器刷新就OK,强制浏览器从服务器重新下载CSS(ctrl + F5)~
有没有什么措施能够避免这种情况呢?当然有,对于小白来说,可能并不知道这里的强制刷新操作,那么在实际开发中,采取的思路就是,如果CSS文件修改了,就改一下css文件的名字,此时当浏览器在加载css的时候发现这个新的css文件之前没有缓存过,就会自动去重新加载CSS,这样就能保证新版本的CSS一定会被浏览器加载!
三、CSS选择器
1.基础选择器
(1).标签选择器
选中一类标签,就会让当前页面的所有这类标签都被选中~选择器部分直接写标签名~
此时可以看到所有的p标签都按照CSS中的标签选择器所修改~
(2).类选择器
在标签选择器中,范围太大了,有的时候,希望只修改其中的一个元素,其他的元素不修改,因此,就需要使用类选择器~这里的类仅仅是一个分类的效果。
在CSS中创建“类”通过这个类来手动指定哪些元素要遵守该样式~
.开头表示的是类,.后面的部分是类的名字。
在具体要应用选择器的元素上,通过class属性来引入,引入的时候不需要加点
类选择器一般就是有一些元素都需要使用相同样式的时候使用,就可以给多个元素都引用同一个类~
应当注意的是:一个类可以被多个标签使用,一个标签也可以使用多个类~
此时我们可以看见,“明天见”这个p标签,不仅使用了green类,还使用了font类!类和类之间通过空格来分割,类名不可以是数字、中文开头,也不能是标签名!
(3).id选择器
每个html元素都有一个id属性,要求这个属性是整个页面中唯一的值,也可以通过这个值来找到对应的元素!
id选择器在创建的时候要#开头,引用的时候,id属性中也不需要加#。
id选择器相当于是按照“身份证”来找,而类选择器相当于按照“类别”来找,一个类别下可以有很多元素,一个元素也可以属于多个类别~
(4).通配符选择器
*{
}
选中页面中所有的元素,存在的意义往往是“消除浏览器默认样式”,
2.复合选择器
把基础选择器组合起来,达到一个更精准更快速的定位元素的效果。
(1).后代选择器
先指定一个父元素,然后再指定一个子元素
后代并不一定非的是子元素,也可以是孙子元素
后代选择器不一定非得是标签选择器的组合,也可以是任意的基础选择器的组合~
后代选择器可以有很多层
先找到类名为list的元素,然后再找到里面的li标签,再找到里面的a标签。
li不一定是.list的子元素,也可以是孙子元素等。
a也不一定是li的子元素,也可以是孙子元素等。
嵌套关系可以是多层的,并非只有一层~
(2).子选择器
只能选中子标签
元素1>元素2{
属性:值;
}
先找到元素1,然后在元素1里面找元素2,元素2必须是元素1的子元素,不能是孙子元素等。
此时就是先从类为list的元素,然后再在里面找li元素,再在li元素里面找a元素,必须是层层嵌套的,不能越过哪一级~
扩展知识:使用Emmet快捷键生成html代码:
扩展技巧:“列模式”:VSCode通过alt同时选中多个列,多列同时输入
(3).并集选择器
一次选中多个标签
元素1,元素2{
属性:值;
}
元素1和元素2被共同设置了一样的样式~
元素1和元素2之间使用逗号隔开~
同时元素1和元素2都可以是一些复杂的选择器~
(4).伪类选择器
带:的就是“伪类选择器”
4.1、链接伪类选择器
和a标签搭配使用
根据a标签的状态来选择
a标签的几种状态:
1.未被访问过 :link
2.已经被访问过 :visited
3.鼠标悬停 :hover
4.活动链接(点下之后没松手) :active
其中第三点和第四点不仅仅是针对a标签,针对其他标签也适用~
例子:
4.2、:force伪类选择器
表示获取焦点的时候被选中,尤其是针对输入框,就需要知道哪个输入框是获取到了焦点~
此时鼠标点哪个输入框,哪个输入框的光标就显示红色~拿走就恢复原本的颜色~