CSS基础与选择器

CSS简介

网页分成三个部分:

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

CSS

    - 层叠样式表
    - 网页实际上是一个多层的结构,通过CSS可以分别为网页的每一个层来设置样式
       而最终我们能看到只是网页的最上边一层
    - 总之一句话,CSS用来设置网页中元素的样式    

使用CSS来修改元素的样式的三种方法

第一种方式(内联样式,行内样式)

- 在标签内部通过style属性来设置元素的样式
- 问题:
      使用内联样式,样式只能对一个标签生效,
       如果希望影响到多个元素必须在每一个元素中都复制一遍
        并且当样式发生变化时,我们必须要一个一个的修改,非常的不方便
- 注意:开发时绝对不要使用内联样式
/*在标签内用style属性设置样式*/
 <p style="color: red; font-size: 60px;">今天天气真不错!</p>

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

- 将样式编写到head中的style标签里
  然后通过CSS的选择器来选中元素并为其设置各种样式
   可以同时为多个标签设置样式,并且修改时只需要修改一处即可全部应用
- 内部样式表更加方便对样式进行复用
- 问题:
     我们的内部样式表只能对一个网页起作用, 它里边的样式不能跨页面进行复用
/*在head中使用style标签编写样式*/
<head>
<style>
        p{
            color: green;
            font-size: 50px;
        }
 </style> 
 </head>

第三种方式 (外部样式表) 最佳实践

- 可以将CSS样式编写到一个外部的CSS文件中,
     然后通过link标签来引入外部的CSS文件
- 外部样式表需要通过link标签进行引入,
    意味着只要想使用这些样式的网页都可以对其进行引用
    使样式可以在不同页面之间进行复用
- 将样式编写到外部的CSS文件中,可以使用到浏览器的缓存机制,
  从而加快网页的加载速度,提高用户的体验。
/*从外部引入css文件*/
<link rel="stylesheet" href="./style.css">

CSS的基本语法

选择器 声明块

 选择器:
       通过选择器可以选中页面中的指定元素
       比如 p 的作用就是选中页面中所有的p元素
          
  声明块:
         通过声明块来指定要为元素设置的样式
         声明块由一个一个的声明组成,声明是一个名值对结构
         一个样式名对应一个样式值,名和值之间以:连接,以;结尾  
/*CSS基本语法*/
 p{
        color: red;
        font-size: 40px;
      }

      h1{
          color: green;
      }

选择器

常用选择器
  • 元素选择器

     作用:根据标签名来选中指定的元素
          语法:标签名{}
           例子:p{}  h1{}  div{}
    
  • id选择器

     作用:根据元素的id属性值选中一个元素
      语法:#id属性值{}
      例子:#box{} #red{}  
    
  • 类选择器

     作用:根据元素的class属性值选中一组元素
     语法:.class属性值
    
  • 通配选择器

    作用:选中页面中的所有元素
    语法: *
    
复合选择器

交集选择器

作用:选中同时符合多个条件的元素
语法:选择器1.选择器2.选择器3.选择器n{}
 注意点:
     交集选择器中如果有元素选择器,必须使用元素选择器开头   
<style>
 /* 将class为red的div字体大小设置为30px */
div.red{
            font-size: 30px;
        }
        
</style>
<body>
    <div class="red">我是div</div>

    <p class="red">我是p元素</p>
</body>

-选择器分组(并集选择器)

作用:同时选择多个选择器对应的元素
语法:选择器1,选择器2,选择器3,选择器n{}
     #b1,p1,h1,span,div.red{}
<style>
/*将h1,以及span中的字体设置为绿色*/
 h1, span{
            color: green
        }
</style>

<body>
     <h1>标题</h1>
    <span>我是span</span>
 </body>
关系选择器

在学习关系选择器之前元素之间都有哪些关系

父元素
     - 直接包含子元素的元素叫做父元素
子元素
     - 直接被父元素包含的元素是子元素
祖先元素
     - 直接或间接包含后代元素的元素叫做祖先元素
     - 一个元素的父元素也是它的祖先元素
