python Web: CSS

CSS概述

CSS是Cascading Style Sheet 的简称,中文称为层叠样式表用来控制网页数据的表现,可以使网页的表现与数据内容分离。

CSS的四种引入方式

1 行内式
行内式是在标记的style属性中设定CSS样式。这种方式没有体现出CSS的优势,不推荐使用。

<p style="background-color: rebeccapurple">hello yuan</p>

2.嵌入式
嵌入式是将CSS样式集中写在网页的<head></head>标签对的<style></style>标签对中。格式如下:
选择器(符){
属性 : 值;
属性 : 值;
}
标签选择器 / 元素选择器:

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p{
            background-color: #2b99ff;
        }
    </style>
</head>

3 链接式
将一个.css文件引入到HTML文件中 ,同样是在<head></head>标签对中

<head>
    <meta charset="UTF-8">
    <title>Title</title>


    <!--链接式-->
     <!--rel="stylesheet":指定类型-->
    <link href="test1.css" rel="stylesheet">
</head>

4.导入式
将一个独立的.css文件引入HTML文件中,导入式使用CSS规则引入外部CSS文件,<style>标记也是写在<head>标记中,使用的语法如下:

<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--导入式-->
    <style>
        @import "test1.css";
    </style>
</head>

注意:
导入式会在整个网页装载完后再装载CSS文件,因此这就导致了一个问题,如果网页比较大则会儿出现先显示无样式的页面,闪烁一下之后,再出现网页的样式。这是导入式固有的一个缺陷。使用链接式时与导入式不同的是它会以网页文件主体装载前装载CSS文件,因此显示出来的网页从一开始就是带样式的效果的,它不会象导入式那样先显示无样式的网页,然后再显示有样式的网页,这是链接式的优点。

css的选择器(Selector)

“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元素
1 基础选择器

  • : 通用元素选择器,匹配任何元素 * { margin:0; padding:0; }

  • E : 标签选择器,匹配所有使用E标签的元素 p { color:green; }

  • .infoE.info: class选择器,匹配所有class属性中包含info的元素
    .info { background:#ff0; } p.info { background:blue; }

  • #infoE#info id选择器,匹配所有id属性等于footer的元素
    #info { background:#ff0; } p#info { background:#ff0; }

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*通用元素选择器*/
        /*      *{
                  color: red;
        		}
        */
		/*id选择器*/
        #littleP{
            background-color: blue;
        }
        
		/* class选择器*/	
        .cuihua{
            color: aquamarine;
        }

        /*通过标签和class选择器控制某一个标签,注意:不能写成div .cuihua*/
        div.cuihua{
            color: brown;

        }
		/*组合选择器,不同的标签用逗号分隔*/
        #littleP,div.cuihua{
            color: chartreuse;
        }

    </style>
</head>
<body>
	hello body
	
	<div>hello div</div>
	
	<p id="littleP">pppp</p>
	<p id="littlePP">ppp</p>
	<p class="cuihua">pp</p>
	<p class="cuihua">p</p>
	<div class="cuihua">div</div>
</body>

2 组合选择器

