第1关:CSS 元素选择器

任务描述

在完成本实训之后,你将掌握元素选择器、类选择器和id选择器这三种基础选择器。你将会学会独立制作如下新闻主页页面:

本关任务:熟悉元素选择器,使用属性选择器修改文档样式。

任务实现效果如图:

相关知识

元素选择器

最常见和易理解的CSS选择器是元素选择器,又称为类型选择器。也就是将HTML文档中的元素,直接作为选择器使用。

例如对于HTML页面:

 
  1. <body>
  2. <h1>标题1</h1>
  3. <h2>标题2</h2>
  4. <p>普通段落中<a href="#">删除的引用。</a></p>
  5. </body>

使用元素选择器添加元素样式:

 
  1. <style type="text/css">
  2. html {color:black;}
  3. h1 {color:darkcyan;}
  4. h2 {color:lightSeaGreen;}
  5. p {color:grey;}
  6. a {text-decoration:line-through;}
  7. </style>

显示效果如下:

当我们指定一个元素,并设置样式属性之后,文档中该元素便会应用样式。例如,我们设置p元素的颜色为灰色(grey),在没有其他样式覆盖的情况下,文档中所有的p元素都将为灰色。

如果想要多种元素应用同一样式,可以直接使用组合元素选择器。将多个要应用样式的元素用逗号隔开,例如:

例如对于HTML页面:

 
  1. <body>
  2. <h1>组合选择器</h1>
  3. <p>组合选择器,可以将样式同时运用于多个元素。</p>
  4. </body>
  5. </html>

使用元素选择器添加元素样式:

 
  1. <style type="text/css">
  2. /* 组合元素选择器 */
  3. /*将`h1`、`p`元素的颜色同时设置为灰色*/
  4. h1,p {color:grey;}
  5. </style>

显示效果如下:

注意:

  • 多个元素之间的逗号是必不可少的,如果缺失了逗号将表示其他含义。

元素选择器语法

我们可以看出元素选择器的语法规则如下:

 
  1. /*单个元素选择器*/
  2. 元素 {样式声明}
  3. /*组合元素选择器*/
  4. 元素1,元素2 {样式声明}

编程要求

使用元素选择器修改页面样式,要求如下:

  • 设定html元素的background-color#F0F0F0

  • 设定header元素的padding40pxbackground-color为白色;

  • 添加footer元素的font-size0.6em,字体颜色为灰色(grey)。

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>元素选择器</title>
  <style type="text/css">
    /* ********** BEGIN ********** */
    /* 元素选择器 */
    html {
background-color: #F0F0F0;
    }

header{
  padding:40px;
  background-color:white;
}


    footer {
      margin-top: 20px;
font-size:0.6em;
color:grey;
    }

    /* ********** END ********** */
  </style>
</head>
<body>

<div>

  <header>
    <li><a href="#chosen">精选</a></li>
    <li><a href="#news">时事</a></li>
    <li><a href="#finance">财政</a></li>
    <li><a href="#think">思想</a></li>
    <li><a href="#life">生活</a></li>
  </header>

  <div>
    <section>
      <h2>精选</h2>
      <li>精选新闻1</li>
      <li>精选新闻2</li>
      <li>精选新闻3</li>
    </section>
    <section>
      <h2>时事</h2>
      <li>时事新闻1</li>
      <li>时事新闻2</li>
      <li>时事新闻3</li>
    </section>
    <section>
      <h2>财政</h2>
      <li>财政新闻1</li>
      <li>财政新闻2</li>
      <li>财政新闻3</li>
    </section>
    <section>
      <h2>思想</h2>
      <li>思想新闻1</li>
      <li>思想新闻2</li>
      <li>思想新闻3</li>
    </section>
    <section>
      <h2>生活</h2>
      <li>生活新闻1</li>
      <li>生活新闻2</li>
      <li>生活新闻3</li>
    </section>
  </div>

  <footer>Copyright (c) News Copyright Holder All Rights Reserved.</footer>

</div>

</body>
</html>

第2关:CSS 类选择器

任务描述

本关任务是通过类选择器的方式,更改独立于文档元素的属性。

相关知识

类选择器