后代元素
     - 直接或间接被祖先元素包含的元素叫做后代元素
     - 子元素也是后代元素
兄弟元素
     - 拥有相同父元素的元素是兄弟元素
  • 子元素选择器

     作用:选中指定父元素的指定子元素
     语法:父元素 > 子元素
    
<style>
/*为div的子元素span设置一个字体颜色红色
(为div直接包含的span设置一个字体颜色)*/
div.box > span{
            color: orange;
        }
</style>
<body>
   <div class="box">
<span> 我是div中的span </span> 
</div>
</body> 

- 后代元素选择器:

   作用:选中指定元素内的指定后代元素
   语法:祖先 后代
<style>
/*将div中所有的span元素字体改为蓝色*/
div span{
             color: blue
         }
</style>

<body>
     <div>
     <span> 我是div中的span </span>  /*选中*/
     <p> 我是div中的p 
     <span> 我是p中的span </span>   /*选中*/
     </p>
     </div>
 </body>
  • 兄弟元素选择器

    选择下一个兄弟
         语法:前一个 + 下一个
    选择下边所有的兄弟
         语法:兄 ~ 弟
    
<style>
/*选择p元素的下一个兄弟span*/
  p + span{
              color: red;
          }
/*选择p元素的下所有兄弟span*/
  p ~ span{
              color: red;
          }
 </style>
 <body>
     <div>
        我是一个div
        <p>
            我是div中的p元素
            <span>我是p元素中的span</span>
        </p>
        <span>我是div中的span元素</span>
        <span>我是div中的span元素</span>
    </div>
属性选择器
 选择含有指定属性的元素
 语法:元素[属性名]
<style>
/*选择p元素中含有title属性的元素*/
   p[title]{
      color: orange;
   }
</style>
<doby>
    <p title="abc">少小离家老大回</p>   /*选中*/
    <p title="abcdef">乡音无改鬓毛衰</p>  /*选中*/
    <p> 没有属性  </p>  /*不选中*/
 </doby>
 选择含有指定属性和属性值的元素
 语法:元素 [属性名=属性值] 
<style>
/*选择p元素中含有title属性的元素*/
   p[title="abc"]{
      color: orange;
   }
</style>
<doby>
    <p title="abc">少小离家老大回</p>   /*选中*/
    <p title="abcdef">乡音无改鬓毛衰</p>  /*不选中*/
    <p> 没有属性  </p>  /*不选中*/
 </doby>
选择属性值以指定值开头的元素
语法:[属性名^=属性值] 
<style>
/*选择以abc开头为属性值的元素*/
   p[title^="abc"]{
      color: orange;
   }
</style>
<doby>
    <p title="abc">少小离家老大回</p>   /*选中*/
    <p title="abcdef">乡音无改鬓毛衰</p>  /*选中*/
    <p> 没有属性  </p>  /*不选中*/
</doby>
 选择属性值以指定值结尾的元素
 语法:[属性名$=属性值]
<style>
/*选择以ef结尾为属性值的元素*/
   p[title$="ef"]{
      color: orange;
   }
</style>
<doby>
    <p title="abc">少小离家老大回</p>   /*不选中*/
    <p title="abcdef">乡音无改鬓毛衰</p>  /*选中*/
    <p> 没有属性  </p>  /*不选中*/
</doby>
选择属性值中含有某值的元素的元素
语法:[属性名*=属性值] 
<style>
/*选择含有e的属性值的元素*/
   p[title$="e"]{
      color: orange;
   }
</style>
<doby>
    <p title="abc">少小离家老大回</p>   /*不选中*/
    <p title="abcdef">乡音无改鬓毛衰</p>  /*选中*/
    <p> 没有属性  </p>  /*不选中*/
 </body>
伪类选择器
伪类(不存在的类,特殊的类)
 - 伪类用来描述一个元素的特殊状态
     比如:第一个子元素、被点击的元素、鼠标移入的元素...
 - 伪类一般情况下都是使用:开头
  • :first-child,第一个子元素