为多个选择器设置共同的样式

  • E,F 多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔
    div,p { color:#f00; }

    选择器1,选择器2,选择器3,{
        样式
    }
    div,h1,p{
        color : gray;
    }
     
    <div></div>
    <h1></h1>
    <p></p>
    
  • E F 后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔
    li a { font-weight:bold;

  • E > F 子元素选择器,匹配所有E元素的子元素F
    div > p { color:#f00; }

  • E + F 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F
    div + p { color:#f00; }

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

        .div1>p{
            background-color: aqua;
            color: deeppink;
        }

        .main2>div{
            background-color: blueviolet;
            color: chartreuse;
        }
    </style>
</head>
<body>

      <div class="div1">hello1
          <div class="div2">hello2
              <div>hello4</div>
              <p>hello5</p>
          </div>
          <p>hello3</p>
      </div>
      <p>hello6</p>

<hr>

     <div class="main2">1
       <div>2
           <div>
           </div>
       </div>
       <div>
           </div>
     </div>
</body>
</html>

注意嵌套规则:

  • 块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
  • 有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
  • li内可以包含div
  • 块级元素与块级元素并列、内联元素与内联元素并列。

3 属性选择器

  • E[att] 匹配所有具有att属性的E元素,不考虑它的值。(注意:E在此处可以省略,比如“[cheacked]”。以下同。) p[title] { color:#f00; }

  • E[att=val] 匹配所有att属性等于“val”的E元素 div[class=”error”] { color:#f00; }

  • E[att~=val] 匹配所有att属性具有多个空格分隔的值、其中一个值等于“val”的E元素 td[class~=”name”] { color:#f00; }

  • E[attr^=val] 匹配属性值以指定值开头的每个元素 div[class^="test"]{background:#ffff00;}

  • E[attr$=val]匹配属性值以指定值结尾的每个元素 div[class$="test"]{background:#ffff00;}

  • E[attr*=val] 匹配属性值中包含指定值的每个元素 div[class*="test"]{background:#ffff00;}

ID选择器
id作用
HTML中所有的元素都有一个id属性,主要用来表示该元素在文档中的标志,具有唯一性

id选择器
通过元素的id属性值进行匹配
语法:
#id属性值{
样式

}
```
#nav{

}
 
<div id='nav'>导航条</div>
```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

        [alex]{
            color: red;
        }
        p[alex="dasb"]{
            font-family: "Times New Roman";
            font-size: 30px;
        }

        [alex*="b"]{
            color: teal;
        }
    </style>
</head>
<body>

<!--属性选择器-->

<div>hello1</div>
<div alex="sb LI">alex</div>
<div alex="dasb">hello1</div>
<p alex="dasb">hello2</p>

<div class="div1 div2">hello1</div>

</body>
</html>

4 伪类(Pseudo-classes)
CSS伪类是用来给选择器添加一些特殊效果。
a n c h o r 伪 类 : 专 用 于 控 制 链 接 的 显 示 效 果 \color{HotPink}{anchor伪类:专用于控制链接的显示效果} anchor

  • a:link(没有接触过的链接),用于定义了链接的常规状态。

  • a:hover(鼠标放在链接上的状态),用于产生视觉效果。

  • a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接。

  • a:active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态。

其他元素具备
鼠标滑过 :hover
鼠标点按 :active

表单控件
获取到焦点时的状态 :focus
对文本框和密码框而言,当用户点击输入时,都视为获取焦点状态
伪类选择器 : 伪类指的是标签的不同状态:

a ==> 点过状态 没有点过的状态 鼠标悬浮状态 激活状态

a:link {color: #FF0000} /* 未访问的链接 */

a:visited {color: #00FF00} /* 已访问的链接 */

a:hover {color: #FF00FF} /* 鼠标移动到链接上 */

a:active {color: #0000FF} /* 选定的链接 */ 格式: 标签:伪类名称{ css代码; }

注意 :
如果要给超链接添加四中状态下的样式,必须按照以下顺序书写伪类选择器
:link
:visited
:hover
:active
简称 “爱恨原则 LoVe / HAte ”

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>

    a:link{
        color: red;
    }

    a:visited {
        color: blue;
    }
    a:hover {
        color: green;
    }
    a:active {
        color: yellow;
    }

    /*设置一个盒子*/
    .box{
        width: 100px;
    }
        /*设置大盒子里面的两个小盒子*/
        .top,.bottom{
            width: 100px;
            height: 100px;
            background-color: chartreuse;
        }
        
        /*当鼠标放到上面的那个盒子时,设置盒子的状态*/
        .top:hover{
            background-color: red;
        }

        /*当鼠标放到大盒子上面时,设置下面盒子的状态*/
        .box:hover .bottom{
            background-color: red;
        }


    </style>
</head>
<body>

<!--    链接-->
    <a href="css_引入方式.html">hello-world</a>

<!--大盒子里面,两个小盒子-->
   <div class="box">
         <div class="top"></div>
         <div class="bottom"></div>
   </div>



</body>
</html>

before after伪类 :

  • :before p:before 在每个

    元素之前插入内容

  • :after p:after 在每个

    元素之后插入内容

p:before 在每个<p>元素的内容之前插入内容 p:before{content:"hello";color:red}
p:after 在每个<p>元素的内容之前插入内容 p:after{ content:"hello";color:red}

   <style>
       .add:after{
           content: "欢迎加入前端学习";
           color: red;
       }
    </style>
<body>
    <div class="add">hello yuan</div>
</body>

在这里插入图片描述
5 css优先级和继承
CSS优先级:所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序。

样式表中的特殊性描述了不同规则的相对权重,它的基本规则是:
1 内联样式表的权值最高 style=""-------------------1000;
   2 统计选择符中的ID属性个数。 #id -------------100
  3 统计选择符中的CLASS属性个数。 .class -------------10
4 统计选择符中的HTML标签名个数。 p --------------1

按这些规则将数字符串逐位相加,就得到最终的权重,然后在比较取舍时按照从左到右的顺序逐位比较。

CSS的继承性:
继承是CSS的一个主要特征,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如一个BODY定义了的颜色值也会应用到段落的文本中。

body{color:red;}       <p>helloyuan</p>

这段文字都继承了由body {color:red;}样式定义的颜色。然而CSS继承性的权重是非常低的,是比普通元素的权重还要低的。
p{color:green}
发现只需要给加个颜色值就能覆盖掉它继承的样式颜色。由此可见:任何显示申明的规则都可以覆盖其继承样式。 
此外,继承是CSS重要的一部分,我们甚至不用去考虑它为什么能够这样,但CSS继承也是有限制的。有一些属性不能被继承,如:border,margin, padding, background等。

附加说明:
1、文内的样式优先级为1000,所以始终高于外部定义。这里文内样式指形如<div style="color:red>blah</div>的样式,而外部定义指经由或

2、有!important声明的规则高于一切。

3、如果!important声明冲突,则比较优先权。

4、如果优先权一样,则按照在源码中出现的顺序决定,后来者居上。

5、由继承而得到的样式没有specificity的计算,它低于一切其它规则(比如全局选择符*定义的规则)。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

        /*#id1{*/
            /*color: red;*/
        /*}*/
        /*.div1{*/
            /*color: rebeccapurple;*/
        /*}*/

        /*div{*/
            /*color: yellow;*/
        /*}*/

        /*.div3{*/
            /*color: red;*/
        /*}*/
        /*.div1 .div3{*/
            /*color: chartreuse;*/
        /*}*/

        /*#div1 .div3{*/
            /*color: rebeccapurple!important;*/
        /*}*/

        /*#div1 .div3  {*/
            /*color: chartreuse!important;*/
        /*}*/

        #div1{
            color: red;
        }
    </style>
</head>
<body>


<div id="div1">
    hello1
    <div class="div2">
        hello2
        <div class="div3">
              嵌套优先级
        </div>
    </div>
</div>

      <!--<div class="div1" id="id1" style="color: green">优先级</div>-->
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值