hechengwei

导航

Python开发——17.CSS

一、CSS

1.概述

CSS(Cascading Style Sheets),层叠样式表,用来控制网页数据的表现,使网页的表现与数据内容分离。

2.引入方式

(1)行内式

<body>
<div style="color: chartreuse;background-color: bisque">Hello,world!</div>
</body>

(2)嵌入式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p{
            color: aqua;
            font-size: 20px;
        }
    </style>
<body>
<p>Hello,world!!</p>
</body>
</html>

(3)导入式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        @import "style1.css";<!--先加载html,再加载css-->
    </style>
<body>
<p>Hello,world!!</p>
</body>
</html>

(4)链接式(较多使用)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="style1.css">先准备好css样式再加载HTML
<body>
<p>Hello,world!!</p>
</body>
</html>

3.选择器

(1)嵌套规则

  • 块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
  • 块级元素不能放在p里面。
  • 有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
  • li内可以包含div
  • 块级元素与块级元素并列、内联元素与内联元素并列。(错误的:<div><h2></h2><span></span></div>)

(2)基础选择器

    <style>
        *  通用元素选择器,匹配任何元素
        E  标签选择器,匹配所有使用E标签的元素
        .info  class选择器,匹配所有class属性为info的元素
        #info  id选择器,匹配所有id属性为info的元素
        *{
            color: orangered;
        }
        div{
            color: blue;
        }
        #P2{
            color: blueviolet;
        }
        .PPP{
            color: crimson;
        }
        div.PPP{
            color: darkcyan;
        }
     </style>

(3)组合选择器

    <style>
        (E,F) 多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔
        (E F) 后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔
        (E>F) 子元素选择器,匹配所有E元素的子元素F
        (E+F) 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F
        #P2,div.PPP{
            color: firebrick;
        }
        .div1 div{
            color: fuchsia;
        }
        .div1>.P{
            color: darkkhaki;
        }
        .div1+div{
            background-color: darkred;
        }

(4)属性选择器

     <style>
        E[att] 匹配所有具有att属性的E元素,不考虑它的值。注意:E在此处可以省略
        E[att=val] 匹配所有att属性等于“val”的E元素
        E[att~=val] 匹配所有att属性具有多个空格分隔的值,其中一个值等于“val”的E元素
        E[attr^=val] 匹配属性值以指定值开头的每个元素
        E[attr$=val] 匹配属性值以指定值结尾的每个元素
        E[attr*=val] 匹配属性值中包含指定值的每个元素
        E[att|=val] 匹配所有att属性具有多个连字号分隔的值,其中一个值以“val”开头的E元素,主要用于lang属性
        [dazui]{
            color: brown;
        }
        [dazui="bigmouth"]{
            color: deeppink;
        }
        [dazui~="Kog'Maw"]{
            color: orangered;
        }
    </style>

(5)伪类选择器

<!--专用于控制链接的显示效果-->
    <style>
        a:link(没有接触过的链接),用于定义了链接的常规状态。
        a:hover(鼠标放在链接上的状态),用于产生视觉效果。
        a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接。
        a:active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态
        a:link{
            color: red;
        }
        a:visited{
            color: blue;
        }
        a:hover{
            color:green;
        }
        a:active{
            color: yellow;
        }
        .top,.bottom{
            width: 100px;
            height: 100px;
            background-color: green;
        }
        .top:hover{
            background-color: yellow;
        }
        .add:after{
            content: 'China';
            color: orange;
        }
        .add:before{
            content: 'nihao';
            color: red;
        }
    </style>
</head>
<body>
<a href="css_选择器.html" target="_blank">hello world!</a>
<div class="box">
    <div class="top">top</div>
    <div class="bottom">bottom</div>
<div class="add">hello,world</div>
</div>
</body> 

(6)选择器的优先级与继承

优先级

<style>
    #id3{
        color: yellow;
    }
    .div3{
        color: green !important;
    }
