3.1 CSS概述

  1. CSS概述:

    1. HTML负责网页的内容
    2. CSS(层叠样式表):负责内容的样式,内容和样式相分离,便于修改样式
  2. CSS语法:

    选择器p:选择器后面跟着{},{}内可以添加具体的样式,每个具体样式是用不同的属性来添加的,属性和属性取值之间用:隔开,每一行语句结束用;隔开(可以没有)

1. CSS简介

  1. 网页分三部分:

    结构(HTML)
    表现(CSS)
    行为(JavaScript)

  2. 网页实际上是一个多层结构,通过CSS可以分别为网页的每一层来设置样式,而最终能看到的只是网页最上面一层,CSS用来设置网页中元素的样式

2. CSS编写位置

  1. 第一种(内联样式/行内样式):在标签内部通过style属性来设置元素的样式,style后跟名,名后跟值,值和值之间用;结尾

    问题:使用内联样式,样式只能对一个标签生效,如果希望影响到多个元素必须在每一个元素中都复制一遍,并且当样式发生变化时,必须一个个修改,非常不便,开发时一定不要使用内联样式

    \<p style="color:red; font-size: 20px">test\</p>

    test

  2. 第二种(内部样式表):将样式编写到head中的style标签里,然后通过CSS选择器来选中元素并为其设置各种样式,可以同时为多个标签设置样式,并且修改时只需要修改一处即可全部应用

    内部样式表更加方便对样式进行复用

    问题:内部样式表只能对一个网页起作用,它里面的样式不能跨网页进行复用

 <style>
     p {
         color: yello;
     }
 </style>
  1. 第三种(外部样式表):可以将CSS样式编写到一个外部的CSS文件中(名字是啥不重要,扩展名必须是css),然后通过link标签来引入外部的CSS文件(写head里)

    p {
        color = red;
    }
    
    <link rel="stylesheet" href="./style.css">

    这样意味着只要想使用这些样式的网页都可以对其引用,使样式可以在不同网页之间进行复用

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

3.CSS基本语法

  1. 在CSS区域,使用HTML语法无效
  2. CSS基本语法:

    1. 选择器:通过选择器可以选中页面中的指定元素,比如p的作用是选中页面中所有的p元素
    2. 声明块:通过声明块来指定要为元素设置的样式,声明块由一个个的声明组成,声明是一个名值对结构,一个样式名对应一个样式值,样式名和样式值之间用:连接,以;结尾(样式名之间的;不能省略,最后的;可以省略)
   p {
       color: red;
   }

4.CSS常用选择器

  1. 元素选择器

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

    语法:标签名{}

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

  2. id选择器

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

    语法:#id属性值{}

    例子:

   #box{} or #red{
       color: red;
   }
   
   <p id="red">test</p>
  1. 类选择器

    作用:根据元素的class属性选中一组元素,类似id,但可以用多次,而且可以为一个元素指定多个class属性(多个class之间用空格隔开)

    语法:.class属性值

    例子:

   .blue{
       color: blue;
   }
   
   <h1 class="blue abc">test</h1>
  1. 通配选择器

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

    语法:*

    例子:*{}

5. 复合选择器

  1. 交集选择器

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

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

    <head>
        <style>
            .red{
                color= red;
            }
            div.red{
                font-size: 30px;
            }
        </style>
    </head>
    
    <body>
    <div class="red">test01</div>
    
    <p class="red">test02</p>
    </body>

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

  2. 选择器分组(并集选择器):

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

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

6. 关系选择器

  1. 几个关系:

    父元素:直接包含子元素的元素叫做父元素

    子元素:直接被父元素包含的元素是子元素

    祖先元素:直接或间接包含后代元素的元素叫做祖先元素,一个元素的父元素也是他的祖先元素

    后代元素:直接或间接被祖先元素包含的元素叫做后代元素

    兄弟元素:拥有相同的父元素的元素是兄弟元素

  2. 子元素选择器:

    作用:选中指定父元素的指定子元素

    语法:父元素 > 子元素

  3. 后代选择器

    作用:选中指定元素的指定后代元素

    语法:祖先 后代

  4. 兄弟元素选择器:

    作用:选择下一个兄弟

    语法:前一个 + 下一个

    作用:选择下边所有兄弟

    语法:前一个 ~ 下一个

