• Python笔记10(CSS笔记一)


    一、css的引入方式

    1、css介绍

    现在的互联网前端分三层:

    • HTML:超文本标记语言。从语义的角度描述页面结构
    • CSS:层叠样式表。从审美的角度负责页面样式
    • JS:JavaScript 。从交互的角度描述页面行为

    CSS:Cascading Style Sheet,层叠样式表。CSS的作用就是给HTML页面标签添加各种样式,定义网页的显示效果。简单一句话:CSS将网页内容和显示样式进行分离,提高了显示功能。

    css的最新版本是css3,我们目前学习的是css2.1

    2、为什么要使用CSS

    HTML的缺陷:

    1)不能够适应多种设备

    2)要求浏览器必须智能化足够庞大

    3)数据和显示没有分开

    4)功能不够强大

    CSS 优点:

    1)使数据和显示分开

    2)降低网络流量

    3)使整个网站视觉效果一致

    4)使开发效率提高了(耦合性降低,一个人负责写html,一个人负责写css)

    比如说,有一个样式需要在一百个页面上显示,如果是html来实现,那要写一百遍,现在有了css,只要写一遍。现在,html只提供数据和一些控件,完全交给css提供各种各样的样式。

    3、在HTML中引入css方式总共有三种:

    1)行内样式

    <div>
        <p style="color: green">我是一个段落</p>
    </div>

    2)内接样式

    mime类型:MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title标签</title>
    <!--mime 文件类型-->
    <style type="text/css">
    p {
    color: green;
    }
    </style>
    </head>
    <body>
    <p>段落</p>
    </body>
    </html>

    3)外接样式:链接式

    /*css文件*/
    a{
    color:red
    }
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title标签</title>
    <link rel="stylesheet" type="text/css" href="./css/index.css">
    </head>
    <body>
    <a href="#">百度一下</a>
    </body>
    </html>

    4)外接样式:导入式

    /*css文件*/
    a{
    color:red
    }
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title标签</title>
    <style type="text/css" media="screen">
    @import url("./css/index.css");
    </style>
    </head>
    <body>
    <a href="#">百度一下</a>
    </body>
    </html>

    二、css的选择器

    css的选择器:1.基本选择器 2.高级选择器

    1、基本选择器

    高基本选择器分为:标签选择器、id选择器、类选择器。

    1)标签选择器

    标签选择器可以选中所有的标签元素,比如div,ul,li ,p等等,不管标签藏的多深,都能选中,选中的是所有的,而不是某一个,所以说 "共性" 而不是 ”特性“。

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title标签</title>
    <style type="text/css" media="screen">
    p {
    color: red;
    }
    </style>
    </head>
    <body>
    <p>段落</p>
    </body>
    </html>

    2)id选择器

    # 选中id

    同一个页面中id不能重复。
    任何的标签都可以设置id
    id命名规范 要有字母 可以有数字 下划线 - 大小写严格区分 aa和AA是两个不一样的属性值

     #box{
         background:green;
     }
                 
     #s1{
         color: red;
     }
     
     #s2{
         font-size: 30px;
     }
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title标签</title>
        <style type="text/css" media="screen">
            #box{
                color: red;
            }
        </style>
    </head>
    <body>
    <div id="box">段落</div>
    </body>
    </html>

    3)类选择器

    所谓类 就是class . class与id非常相似 任何的标签都可以加类但是类是可以重复,属于归类的概念。

    同一个标签中可以携带多个类,用空格隔开。

    .lv{
        color: green;
    
    }
    .big{
        font-size: 40px;
    }
    .line{
        text-decoration: underline;
    }
    <!-- 公共类    共有的属性 -->
        <div>
            <p class="lv big">段落1</p>
            <p class="lv line">段落2</p>
            <p class="line big">段落3</p>
        </div>

    总结:

    • 不要去试图用一个类将我们的页面写完。这个标签要携带多个类,共同设置样式
    • 每个类要尽可能的小,有公共的概念,能够让更多的标签使用

    到底使用id还是用class?
    答案:尽可能的用class。除非一些特殊情况可以用id

    原因:id一般是用在js的。也就是说 js是通过id来获取到标签

    2、高级选择器

    高级选择器分为:后代选择器、子代选择器、并集选择器、交集选择器。

    1)后代选择器

    使用空格表示后代选择器。顾名思义,父元素的后代。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style type="text/css" media="screen">
            #box p {
                color: red;
            }
        </style>
    </head>
    <body>
    <div id="box">
        <p>段落</p>
    </div>
    </body>
    </html>

    2)子代选择器

    使用>表示子代选择器。比如div>p,仅仅表示的是当前div元素选中的子代。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style type="text/css" media="screen">
            #box>p {
                color: red;
            }
        </style>
    </head>
    <body>
    <div id="box">
        <p>段落1</p>
        <div id="box2">
            <p>段落2</p>
        </div>
    </div>
    </body>
    </html>

     3)并集选择器

     多个选择器之间使用逗号隔开。表示选中的页面中的多个标签。一些共性的元素,可以使用并集选择器。

    /*并集选择器*/
    h3,a{
        color: #008000;
        text-decoration: none;
                    
    }

    比如像百度首页使用并集选择器。

    body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td {
          margin: 0;
          padding: 0
       }
    /*使用此并集选择器选中页面中所有的标签,页面布局的时候会使用*/

    4)交集选择器

    使用.表示交集选择器。第一个标签必须是标签选择器,第二个标签必须是类选择器。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style type="text/css" media="screen">
            span {
                color: red;
            }
            span.aaa {
                color: green;
            }
        </style>
    </head>
    <body>
    <span class="aaa">哈哈哈</span>
    <span>哈哈哈</span>
    <span>哈哈哈</span>
    <span>哈哈哈</span>
    <span>哈哈哈</span>
    </body>
    </html>

    3、属性选择器

    属性选择器,字面意思就是根据标签中的属性,选中当前的标签。

    /*根据属性查找*/
                /*[for]{
                    color: red;
                }*/
                
                /*找到for属性的等于username的元素 字体颜色设为红色*/
                /*[for='username']{
                    color: yellow;
                }*/
                
                /*以....开头  ^*/ 
                /*[for^='user']{
                    color: #008000;
                }*/
                
                /*以....结尾   $*/
                /*[for$='vvip']{
                    color: red;
                }*/
                
                /*包含某元素的标签*/
                /*[for*="vip"]{
                    color: #00BFFF;
                }*/
                
                /**/
                
                /*指定单词的属性*/
                label[for~='user1']{
                    color: red;
                }
                
                input[type='text']{
                    background: red;
                }

    4、伪类选择器

    伪类选择器一般会用在超链接a标签中,使用a标签的伪类选择器,我们一定要遵循"爱恨准则"  LoVe HAte。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style type="text/css" media="screen">
            /*没有被访问的a标签的样式*/
            .box ul li.item a:link {
                color: green;
            }
            /*访问过后的a标签的样式*/
            .box ul li.item a:visited {
                color: yellow;
            }
            /*访问过后的a标签的样式*/
            .box ul li.item a:hover {
                color: blue;
            }
            /*访问过后的a标签的样式*/
            .box ul li.item a:active {
                color: yellowgreen;
            }
        </style>
    </head>
    <body>
    <div class="box">
        <ul>
            <li class="item">
                <a href="#" title="">百度</a>
            </li>
        </ul>
    </div>
    </body>
    </html>

    介绍一种css3的选择器nth-child():

    /*选中第一个元素*/
            div ul li:first-child{
                font-size: 20px;
                color: red;
            }
            /*选中最后一个元素*/
            div ul li:last-child{
                font-size: 20px;
                color: yellow;
            }
            
            /*选中当前指定的元素  数值从1开始*/
            div ul li:nth-child(3){
                font-size: 30px;
                color: purple;
            }
            
            /*n表示选中所有,这里面必须是n, 从0开始的  0的时候表示没有选中*/
            div ul li:nth-child(n){
                font-size: 40px;
                color: red;
            }
            
            /*偶数*/
            div ul li:nth-child(2n){
                font-size: 50px;
                color: gold;
            }
            /*奇数*/
            div ul li:nth-child(2n-1){
                font-size: 50px;
                color: yellow;
            }
            /*隔几换色  隔行换色
                 隔4换色 就是5n+1,隔3换色就是4n+1
                */
            
            div ul li:nth-child(5n+1){
                font-size: 50px;
                color: red;
            }

    三、盒模型

    1、盒模型

    1)介绍

    在CSS中,"box model"这一术语是用来设计和布局时使用,然后在网页中基本上都会显示一些方方正正的盒子。我们称为这种盒子叫盒模型。

    盒模型有两种:标准模型和IE模型。我们在这里重点讲标准模型。

    2)盒模型示意图

    3)盒模型的属性

    width:内容的宽度

    height: 内容的高度

    padding:内边距,边框到内容的距离

    border: 边框,就是指的盒子的宽度

    margin:外边距,盒子边框到附近最近盒子的距离

    4)盒模型计算

    如果一个盒子设置了padding,border,width,height,margin(先不要设置margin)

    盒子的真实宽度=width+2*padding+2*border

    盒子的真实宽度=height+2*padding+2*border

    2、padding(内边距)

    1)padding

    padding:就是内边距的意思,它是边框到内容之间的距离

    另外padding的区域是有背景颜色的。并且背景颜色和内容的颜色一样。也就是说background-color这个属性将填充所有的border以内的区域。

    2)padding的设置

    padding有四个方向,分别描述4个方向的padding。

    描述的方法有两种

    写小属性,分别设置不同方向的padding:

    padding-top: 30px;
    padding-right: 30px;
    padding-bottom: 30px;
    padding-left: 30px;

    写综合属性,用空格隔开:

    /*上 右 下 左*/
    padding: 20px 30px 40px 50px ;
    
    /*上 左右  下*/
    padding: 20px 30px 40px;
    
    /* 上下 左右*/
    padding: 20px 30px;
                
    /*上下左右*/
    padding: 20px;

    3)一些标签默认有padding

    比如ul标签,有默认的padding-left值。

    那么我们一般在做站的时候,是要清除页面标签中默认的padding和margin。以便于我们更好的去调整元素的位置。

    我们现在初学可以使用通配符选择器

    *{
      padding:0;
      margin:0;    
    }

    But,这种方法效率不高。

    所以我们要使用并集选择器来选中页面中应有的标签(不同背,因为有人已经给咱们写好了这些清除默认的样式表,reset.css)(https://meyerweb.com/eric/tools/css/reset/)。

    3、border(边框)

    1)边框

    border:边框的意思,描述盒子的边框

    边框有三个要素: 粗细 线性样式 颜色,例如  border: solid 就是实线的意思。

    如果颜色不写,默认是黑色。如果粗细不写,不显示边框。如果只写线性样式,默认的有上下左右 3px的宽度,实体样式,并且黑色的边框。

    2)按照3要素来写border

    border- 3px;
    border-style: solid;
    border-color: red;
    /*
    border- 5px 10px;
    border-style: solid dotted double dashed;
    border-color: red green yellow;
    */

    3)按照方向划分

    border-top- 10px;
    border-top-color: red;
    border-top-style: solid;
    
    border-right- 10px;
    border-right-color: red;
    border-right-style: solid;
    
    border-bottom- 10px;
    border-bottom-color: red;
    border-bottom-style: solid;
    
    border-left- 10px;
    border-left-color: red;
    border-left-style:solid;

    上面12条语句,相当于 bordr: 10px solid red;

    另外还可以这样:

    border-top: 10px solid red;
    border-right: 10px solid red;
    border-bottom: 10px solid red;
    border-left: 10pxb solid red;

    border:none;

    border:0;

    表示border没有设置样式。

    4)使用border来制作小三角

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style type="text/css">
            div{
                width: 0;
                height: 0;
                border-bottom: 30px solid red;
                border-left: 30px solid transparent;
                border-right: 30px solid transparent;
            }
        </style>
    </head>
    <body>
    <div></div>
    </body>
    </html>

    4、margin

    margin:外边距的意思。表示边框到最近盒子的距离。

    /*表示四个方向的外边距离为20px*/
    margin: 20px;
    /*表示盒子向下移动了30px*/
    margin-top: 30px;
    /*表示盒子向右移动了50px*/
    margin-left: 50px;
    
    margin-bottom: 100px;

    1)margin塌陷问题

     html结构:

    <div class="father">
        <div class="box1"></div>        
        <div class="box2"></div>
    </div>

    css样式:

     *{
                padding: 0;
                margin: 0;
            }
            .father{
                width: 400px;
                overflow: hidden;
                border: 1px solid gray;
            }
            .box1{
                width: 300px;
                height: 200px;
                background-color: red;
                margin-bottom: 20px;}
            .box2{
                width: 400px;
                height: 300px;
                background-color: green;
                margin-top: 50px;
            }

    效果:

    当给两个标准流下兄弟盒子 设置垂直方向上的margin时,那么以较大的为准,那么我们称这种现象叫塌陷。

    当我们给两个标准流下的兄弟盒子设置浮动之后,就不会出现margin塌陷的问题。

     css样式:

    *{
        padding: 0;
        margin: 0;
    }
    .father{
        width: 400px;
        overflow: hidden;
        border: 1px solid gray;
    }
    .box1{
        width: 300px;
        height: 200px;
        background-color: red;
        margin-bottom: 20px;
        float:left;
    }
    .box2{
        width: 400px;
        height: 300px;
        background-color: green;
        margin-top: 50px;
        float:left;
    }

    效果:

    2)margin:0 auto

    html代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
                *{
                    padding: 0;
                    margin: 0;
                }
              div{
                    width: 780px;
                    height: 50px;
                    background-color: red;
                    /*水平居中盒子*/
                    margin: 0px auto;
                    /*水平居中文字*/
                    text-align: center;
                }
        </style>
    </head>
    <body>
        <div class="box1">文字文字文字文字</div>
    </body>
    </html>

    效果:

    使用margin:0 auto;注意点:

    1.使用margin: 0 auto;水平居中盒子必须有width,要有明确width,文字水平居中使用text-align: center;

    2.只有标准流下的盒子 才能使用margin:0 auto; (当一个盒子浮动了,固定定位,绝对定位(后面会讲),margin:0 auto; 不能用了)

    3.margin:0 auto;居中盒子。而不是居中文本,文字水平居中使用text-align: center;

    4.margin-left:auto;与margin-right:auto;同时使用--居中盒子。;

    备注: margin属性是描述兄弟盒子的关系,而padding描述的是父子盒子的关系

     3)善于使用父亲的padding,而不是margin

    实现如图的效果代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                padding: 0;
                margin: 0;
            }
            .father{
                width: 300px;
                height: 300px;
                background-color: blue;
                padding-top:30px;
            }
            .box1{
                width: 150px;
                height: 100px;
                background-color: red;
            }
        </style>
    </head>
    <body>
    <div class="father">
        <div class="box1"></div>
    </div>
    </body>
    </html>

    如果在box1中加入margin-top: 30px,因为father没有border,那么box1的margin-top实际上踹的是“流” 踹的是行,所以father掉下来了,一旦给father一个border发现就好了。

    那么问题来了,我们不可能在页面中无缘无故的去给盒子加一个border,所以此时的解决方案只有一种。就是使用father的padding。让box1挤下来。

    三、css的继承性和层叠性

    css有两大特性:继承性和层叠性

    继承性:

    面向对象语言都会存在继承的概念,在面向对象语言中,继承的特点:继承了父类的属性和方法。那么我们现在主要研究css,css就是在设置属性的。不会牵扯到方法的层面。

    继承:给父级设置一些属性,子级继承了父级的该属性,这就是我们的css中的继承。

    记住:有一些属性是可以继承下来 : color 、 font-*、 text-*、line-* 。主要是文本级的标签元素。

    但是像一些盒子元素属性,定位的元素(浮动,绝对定位,固定定位)不能继承。

    层叠性:

    层叠性: 权重的标签覆盖掉了权重小的标签。
    权重: 谁的权重大,浏览器就会显示谁的属性。

    第一种情况:(数:id的数量 class的数量 标签的数量,顺序不能乱)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title标签</title>
        <style type="text/css" media="screen">
            <!-- 权重 -->
            /*  id  class  标签  记录个数*/
    
            /*1 0 0*/
            #pa{
                color: yellow;
            }
            /*0 1 0*/
            .app{
                color: red;
            }
            /*0 0 1*/
            p{
                color: blue;
            }
        </style>
    </head>
    <body>
    <p id="pa" class="app">猜猜我是什么颜色</p>
    </body>
    </html>

    第二种情况:权重不一样,比较大小

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style type="text/css" media="screen">
            <!--权重-->
            /*1 2 1 */
            #box .wrap2 .wrap3 p{
                color: red;
            }
            /*2 1 1*/
            #box #box2 div .app{
                color: yellow;
            }
        </style>
    </head>
    <body>
    <div id="box" class="wrap">
        <p>段落1</p>
        <div id="box2" class="wrap2">
            <div id="box3" class="wrap3">
                <p id="pa" class="app">段落2</p>
            </div>
        </div>
    </div>
    </body>
    </html>

    第三种情况:当权重一样的时候 是以后来设置的属性为准

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style type="text/css" media="screen">
            <!--权重-->
            /*2 1 1 */
            #box #box2 .wrap3 p{
                color: red;
            }
            /*2 1 1*/
            #box #box2 div .app{
                color: yellow;
            }
        </style>
    </head>
    <body>
    <div id="box" class="wrap">
        <p>段落1</p>
        <div id="box2" class="wrap2">
            <div id="box3" class="wrap3">
                <p id="pa" class="app">段落2</p>
            </div>
        </div>
    </div>
    </body>
    </html>

    第四种情况:没有选中的标签权重为0

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style type="text/css" media="screen">
            <!--权重-->
            /*2 2 0 */
            #box #box2 .wrap3 .app{
                color: red;
            }
            /*2 1 1*/
            #box #box2 div .app{
                color: yellow;
            }
            /*3 0 0  继承(没有选中)的标签权重为0*/
            #box #box2 #box3{
                color: green;
            }
            /*2 0 0 如果权重都为0 还要比较权重*/
            #box #box2 {
                color: blue;
            }
        </style>
    </head>
    <body>
    <div id="box" class="wrap">
        <p>段落1</p>
        <div id="box2" class="wrap2">
            <div id="box3" class="wrap3">
                <p id="pa" class="app">段落2</p>
            </div>
        </div>
    </div>
    </body>
    </html>

    总结:

    1.先看标签元素有没有被选中,如果选中了,就数数 (id,class,标签的数量) 谁的权重大 就显示谁的属性。权重一样大,后来者居上
    2.如果没有被选中标签元素,权重为0。
    如果属性都是被继承下来的 权重都是0 。权重都是0:"就近原则" : 谁描述的近,就显示谁的属性

  • 相关阅读:
    第六课样式表
    jsp传递参数的四种方法
    Data truncated for column 'Sex' at row 1
    写方法时try,catch 的好处
    访问报错The origin server did not find a current representation for the target resou
    tomcat启动报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost].
    Win10鼠标右键如何添加快捷关机、注销等功能?
    idea tomcat部署
    html如何将图片盖住整个网页
    如果要在标签中显示"<"或者">"等特殊字符,可以使用“&”开头,“;”结尾,中间加上字符对应的编码就可以啦。
  • 原文地址:https://www.cnblogs.com/xingye-mdd/p/9236543.html
Copyright © 2020-2023  润新知