web第十讲,CSS基础

div双标记,division——部门、部分、分开的意思。div中可以分块定义文章的不同部分。

  • 开头:div id='header'
  • 导航:div id="navigation"
  • 主体:div id="maincontent"
  • 页脚:div id="footer"

使用CSS定义上述的div标记,将来更改网页风格时工作量可以大大减轻。

CSS内容提要

  • CSS的概念、特点。
  • CSS的基本语法、选择器分类与声明的结构。
  • CSS的定义及引用的方式。
  • CSS继承与层叠的含义。

传统HTML的特点(没有CSS)

  • 没有CSS参与的HTML网页设计往往是内容和表现混合
    • 维护困难
    • 标记不足
    • 网页过“胖”
    • 定位困难
  • 随着网站规模不断扩大,无论是修改网页还是维护网站都显得越来越困难。

CSS的必要性

CSS的诞生为网页设计注入了新鲜血液。

CSS提供了丰富的样式手段,对页面布局等的控制也更加精确。

同时能够实现内容和表现得分离,使得网站的设计风格趋向统一,维护更加容易,并且能够被多种浏览器支持。

CSS的简介

  • W3C组织于1996年推出CSS 1.0技术标准,1998年推出CSS2.0技术标准.目前最高版本3.0 。
  • CSS是Cascading Style Sheets的缩写,译为“层叠样式表”,是用于控制网页样式的一种标记性语言。

CSS的概念

  • HTML控制网页内容的结构,CSS控制网页内容的样式。CSS实现了网页的结构与表现分离。
  • 在网页制作时采用CSS技术,可以有效地对页面的布局、字体、颜色、背景和其他效果实现更加精确的控制。
  • 只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者不同网页的外观和格式。

CSS的特点

  • CSS通过定义标记或标记属性的外在表现,对页面结构风格进行控制。
    • 分清文档的内容和表现,克服了传统HTML的缺点。
    • 将CSS嵌入在页面中,通过浏览器解释执行。
    • CSS文件是文本文件,可以嵌入HTML文件中,也可以写成独立的文件,引入到HTML页面中。

CSS的优势

实现了表现与内容相分离,简化了网页格式设计,对网页格式的修改和维护更方便。

  • 加强了网页的表现力
    • CSS样式属性提供了比HTML更多的格式设计功能。例如,去掉网页超链接的下划线,给文字添加阴影等。
  • 增强了网站风格的一致性
    • CSS样式定义到样式表文件中,在多个网页中同时应用样式表文件中的样式,就确保了多个网页具有一致的格式。可以随时更新样式表文件,改变网站风格。大大降低了网站的开发和维护工作。

CSS定义与应用

CSS样式表类型:4种

  • 行内(内联)样式表(Inline Style Shtter):在HTML标记的style属性中设置CSS样式。

    <h1 style="color:#FFFFFF;background-color:#000080">泡泡潜水俱乐部</h1>
    
    • 基本语法:<标记 style="属性:属性值;属性:属性值;…">

    • 语法说明:

      • 标记:HTML标记,如body、table、p等。

      • 标记的style定义只能影响标记本身。

      • style的多个属性之间用分号分隔。

      • 标记本身定义的style优先于其他所有样式定义。

      • 行内样式表只影响单个标记。

        <p style="color:red;font-size:28px;">本段落生效</p>

      • 案例1:

        <!DOCTYPE html>
        <html lang="en">
        
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>内联样式(Inline Style)</title>
        </head>
        
        <body>
            <p style="font-size: 20px;font-style: italic;">
                这个内联样式(Inline Style)定义段落文字大小20像素,文字风格为斜体。
            </p>
            <p>这段文字没有使用内联样式。</p>
        
        </body>
        
        </html>
        