<!-- 子元素选择器 -->
div > span{}
div > p > span{}
<!--后代选择器-->
div span{}
<!-- 兄弟选择器 -->
p + span{}<!--选择p后的下一个span标签-->
p ~ span{}<!--选择p后的所有span标签-->
<body>
    <div>
        我是div
        <p>
            我是div中的p元素
            <span>我是p元素中的span</span>
        </p>

        <span>我是div中的span元素</span>
    </div>
</body>

7. 属性选择器

  1. 选择含有指定属性的元素:标签名[属性名]
  2. 选择含有指定元素和属性值的元素:标签名[属性名=属性值]
  3. 选择以abc开头的元素:标签名[属性名^=属性值]
  4. 选择以abc结尾的元素:标签名[属性名$=属性值]
  5. 选择属性值中含有abc的元素:标签名[属性名*=属性值]
p[title]{}
p[title=abc]{}

<body>
    <p title="abc">test01</p>
    <p title="abcdef">test02</p>
    <p title="hello">test03</p>
    <p>test04</p>
    <p>test05</p>
    <p>test06</p>
</body>

8. 伪类选择器

伪类选择器两个:,伪元素选择器两个:

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

  • 伪类用来描述一个元素的状态

    • 比如:第一个子元素、被点击的子元素、鼠标移入的元素
  • 伪类一般情况下都是:开头

    :first-child 第一个子元素

    :last-child 最后一个子元素

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

    • 以上的这些伪类都是根据所有子元素进行排序,ul > li:first-child指所有元素中的第一个子元素,还得是li

    :first-of-type

    :last-of-type

    :nth-of-type()

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

    :not() 否定伪类

    ​ - 将符合条件的元素从选择器中去除

<!--将ul里的第一个li设置为红色-->
ul > li:first-child{
    color: red;
}
<!--将ul里的最后一个li设置为红色-->
ul > li:last-child{
    color: red;
}
<!--
将ul里的第1个li设置为红色
特殊值:
    n 第n个 n的范围0到正无穷
    2n 表示选中偶数位的元素
    even 表示选中偶数位的元素
    2n+1 表示选中奇数位的元素
    odd 表示选中奇数位的元素
-->
ul > li:nth-child(1){
    color: red;
}
//将第三个子元素元素从符合条件中筛去
ul > li:not(:nth-of-type(3)){
    color: green
}
<ul>    <li>第一个</li>    <li>第二个</li>    <li>第三个</li>    <li>第四个</li>    <li>第五个</li></ul>

9. a元素的伪类

a标签的状态:

  • 没有访问过的链接
  • 访问过的链接
<style>
{
   /*
   :link 用来表示没访问过的链接(正常的链接)
   */
   a:link{
      color: red;
   }
   /*
   :visited 用来表示访问过的链接

   由于隐私的原因,所以visited伪类只能修改链接的颜色,不能修改大小等
   */
   a:visited{
      color: yellow;
   }
   /*
   :hover 用来表示鼠标移入的状态,所有链接都能用
   */
   a:hover{
      color: aqua;
      font-size: 50px;
   }
   /*
   :active 用来表示鼠标点击,所有链接都能用
   */
   a:active{
      color: orange;
      font-size: 50px;
   }
}

<a href="http://www.baidu.com">访问过的链接</a>
<a href="http://www.baidu123.com">没访问过的链接</a>

9. 伪元素选择器