类选择器允许以一种独立于文档元素的方式来指定样式。通常情况只希望应用样式,而不考虑具体的元素时,会使用类选择器。

例如,对于HTML页面:

 
  1. <body>
  2. <div class="main">
  3. <article class="news">
  4. <h1>地震自救指南</h1>
  5. <p>大的晃动时间约为1分钟左右。这时首先应顾及的是您自己与家人的人身安全。首先,在重心较低、且结实牢固的桌子下面躲避,并紧紧抓牢桌子腿。在没有桌子等可供藏身的场合,无论如何,也要用坐垫等物保护好头部。</p>
  6. </article>
  7. </div>
  8. </body>

在该页面中,我们将第一个div元素的class设置为mainarticle元素的class值设置为news。通常设置class名字时,不要设置已有元素名,例如particel

之后,添加页面样式:

 
  1. <style type="text/css">
  2. .main {
  3. background-color: ivory;
  4. margin: 10px;
  5. }
  6. .news {
  7. padding: 10px;
  8. color: black;
  9. font-weight: bold;
  10. }
  11. p {
  12. color: grey;
  13. }
  14. </style>

与元素选择器不同,对同一类的元素应用样式,需要在类名前加上一个点号(.),然后书写相应的样式声明。

最后,样式应用的效果如图:

类选择器语法

所以,我们可以看出,类选择器的语法规则如下:

  1. 首先,将html中想要应用类样式的元素,指定类名;

     
      
    1. <元素名 class="指定的类名"></元素名>
    2. <元素名 class="指定的类名">
  2. 然后,书写相应类的样式;

     
      
    1. .指定的类名 {样式声明}

编程要求

使用类选择器修改页面样式,具体要求入下:

  • 给第43行的div元素添加名字为newsSection的类;

  • 在第27行添加newsSection类的样式:外边距为20margin-top: 20px;)内边距为20padding: 20px;)和背景颜色白色(background-color: white;)。

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>类选择器</title>
  <style type="text/css">
    /* 元素选择器 */
    html {
      background-color: #F0F0F0;
    }
    header {
      padding: 40px;
      background-color: white;
    }
    footer {
      margin-top: 20px;
      font-size: 0.6em;
      color: grey;
    }
    /* 类选择器 */
    .main {
      margin: 10px;
    }
	/* ********** BEGIN ********** */
.newsSection
{
  margin-top: 20px;
  padding: 20px;
  background-color: white;
}


    /* ********** END ********** */
  </style>
</head>
<body>
<div class="main">
  <header>
    <li><a href="#chosen">精选</a></li>
    <li><a href="#news">时事</a></li>
    <li><a href="#finance">财政</a></li>
    <li><a href="#think">思想</a></li>
    <li><a href="#life">生活</a></li>
  </header>
  <!-- ********** BEGIN ********** -->
  <div class="newsSection">
  <!-- ********** END ********** -->      
    <section>
      <h2>精选</h2>
      <li>精选新闻1</li>
      <li>精选新闻2</li>
      <li>精选新闻3</li>
    </section>
    <section>
      <h2>时事</h2>
      <li>时事新闻1</li>
      <li>时事新闻2</li>
      <li>时事新闻3</li>
    </section>
    <section>
      <h2>财政</h2>
      <li>财政新闻1</li>
      <li>财政新闻2</li>
      <li>财政新闻3</li>
    </section>
    <section>
      <h2>思想</h2>
      <li>思想新闻1</li>
      <li>思想新闻2</li>
      <li>思想新闻3</li>
    </section>
    <section>
      <h2>生活</h2>
      <li>生活新闻1</li>
      <li>生活新闻2</li>
      <li>生活新闻3</li>
    </section>
  </div>
  
  <footer>Copyright (c) News Copyright Holder All Rights Reserved.</footer>
</div>

</body>
</html>

第3关:CSS id选择器

任务描述

在本关中,你将通过id选择器的方式完成页面菜单栏样式布局,栏目导航等任务。

完成任务之后,基本页面效果如下:

动态效果如下:

相关知识

id选择器

id选择器与我们上一关中学习的类选择器类似,但在使用上有不同。

使用类选择器时,指定一个元素属于某类,使用的是关键字class,例如:

 
  1. <body>
  2. <h1 class="important">温馨提示</h1>
  3. <p>少一串脚印,多一份绿意。</p>
  4. </body>