+ 案例2:

  ```html
  <!DOCTYPE html>
  <html lang="en">
  
  <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>古诗排版</title>
      <style type="text/css">
          body {
              text-align: center;
          }
  
          p {
              font-family: "隶书";
          }
      </style>
  </head>
  
  <body>
      <h3>早发白帝城</h3>
      <h6>李白</h6>
      <p>朝辞白帝彩云间,</p>
      <p style="font-size: 150%;">千里江陵一日还。</p>
      <p style="font-size: 200%;">两岸猿声啼不住,</p>
      <p style="font-size: 250%;">轻舟已过万重山。</p>
  </body>
  
  </html>
  ```

  • 内部样式表(Internal Style Sheet):将CSS样式写在<style>和</style>标记之间。

    • 基本语法:

      <head>
          <style type="text/css">
              .dev1,.div3{background:#99ffff;200px;height:100px;}
              .dev2{background:#00cc00;200px;height:100px;}
              p,h1{font-size:18px;color:#003366;}
          </style>
          </head>
      

      style标记是双标记,有type属性,必须放在头部。

      内部样式表只影响单个文件。

    • 案例:

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Document</title>
          <style type="text/css">
              .int_css {
                  border- 2px;
                  border-style: solid;
                  text-align: center;
                  color: red;
              }
      
              #h1_css {
                  font-size: 28px;
                  font-style: italic;
              }
          </style>
      </head>
      
      <body>
          <h1 class="int_css">h1这个标题使用类样式。</h1>
          <h1 id="h1_css">h1这个标题使用ID样式。</h1>
          <h1>h1这个标题没有使用样式。</h1>
      </body>
      
      </html>
      

  • 超链接外部样式表(Link External Style Sheet):将CSS样式写在独立的CSS文件中,然后将CSS文件链接到HTML文件上。

    • 基本语法:<link type="text/css" rel="stylesheet" href="外部样式表文件"/>

    • 语法说明:

      • link是单标记,放在头部,不使用style标记。
      • 外部样式表的文件名称必须带后缀名.css。
      • css文件一定是纯文本格式。
      • 外部样式表修改后所有引用的页面样式自动更新。
      • 外部样式表优先级低于内部样式表。
      • 同时链接多个外部样式表时按“最近优先的原则”。
    • 案例:

      .p1 {
          font-size: 18px;
          color: blue;
      }
      
      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>链接外部样式表</title>
          <link rel="stylesheet" href="style.css" type="text/css">
      </head>
      
      <body>
          <p class="p1">此行文字被style属性定义为蓝色显示。</p>
          <p>此行文字没有被style属性定义。</p>
      
      </body>
      
      </html>
      

  • 导入外部样式表(Import External Style Sheet)

    • 基本语法:

      <style type="text/css"
          @import url("外部样式表的文件名");
          p,p1{font-size:18px;color:blue}
      </style>
      
    • 语法说明:

      • import语句后面的“;”号一定要加上!
      • “外部样式表的文件名”是要嵌入的样式表文件名称,含路径,后缀为.css。
      • @import应该在style元素的最前面。
    • 案例:

      out.css

      .int_css {
          font-size: 24px;
          color: green;
      }
      

      test.html

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>导入外部样式(External Style)</title>
          <style type="text/css">
              @import url("out.css");
              @import url("out1.css");
              @import url("out2.css");
      
              #h2_css {
                  font-size: 24px;
                  font-style: italic;
                  color: red;
              }
          </style>
      </head>
      
      <body>
          <h1 class="int_css">这个标题h1使用了导入外部样式表中的类样式(int_css)。</h1>
          <h2 id="h2_css">这个标题h2使用内部样式中的ID样式(h2_css)。</h2>
          <h2>这个标题h2没有使用样式,out1.css和out2.css未定义。</h2>
      </body>
      
      </html>
      

  • 小结:

    • 在网页上应用CSS的四种方式:
      • 行内样式(Inline Style)
      • 内部样式表(Embedding a Style Block)
      • 外部样式表(Linking to a Style Sheet)
      • 导入外部样式表(Import External Style Sheet)

CSS语法

  • CSS规则由两个主要的部分构成:

    • 选择器通常是要改变样式的HTML标记。加点的是类选择器,例如.div。
    • 声明由一个或多个属性名与属性值的键值对组成。
    • 每条声明用“;”结束。
    • 用花括号包围声明。
  • CSS是一个由包含一个或多个规则的文本文件。

  • p和body可以写在两个CSS文件里,也可以写在一个CSS文件里,还可以嵌入HTML的head部分。

  • 注释用/* 注释内容 */方式。

  • 案例:

    p{
        text-align:center;
        color:black;
        font-family:arial;
    }
    body{
        color:#000;
        background:#fff;
        margin:0;
        padding:0;
        font-family:Georgia,palatino,serif;
    }
    

CSS选择器类型

  • 标记选择器:选择器的对象通常是某个HTML标记,例如p、h1、em、a,甚至可以是html本身:

    • 对HTML的标记重定义,该样式立即生效。

    • 案例1:

      p,h1{
          font-size:30px;
          color:blue;
          font-family:黑体;
      }
      /* 该选择器重定义了p标记和h1标记的样式 */
      
    • 案例2:

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>标签选择器</title>
          <style type="text/css">
              html {
                  color: black;
              }
      
              p {
                  color: blue;
              }
      
              h2 {
                  color: silver;
              }
          </style>
      </head>
      
      <body>
          <h1>这里是heading 1</h1>
          <h2>这里是heading 2</h2>
          <p>这里是一段普通的段落。</p>
      
      </body>
      
      </html>
      
    • 选择器分组:即多个标记共有一类声明。

      • 案例:

        <!DOCTYPE html>
        <html lang="en">
        
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>标签选择器</title>
            <style type="text/css">
                html {
                    color: black;
                }
        
                p {
                    color: blue;
                }
        
                h1,
                h2,
                h3 {
                    color: silver;
                }
        
                h4,
                h5,
                h6 {
                    color: red;
                }
            </style>
        </head>
        
        <body>
            <h1>这里是heading 1</h1>
            <h2>这里是heading 2</h2>
            <h3>这里是heading 3</h3>
            <h4>这里是heading 4</h4>
            <h5>这里是heading 5</h5>
            <h6>这里是heading 6</h6>
            <p>这里是一段普通的段落。</p>
        
        </body>
        
        </html>
        

  • 类选择器

    • 以点号“.”开头,可以任意命名,如:.div1、.files等。

    • 该样式应用后生效,有些标记的样式相同时,可以定义成选择器分组。

    • 案例1:

      .div1,.file{
          background:red;
          color:white;
      }
      
    • 案例2:

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>类选择器</title>
          <style type="text/css">
              .important {
                  color: red;
              }
          </style>
      </head>
      
      <body>
          <h1 class="important">This heading is very important!</h1>
          <p class="important">This paragraph is very important!</p>
          <p>This is a paragraph.</h1>
      
      </body>
      
      </html>
      

  • 联合选择器

    • 标记+类选择器

    • 案例1:

      p.c3{
          color:red;
      }
      
    • 案例2:

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>联合选择器</title>
          <style type="text/css">
              .important {
                  color: red;
              }
      
              p.important {
                  color: orange;
              }
          </style>
      </head>
      
      <body>
          <h1 class="important">This heading is very important!</h1>
          <p class="important">This paragraph is very important!</p>
          <p>This is a paragraph.</h1>
      
      </body>
      
      </html>
      

  • ID选择器

    • 以“#”开始,并可以任意命名。

    • 案例1:

      #div1{
          background:red;
          color:white;
      }
      
    • 案例2:

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Web前端开发工程师工作内容</title>
          <style type="text/css">
              * {
                  font-family: 雅黑;
                  color: blue;
              }
      
              /* 注意,*选择器表示所有元素 */
              #li1 {
                  font: italic bold 24px 黑体;
              }
      
              .li2 {
                  background: #9999cc;
                  letter-spacing: 1px;
              }
      
              #li3 {
                  font-size: 18px;
                  color: red;
              }
          </style>
      </head>
      
      <body>
          <h1>web前端开发工程师工作内容</h1>
          <h3>web前端工程师在不同的公司,会有不同的职能,但称呼都是类似的</h3>
          <ul>
              <li id="li1">做网站设计、网页界面开发</li>
              <li class="li2">做网页界面开发</li>
              <li id="li13">做网页界面开发、前台数据绑定和前台逻辑的处理</li>
              <li style="color:#0000cc;background:#c0c0c0;font-family:隶书;">设计、开发、数据处理</li>
          </ul>
      </body>
      
      </html>
      

  • ID选择器与类选择器的区别

    • 类选择器可以给任意多的标记定义样式,但ID选择器在页面标记中只能使用一次。
    • 不能用ID词列表。
      • ID选择器不能结合使用,因为ID属性不允许有以空格分隔的词列表。
  • ID选择器与类选择器的对比

    • HTML和XHTML将类和ID值定义为区分大小写,所以类class和ID值的大小写必须与文档中的相应值匹配。
    • ID选择器样式比类选择器样式优先级高。ID选择器局限性大,只能单独定义某个元素的样式(特殊情况下使用)。
  • 优先级:后代选择器>ID选择器>类选择器>标记选择器

  • 伪类选择器

    • 一种特殊的类选择器,最大的作用就是对链接<a>的不同状态定义不同的样式效果。

    • 案例1:

      a:link{color:#339999;text-decration:none;} /* 鼠标点击前 */
      a:visited{color:#33cc00;text-decration:none;} /* 鼠标点击后 */
      a:hover{color:#red;text-decration:underline;} /* 鼠标悬停时 */
      a:active{color:#blue;text-decration:underline;} /* 鼠标点击时 */
      
    • 案例2:

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>伪类选择器</title>
          <style class="text/css">
              a:link {
                  color: gray;
                  text-emphasis: none;
              }
      
              a:visited {
                  color: blue;
                  text-emphasis: none;
              }
      
              a:hover {
                  color: red;
                  text-decoration: underline;
              }
      
              a:active {
                  color: yellow;
                  text-decoration: underline;
              }
          </style>
      </head>
      
      <body>
          <p>在支持CSS的浏览器中,链接的不同状态可以以不同的方式显示,这些状态包括:<br>
              鼠标点击前、鼠标点击后、鼠标悬停时、鼠标点击时、<br>
              注意定义顺序:link、visited、hover、active。
          </p>
          <a href="https://www.baidu.com" target="_blank">搜索一下:百度</a>
      
      </body>
      
      </html>
      

  • 属性选择器

    • 定义属性选择器时,方括号“[ ]”将属性包围住,如下所示:

      • [属性名]{属性:属性值;属性:属性值;...}
      • 例如:[title]{color:red;} /* 带有title属性的所有元素设置样式 */
    • 属性选择器类型

      选择器 描述
      [attribute] 用于选取带有指定属性的标记
      [attribute=value] 用于选取带有指定属性和值的标记
      [attribute~=value] 用于选取属性值中包含指定词汇的标记(用空格分隔的字词列表)。
      [attribute!=value] 用于选取带有以指定值开头的属性值的标记(属性值是value或以“value-”开头的值)。
      [attribute^=value] 匹配属性值以指定值开头的每个标记。
      [attribute&=value] 匹配属性值以指定值结尾的每个标记。
      [attribute*=value] 匹配属性值中包含指定值的每个标记。
    • 案例

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>属性选择器的应用</title>
          <style type="text/css">
              [title] {
                  font-size: 18px;
                  color: green;
              }
      
              p[name="attribute"] {
                  font-style: italic;
              }
      
              p[name~="attribute"] {
                  font-weight: bold;
              }
      
              p[name^="attribute"] {
                  text-align: center;
              }
      
              p[name$="Selector"] {
                  color: blue;
              }
      
              p[name*="Test"] {
                  color: red;
                  text-decoration: underline;
              }
      
              h3 {
                  text-align: center;
              }
          </style>
      </head>
      
      <body>
          <h3>属性选择器的应用</h3>
          <hr color="red">
          <p title="p1" name="attribute">[title][name="attribute"]属性和值选择器,绿色、18px、斜体、居中</p>
          <p name="attribute">[name="attribute"]属性值包含指定值的选择器,标粗</p>
          <p name="AttributeSelector">属性值中以Selector结尾的,蓝色</p>
          <p name="AttributeSelectorTest">属性值中包含Test字符串,红色、下划线</p>
      
      </body>
      
      </html>
      

  • 后代选择器

    • 两个元素之间的层次间隔可以是无限。
      • 例如,如果写作ul em,这个语法会选择从ul元素继承的所有em元素,而不论em的嵌套层次多深。
  • 子元素选择器

    • 与后代选择器相比,子元素选择器(child selectors)只能选择作为某元素子元素的元素。
    • 如果你不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素,请使用子元素选择器(child selectors)。
  • 相邻兄弟选择器

    • 相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同的父元素。
    • 用一个结合符只能选择两个相邻兄弟中的第二给元素。

CSS继承与层叠

  • 样式表的继承规则是子标记继承父标记的样式。

    div{color:blue;font-weight:bold;}
    <div>
        <p>继承标记div的样式</p>
    </div>
    
  • CSS规定样式的优先级(从高到低)如下:

    行内样式>ID样式>类样式>标记样式

    • 权值设置
      1. 内联样式表的权重值为1000。
      2. ID选择器的权重值为100。
      3. class类选择器的权重值为10。
      4. HTML标签选择器的权重值为1。
  • CSS优先级法则:

    1. 选择器都有一个权重值,权重值越大越优先;
    2. 当权重值相等时,后出现的样式表设置要优先于先出现的。
    3. 创作者的规则高于浏览者:即网页编写者设置的CSS样式的优先权高于浏览器所设置的样式。
    4. 继承的CSS样式不如后来指定的CSS样式。
    5. 在同一组属性设置中有“!important”规则的优先级最高。
  • 选择器优先级:

    • 内联 > 后代 > ID > 类 > 标记

小结

  • CSS分为内联样式表、内部样式表、链接外部样式表以及导入外部样式表。
    • 其中内联样式表是在标记内设置style属性,且仅对该标记有效;
    • 内部样式表是在页面的head标记中加入style标记,它对整个页面都有效。
    • 外部样式表是将CSS规则写在单独的文件里,文件的后缀名是.css。通过link标记或@import语句将单独的css文件引入到页面中,前者称为链接外部样式表,后者称为导入外部样式表。
  • CSS规则由选择器和声明组成。
  • 选择器类型:
    1. 标记选择器 p{}。
    2. id选择器 #test{}。
    3. class选择器 .test{}。
    4. 联合选择器 p.c3{},即标记+类。
    5. 属性选择器 [title] {}。
    6. 伪类选择器 a:link{} a:visited{} a:hover{} a:active{}。
    7. 后代选择器 ul em,两个元素之间的层次间隔可以是无限的。
    8. 子元素选择器 h1>strong。
    9. 相邻兄弟选择器 h1+p,用一个结合符只能选择两个相邻兄弟中的第二给元素。
  • 子标记继承父标记的样式
  • 样式表的优先级:行内样式>ID样式>类样式>标记样式
    1. 内联样式表的权重值为1000。
    2. ID选择器的权重值为100。
    3. class类选择器的权重值为10。
    4. HTML标签选择器的权重值为1。
原文地址:https://www.cnblogs.com/fz17/p/14108937.html