</style>
<body>
<div class="div1" id="id1">
    div1
    <div class="div2" id="id2">
        div2
        <div class="div3" id="id3">
            div3
        </div>
    </div>
</div>
<div class="div" id="di0" style="color:darkred;">div</div>
</body>
  • 当一个选择器中含有多个选择器时,需要将所有的选择器的优先级进行相加,然后再进行比较,优先级高的优先显示,选择器的计算不会超过其最大的数量级(10个id选择器的优先级不能达到1000)
  • 分组选择器(并集选择器)的优先级单独计算,不会相加。
  • 样式后面加!important,该样式获取最高优先级,内联样式不能加!important属性。
  • 样式相同的谁在下面执行谁(样式的覆盖)。

继承

继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代,但权重为0

CSS继承有限制,有一些属性不能被继承,如:border,margin,padding,background等。


4.常用属性

(1)颜色属性

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .p1{color: green;}
        .p2{color:#1E1E1E;}
        .p3{color:rgb(255,24,8)}
        .p4{color:rgba(255,24,8,0.5)}
    </style>
</head>
<body>
<p class="p1">日照香炉生紫烟</p>
<p class="p2">遥看瀑布挂前川</p>
<p class="p3">飞流直下三千尺</p>
<p class="p4">疑是银河落九天</p>
</body>

(2)字体属性

    <style>
        .p1{font-size: 20px}
        .p2{font-family: "Times New Roman"}
        .p3{font-weight: bolder} 
        .p4{font-style: italic}
    </style>

(3)背景属性

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .back{
            border: 1px solid red;
            width: 600px;
            height: 800px;
            background-image: url("back.jpg");
            background-repeat:no-repeat;
            background-position: 0 center;
        }
    </style>
</head>
<body>
<div class="back"></div>
</body>

 小图标调整

<!--小图标调整-->
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        span{
            display: inline-block;
            width: 18px;
            height: 20px;
            background-image: url("http://dig.chouti.com/images/icon_18_118.png?v=2.13");
            background-position: 0 -100px;
        }
    </style>
</head>
<body>
    <span></span>
</body>

(4)文本属性

    <style>
        div{
            height: 200px;
            background-color: greenyellow;
            text-align: center;
            line-height: 200px;
            text-indent: 120px;
            letter-spacing: 12px;
            word-spacing: 24px;
            text-transform: capitalize;
        }
    </style>

(5)边框属性

    <style>
        .div1{
            width: 200px;
            height: 200px;
            /*border: dashed 1px yellowgreen;*/
            border-style: dotted;
            border-width: 2px;
            border-color: orange;
            border-left-color: red;
        }
    </style>

(6)列表属性

    <style>
        ul,ol{
            list-style: decimal-leading-zero;
            list-style: none; 
            list-style: circle;
            list-style: upper-alpha;
            list-style: disc; }
    </style>

(7)display属性

    <style>
        .div1,p,span,a{
            width: 100px;
            height: 100px;
        }
        .div1{
            background-color: red;
            /*display: inline;*/
            /*display: inline-block;*/
            display: none;
        }
        p{
            background-color:yellowgreen;
            /*display: inline;*/
            display: inline-block;
        }
        span {
            background-color: pink;
            /*display: block;*/
            display: inline-block;
        }
        a{
            background-color: purple;
            /*display: block;*/
            display: inline-block;
        }
        .outer{
            word-spacing: -8px;
        }
    </style>
</head>
<body>
<div class="div1">div标签</div>
<p>p标签</p>
<div class="outer">
    <span>span标签</span>
    <a href="#">a标签</a>
</div>
</body>

(8)盒子模型

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body{
            border: solid 2px yellowgreen;
            margin: 0px;
        }
        .div1{
            width: 100px;
            height: 100px;
            background-color: orange;
            border: solid 20px blue;
            padding: 30px;
            /*margin: 20px;*/
            /*margin-bottom: 30px;*/
            /*margin: 10px 20px 30px 40px;*/
            margin-top: 20px;
        }

        .div2{
            width: 100px;
            height: 100px;
            background-color: red;
            border: solid 20px green;
            padding-left: 30px;
            margin-top: 40px;
        }
        .outer1{
            height:600px;
            background-color: yellow;
            border: 1px solid darkkhaki;
        }
        .outer2{
            height: 200px;
            background-color: fuchsia;
        }
    </style>
</head>
<body>
<div class="outer2"></div>
<div class="outer1">
    <div class="div1">hello div1</div>
    <div class="div2">hello div2</div>
</div>

</body>
  • 在默认情况下,body距离html会有若干像素的margin
  • 兄弟div:上面div的margin-bottom和下面div的margin-top会塌陷,也就是会取上下两者margin里最大值作为显示值
  • 父子div父级div中没有 border,padding,inline content,子级div的margin会一直向上找,直到找到某个标签包括border,padding,inline content中的其中一个,然后按此div 进行margin

(9)float

浮动可以理解为让某个div元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次。

假如某个div元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部总是和上一个元素的底部对齐。

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .div1{
            width: 100px;
            height: 100px;
            background-color: yellow;
            /*float: left;*/
        }
        .div2{
            width: 200px;
            height: 100px;
            background-color: fuchsia;
            float: left;

        }
        .div3{
            width: 100px;
            height: 200px;
            background-color: yellowgreen;
            /*float: left;*/
        }
        .div4{
            width: 200px;
            height: 200px;
            background-color: darkgreen;
        }
    </style>
</head>
<body>
<div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div>
<div class="div4"></div>
</body>

清除浮动

清除浮动可以理解为打破横向排列

对于CSS的清除浮动(clear),只能影响使用清除的元素本身,不能影响其他元素。

三种方法

<style type="text/css">
         * {
             margin:0;padding:0;
         }
        .container{
            border:1px solid red;
            width:300px;
            overflow: hidden;
        }<!--第三种方法-->
        #box1{
            background-color:green;
            width:100px;
            height:100px;
            float: left;
        }
        #box2{
            background-color:deeppink;
            float:right;
            width:100px;
            height:100px;
        }
         #box3{
             background-color:pink;
             height:40px;
         }
        .clearfix:after{
            content:"";
            display: block;
            clear: both;
        }<!--第二种方法-->