而在使用id选择器时,使用的是关键字id。对于上面类选择器的例子,用id选择器书写:

 
  1. <body>
  2. <h1 id="important">温馨提示</h1>
  3. <p>少一串脚印,多一份绿意。</p>
  4. </body>

在样式表中,指定对应id名元素的样式,使用#符号,也称为棋盘号或井号。

 
  1. #important {
  2. color: red;
  3. font-weight: bold;
  4. }

样式应用效果如图:

id选择器语法

同理,我们可以看出,id选择器的语法规则如下:

  1. 首先,将html中想要应用类样式的元素,指定id名。

     
      
    1. <元素名 id="指定的类名"></元素名>
    2. <元素名 id="指定的类名">
  2. 然后,书写相应类的样式。

     
      
    1. #指定的类名 {样式声明}

类选择器与id选择器的区别

类选择器与id选择器类似,那么它们的区别是什么呢?什么情况下应该使用哪一种选择器呢?

它们最大的区别在于,在一个 HTML 文档中,可以为任意多个元素指定类,但id选择器只能使用一次,一个id只能运用于一个元素。

一般情况下,都推荐使用类选择器。而在一些特定情况下,我们才会建议使用id选择器。例如,通过id选择器在页面中定义锚,在编写 JavaScript 为指定的页面元素应用特殊行为时。

编程要求

  • header元素添加名为menu的id;

  • 使用id选择器,设置精选(#chosen)标题为红色(red),时事( #news)标题为蓝色(blue),财政(#finance)标题为橄榄绿(olive), 思想(#think)标题为绿色(green),生活(#life)标题为橘色(orange)。

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>ID选择器</title>
  <style type="text/css">
    /* 元素选择器 */
    html {
      background-color: #F0F0F0;
    }
    header {
      padding: 40px;
      background-color: white;
    }
    footer {
      margin-top: 20px;
      font-size: 0.6em;
      color: grey;
    }

    /* 类选择器 */
    .main {
      margin: 10px;
    }
    .newsSection {
      margin-top: 20px;
      padding: 20px;
      background-color: white;
    }
    /* ********** BEIGN ********** */

    #chosen{
      color:red;
    }
    #news{
      color:blue;
    }
    #finance{
      color:olive;
    }
    #think{
      color:green;
    }
    #life{
      color:organge;
    }
    
    
    

    /*选择menu元素下的li子元素*/
    #menu li {
      float: left;
      width: 70px;
      font-size: 1.2em;
      font-weight: lighter;
    }
    /*选择menu元素下的li子元素和li下得a子元素*/
    #menu li, li a {
      list-style: none;
      text-decoration: none;
    }
    /* ********** END ********** */
  </style>
</head>
<body>
<div class="main">
  <!-- ********** BEGIN ********** -->
  <header id="menu">
  <!-- ********** END ********** -->
    <li><a href="#chosen">精选</a></li>
    <li><a href="#news">时事</a></li>
    <li><a href="#finance">财政</a></li>
    <li><a href="#think">思想</a></li>
    <li><a href="#life">生活</a></li>
  </header>

  <div class="newsSection">
    <section>
      <h2 id="chosen">精选</h2>
      <li>精选新闻1</li>
      <li>精选新闻2</li>
      <li>精选新闻3</li>
    </section>
    <section>
      <h2 id="news">时事</h2>
      <li>时事新闻1</li>
      <li>时事新闻2</li>
      <li>时事新闻3</li>
    </section>
    <section>
      <h2 id="finance">财政</h2>
      <li>财政新闻1</li>
      <li>财政新闻2</li>
      <li>财政新闻3</li>
    </section>
    <section>
      <h2 id="think">思想</h2>
      <li>思想新闻1</li>
      <li>思想新闻2</li>
      <li>思想新闻3</li>
    </section>
    <section>
      <h2 id="life">生活</h2>
      <li>生活新闻1</li>
      <li>生活新闻2</li>
      <li>生活新闻3</li>
    </section>
  </div>
  <footer>Copyright (c) News Copyright Holder All Rights Reserved.</footer>
</div>

</body>
</html>

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