使用CSS来修改元素的样式

第一种方式(内联样式/行内样式):

  在标签内部通过style属性来设置元素的样式

第二种方式(内部样式表):

  将样式编写到head中的style标签里

第三种方式(外部样式表):

  将CSS样式写到一个外部CSS文件中通过link标签来引入

  最大的优点在于可以使用到浏览器的缓存机制,从而加快网页的加载速度,提高用户体验

 

CSS基本语法:

  1、选择器:通过选择器可以选中页面中的指定元素

    元素选择器:根据标签名来选中指定的元素,标签名{}

    id选择器:根据元素的id属性值来选中一个元素,#id属性值{}

    类选择器:根据元素的class属性值选中一组元素,.class属性值{}

    通配选择器:选中页面中所有元素,*{}

  2、声明块:通过声明块来指定要为元素设置的样式

 

交集选择器:选中同时符合多个条件的元素,选择器1选择器2...选择器n{}

注意点:交集选择器如果有元素选择器,必须使用元素选择器开头

并集选择器:同时选择多个选择器对应的元素,选择器1,选择器2,...,选择器n{}

子元素选择器:选中指定父元素的指定子元素,父元素 > 子元素

后代元素选择器:选中指定元素内的指定后代元素,祖先 后代

选择下一个兄弟,前一个 + 下一个

选择下边所有的兄弟,兄 ~ 弟

属性选择器:选择含有指定属性的元素,[属性名]

      选择含有指定属性和属性值的元素,[属性名=属性值]

      选择属性值以指定值开头的元素,[属性名^=属性值]

      选择属性值以指定值结尾的元素,[属性名$=属性值]

      选择属性值中含有属性值的元素,[属性名*=属性值]

 

伪类(不存在的类,特殊的类)

  伪类用来描述一个元素的特殊状态,例如第一个子元素、被点击的元素

  伪类一般都是使用:开头

    :first-child 第一个子元素

    :last-child 最后一个子元素

    :nth-child() 选中第n个子元素

      特殊值:n 第n个 n的范围是0到正无穷

          2n 或 even 表示选中偶数位的元素

          2n+1 或 odd 表示选中奇数位的元素

    以上这些伪类都是根据所有的子元素进行排序

    :first-of-type

    :last-of-type

    :nth-of-type()

    这几个伪类的功能和上述相似,不同点是它们在同种类型元素中进行排序

    :not() 否定伪类:将符合条件的元素从选择器中去除

 

  <a>标签的伪类

  :link(a标签独有) 表示没访问过的链接(正常的链接)

  :visited(a标签独有) 表示已经访问过的链接,由于隐私的原因,visited只能改变链接的颜色

  :hover(所有标签均适用) 表示鼠标移入的状态

  :active(所有标签均适用) 表示鼠标点击的时候

 

伪元素(页面中一些特殊的并不真实存在的元素,特殊的位置)

  伪元素使用::开头

  ::first-letter 表示第一个字母

  ::first-line 表示第一行

  ::selection 表示选中的内容

  ::before 元素的开始

  ::after 元素的最后

    before和after必须结合content属性来使用

 

样式的冲突

  通过不同的选择器选择同一个元素,并且为相同的样式设置不同的值时就发生了样式的冲突

当发生样式冲突时应用哪个样式由选择器的权重(优先级)决定

选择器的权重

  内联样式           1,0,0,0

  id选择器            0,1,0,0

  类和伪类选择器 0,0,1,0

  元素选择器        0,0,0,1

  通配选择器        0,0,0,0

  继承的样式        没有优先级

比较优先级时,需要将所有选择器的优先级相加计算,最后优先级越高,则优先显示(分组选择器是分别计算的)

  选择器的累加不会超过其最大的数量级,类选择器再高也不会超过id选择器

  如果优先级计算后相同,则使用靠下的样式

可以在某一个样式的后边添加!important,此时会具有最高的优先级,甚至超过内联样式

  注意,在开发中慎用!