</style>
</head>
<body>
        <div class="container clearfix">
                <div id="box1">box1 向左浮动</div>
                <div id="box2">box2 向右浮动</div>
                <div style="clear: both"></div><!--第一种方法-->
        </div>
        <div id="box3">box3</div>
</body>
</body>

(10)position

position:static,默认值 static:无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不 会被应用

position:relative  对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。

position:absolute  对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。

position:fixed  对象脱离正常文档流,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置。

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0px;
        }
        .div1{
            width: 200px;
            height: 100px;
            background-color: yellow;
        }
        .div2{
            width: 200px;
            height: 100px;
            background-color: fuchsia;
            /*position: relative;<!--不脱离文档流-->*/
            /*left: 100px;*/
            /*bottom: -100px;*/
        }
        .div3{
            width: 200px;
            height: 200px;
            background-color: yellowgreen;
            position: absolute;
            left: 200px;
            top: 200px;
        }
        .div4{
            width: 200px;
            height: 200px;
            background-color: darkgreen;
        }
        .outer{position:relative }
        .returnTop{
            width: 80px;
            height: 40px;
            bottom: 50px;
            right: 5px;
            background-color: yellow;
            position: fixed;
        }
    </style>
</head>
<body>
<div style="border: solid 1px;height:100px;background-color: aqua"></div>
<div class="outer">
    <div class="div1"></div>
    <div class="div2"></div>
    <div class="div3"></div>
    <div class="div4"></div>
</div>
<div style="height: 2000px;background-color: orange"></div>
<div class="returnTop">返回顶部</div>
</body>

 

posted on 2018-06-20 19:25  hechengwei  阅读(257)  评论(0编辑  收藏  举报