<style>
/*选择ul元素的第一个li子元素*/
      ul > li:first-child{
                      color: red;
                   }
</style>

<body>
    <ul>
        <span>我是一个span</span>  /*不选中*/
        <li>第一个</li>            /*选中*/
        <li>第二个</li>           /*不选中*/
        <li>第三个</li>           /*不选中*/
    </ul>
 </body>
  • :last-child,最后一个子元素
<style>
/*选择ul元素的最后一个li子元素*/
      ul > li:last-child{
                      color: red;
                   }
</style>

<body>
    <ul>
        <span>我是一个span</span>  /*不选中*/
        <li>第一个</li>            /*不选中*/
        <li>第二个</li>           /*不选中*/
        <li>第三个</li>           /*选中*/
    </ul>
 </body>
  • :nth-child(),选中第n个子元素

     特殊值:
          n 第n个 n的范围0到正无穷
          2n 或 even 表示选中偶数位的元素
           2n+1 或 odd 表示选中奇数位的元素
    
<style>
/*选择ul元素的奇数个li子元素*/
      ul > li:nth-child(2n+1){
                      color: red;
                   }
</style>

<body>
    <ul>
        <span>我是一个span</span>  /*不选中*/
        <li>第一个</li>            /*选中*/
        <li>第二个</li>           /*不选中*/
        <li>第三个</li>           /*选中*/
    </ul>
 </body>

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

   :first-of-type
   :last-of-type
   :nth-of-type()
 - 这几个伪类的功能和上述的类似,不通点是他们是在同类型元素中进行排序
  • :not() 否定伪类

    - 将符合条件的元素从选择器中去除
    
<style>
/*选择ul元素的li子元素的第三个*/
      ul > li:not(:nth-of-type(3)){
                      color: red;
                   }
</style>

<body>
    <ul>
        <span>我是一个span</span>  /*选中*/
        <li>第一个</li>            /*选中*/
        <li>第二个</li>           /*选中*/
        <li>第三个</li>           /*不选中*/
    </ul>
 </body>
a元素的伪类
  • :link 用来表示没访问过的链接(正常的链接)
<style>
/*修改没访问过链接的颜色*/
  a:link{
            color: red;  
        }
</style>
<body>
    <a href="https://www.baidu.com">访问过的链接</a>
        <br><br>
    <a href="https://www.baidu123.com">没访问过的链接</a>
</body>
  • :visited 用来表示访问过的链接

    由于隐私的原因,所以visited这个伪类只能修改链接的颜色
    
<style>
/*修改访问过链接的颜色*/
  a:visited{
            color: red;  
        }
</style>
<body>
    <a href="https://www.baidu.com">访问过的链接</a>
    <br><br>
    <a href="https://www.baidu123.com">没访问过的链接</a>
</body>
  • :hover 用来表示鼠标移入的状态
<style>
/*修改鼠标移入链接的状态*/
  a:hover{
             color: aqua;
             font-size: 50px;
         }
</style>
<body>
    <a href="https://www.baidu.com">访问过的链接</a>
</body>
  • :active 用来表示鼠标点击时的状态
<style>
/*修改鼠标点击链接的状态*/
    a:active{
           color: yellowgreen;  
         }
</style>
<body>
    <a href="https://www.baidu.com">访问过的链接</a>
</body>
伪元素选择器
 伪元素,表示页面中一些特殊的并不真实的存在的元素(特殊的位置)
 伪元素使用 :: 开头

伪元素选择器与伪类选择器的使用方法差不多

::first-letter 表示第一个字母
::first-line 表示第一行
::selection 表示选中的内容
::before 元素的开始 
::after 元素的最后
- before 和 after 必须结合content属性来使用
<style>
/*before 和 after 必须结合content属性来使用*/
div::before{
            content: 'abc';
            color: red;
        }

        div::after{
            content: 'haha';
            color: blue;
        }
 </style>

这些就是CSS的一些常用选择器,其他的选择器可以通过W3C来了解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值