CSS(1)|青训营笔记

106 阅读6分钟

这是我参与「第四届青训营 」笔记创作活动的的第1天

1、使用css修改元素样式

  • 方式一:内联样式,行内样式

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

    问题:使用内联样式,样式只能对一个标签生效 并且当样式发生变化时,我们需要一个一个修改 维护不方便

    开发时一定不要使用内联样式

    <p style = "color:red;font-size:60px;">
      少小离家老大回
    </p>
    
  • 方式二:将样式编写到head中的style标签中 然后通过css选择器来选中元素并为其设置各种样式

    可以同时给多个标签设置样式 并且修改时只用修改一次 方便进行复用

    问题:我们的内部样式只能对一个网页起作用,它里面的样式不能跨页面使用

    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            p{
                color: aqua;
            }
        </style>
    </head>
    <body>
        <p>nihenniu</p>
    </body>
    
  • 方式三:外部样式

    可以将css样式编写到一个外部css文件中 通过link标签来引入外部的css文件

    外部样式表需要通过link标签进行引用,意味着样式可以在不同页面之间进行复用

开发中常用

将样式编写到外部的css文件中,可以使用到浏览器的缓存机制,从而加快网页的加载速度,提高用户体验

<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="./demo1.css">
</head>

2、常用选择器

  • 元素选择器

    作用:根据标签名来选中指定元素

    语法:标签名{ }

    例子:p{ } h1{ } div{ }

  • id选择器

    作用:根据元素的id属性值选中一个元素

    语法:#id属性值{ }

    例子:#box{ }

    虽然id选择器在css中可以设置多个一样的id给他们相同的样式,但是js中操作元素时id必须唯一 所以id一定不能重复

  • 类选择器

    作用:根据元素的class属性值选中一组元素

    语法:.class属性值{ }

    例子:.blue{ }

    一个元素可以设置多个class

  • 通配选择器

    作用:选择页面中所有元素

    语法:*{ }

3、复合选择器

  • 交集选择器

    作用:选中同时符合多个条件的元素

    语法:选择器1选择器2选择器3选择器n{ }

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

    给所有div且类名为class1的元素添加样式

    div.class1{
      font-size:30px;
    }
    
  • 并集选择器(分组选择器)

    作用:同时选择多个选择器对应的元素

    语法:选择器1,选择器2,选择器3,选择器n{ }

    h1,span{
      color:green;
    }
    

4、伪类选择器

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

伪类用来描述一个元素的特殊状态 比如:第一个子元素、被点击的元素、鼠标移入的元素等

伪类一般情况下都是使用 :开头

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

  • :first-child 第一个子元素

  • :last-child 最后一个子元素

  • :nth-child(n) 选中第n个子元素 特殊值 写n的时候全选 2n/even表示选中偶数位的元素 2n+1/odd表示选中奇数位的元素

  • 以上这些伪类都是根据所有子元素进行排序的 如果在这些li标签前加入一个span标签 那么第一个元素不是li 则此样式不能在任何一个元素上生效

  • :first-of-type

  • :last-of-type

  • :nth-of-type(n)

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

    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            <!--动态的将ul里的第一个li设置为红色-->
            ul>li:first-child {
                color: aqua;
            }
        </style>
    </head><body>
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
        </ul>
    </body>
    
    • 内联样式 1000

    • id选择器 100

    • 类和伪类选择器 10

    • 元素选择器 1

    • 通配选择器 0

    • 继承的样式 没有优先级

      比较优先级时,需要将所有的选择器的优先级进行相加计算,最后优先级越高,则越优先显示

      注:分组选择器是单独计算的 选择器的累加不会超过其最大的数量级 类选择器再高也不会超过id选择器

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

      ---可以在某个样式后面添加 !important 则此时该样式会获取到最高的优先级,甚至超过内联样式 --

      注意:开发中,这个玩意慎用

      div{
        background-color:red !important;
      }
      

    选择器权重:

    发生样式冲突时,应用哪个样式由选择器的优先级决定

    样式冲突:当我们通过不同的选择器,选中相同的元素,并且为相同的样式设置不同的值时,此时就发生了样式的冲突

    5、选择器的权重

    比如背景相关、布局相关等这些样式都不会被继承

    注意,并不是所有样式都会被继承

    继承的设计是为了方便开发的,利用继承可以将一些通用的样式统一设置到共同的祖先元素上,这样只需要设置一次即可让所有元素都具有该样式

    样式的继承,我们为一个元素设置的样式同时也会应用到它的后代元素上

    6、继承

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

    • ::first-line 表示第一行

    • ::selection 表示选中的内容

    • ::before 元素的开始

    • ::after 元素的结束 默认情况下after伪元素为行内元素

      before和after属性必须结合content属性使用 凭空添加内容 这两个在开发中比较常用

    伪元素使用 ::开头

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

    7、伪元素选择器

    • :link 用来表示没访问过的链接(正常的链接)

    • :visited 用来表示访问过的链接

      由于隐私的原因,所以visited伪类只能修改链接的颜色

      以上两个伪类选择器只有a元素可以使用

    • :hover 用来表示鼠标移入状态 其他元素也可以使用

    • :active 用来表示鼠标点击 所有元素都可以使用

    8、a元素的伪类

    :link 用来表示没访问过的链接(正常的链接)

  • :visited 用来表示访问过的链接

    由于隐私的原因,所以visited伪类只能修改链接的颜色

    以上两个伪类选择器只有a元素可以使用

  • :hover 用来表示鼠标移入状态 其他元素也可以使用

  • :active 用来表示鼠标点击 所有元素都可以使用

9、伪元素选择器

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

伪元素使用 ::开头

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

  • ::first-line 表示第一行

  • ::selection 表示选中的内容

  • ::before 元素的开始

  • ::after 元素的结束 默认情况下after伪元素为行内元素

    before和after属性必须结合content属性使用 凭空添加内容 这两个在开发中比较常用