/*
伪元素:表示页面中一些特殊的并不存在的元素(特殊的位置)
   伪元素使用::开头

   ::first-letter 表示第一个字母
   ::first-line 表示第一行
   ::selection 表示选中的内容
   ::before 元素的开始
   ::after 元素的最后
      -before和after必须结合content属性来使用(不然元素开始和最后没有东西)
*/
<style>
   p::first-letter{//首字母下沉
      fint-size: 50px;
   }

   p::first-letter{
      background-color: yellow;
   }

   p::selection{
      background-color: greenyellow;
   }

   p::before{
      content: 'abc';
      color: red;
   }

   p::after{
      content: 'abc';
      color: blue;
   }
</style>

<p>
   Hello!This is my blog!
   Hello!This is my blog!
   Hello!This is my blog!
</p>

10. 样式的继承

样式的继承,我们为一个元素设置的样式同时也会应用到它的后代元素上,只要是元素的后代,无论嵌套多少都会继承

继承是发生在祖先和后代之间的

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

注意:并不是所有的样式都会被继承,比如:背景相关的,布局相关的等,这些样式都不会被继承

11. 选择器的权重

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

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

  1. 选择器权重(权重越大优先级越高,越优先显示)

  内联样式  1000

  id选择器  100

  类和伪类选择器  10

  元素选择器  1

  通配选择器  0

  继承的样式  没有优先级

  比较优先级时需要将所有的选择器的优先级进行相加计算,最后优先级越高,则越优先显示(分组选择器是单独计算的),选择器的累加不会超过其最大的数量级类选择器再高也不会超过id选择器

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

  可以在某一个样式的后边添加 !important,则此时的样式会获取到最高的优先级,甚至超过内联样式,注意:在开发中这个要慎用

12. 单位

  1. 长度单位:

  像素:

    - 屏幕上(显示器)实际上是由一个一个的小点点构成的

    - 不同屏幕的像素大小是不同的,像素越小的屏幕显示的效果越清晰

    - 所以同样的200px在不同的设备下显示效果不一样

style{
  .box1{
    width:200px;
    height:200px;
    background-color:orange;
  }
}

  百分比:

    - 也可以将属性设置为相对于父元素的百分比

    - 设置百分比可以使子元素跟随父元素的改变而改变

style{
  .box2{
    width:50%;
    height:50%;
    background-color:aqua;
  }
}

13. em和rem

  1. em

  - em是相对于元素的字体大小来计算的,1em = 1font-size

  - em会根据字体大小的改变而改变

  1. rem

  - rem是相对于根元素的字体大小来计算(html的font-size)

style{

  html{
    font-size:20px;
  }

  .box3{
    width:10rem;
    height:50rem;
    background-color:aqua;
  }
}
  1. 颜色单位

  在css中可以直接使用颜色名来设置各种颜色,比如:red,yellow,blue等,但是在css中直接使用颜色名是非常的不方便

  RGB值:

    - RGB通过三种颜色的不同浓度来调配出不同的颜色

    - R red,G green,B blue

    - 每一种颜色的范围在0-255(0% - 100%)

    - 语法: RGB(红色,绿色,蓝色)[光的三原色]

style{
  .box3{
    width:10rem;
    height:50rem;
    background-color: rgb(255, 0, 0);
  }
}

  RGBA:

    - 在RGB基础上多了个A->透明度,需要四个值,前三个和rgb一样,第四个表示不透明度

    - .5表示半透明,1表示完全不透明

style{
  .box3{
    width:10rem;
    height:50rem;
    background-color: rgba(255, 0, 0, .5);//不透明度0.5,1表示完全不透明
  }
}

  十六进制的RGB值:

    - 语法: #红色绿色蓝色

    - 颜色浓度通过 00-ff

    - 入宫颜色两位两位重复,可以进行简写#aabbcc -> #abc,如果是#aabbcd就不能简写

style{
  .box3{
    width:10rem;
    height:50rem;
    background-color: #ff0000;//不透明度0.5,1表示完全不透明
  }
}
最后修改:2021 年 11 月 17 日
如果觉得我的文章对你有用,请随意赞赏