zoukankan      html  css  js  c++  java
  • css学习-列表浮动,继承性,层叠性,盒模型,margin

    主要内容:

    1. 列表浮动

    2.继承性

    3.层叠性

    4.权重

    5.盒模型

    6.padding.border.margin

    概述:

    1.继承性和层叠性

      继承性:像  一些文本的属性:color,test-*,line-*,font-*这些属性是可以继承下来的.

    2.层叠性就是权重,谁的权重大就显示谁的属性

      如何看权重:就是数数,选择器的个数:id class 标签

        1.针对于选中的标签(谁的权重大,就会显示谁的属性)

        2.如果权重一样大,以后设置的为准

        3.如果是继承下来的属性,它权重为0,跟**选中的标签**没有可比性

        4.如果权重都为0,那么谁描述的近(就近原则),就显示谁的属性

        5.如果权重为0,描述的一样近的时候,回到原始状态(数权重)

    3.盒模型:

      属性:

        内容的宽度

        height:内容的高度

        padding:内容到border的区域

        border:边框

        margin:标准流的标签, margin的使用通常是用在兄弟之间的标签

          坑:margin 水平方向是没有任何问题

            垂直方向 会出坍塌问题,以设置最大的值为基准,以后在写网站,标准流的盒子,垂直方向只设置一个方向即可

          如果儿子踹他爹可以踹,那么只需要给父加border,那么问题来了,页面冗余,可能会影响界面的布局。

    记住:前提是标准流下的盒子。如果是父子之间,调整位置,那么使用padding

    margin的塌陷要避免,只设置一个方向。

    浮动元素  对行内元素和块元素的影响:

      (1)如果标注流下的标签浮动,定位(绝对定位,固定定位)了,不区分是行内还是块级元素。可以任意的设置宽高

      (2)浮动对块元素的影响,像把块元素转化成行内元素。

    1.列表浮动

     1)要注意的问题:

      

    *{
    padding: 0;
    margin: 0;
    }
    ul{

    list-style: none;
    }
    a{
    text-decoration: none;
    }

    上面是清楚格式的代码.

    列表浮动代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>列表浮动</title>
        <style>
            *{
                padding: 0;
                margin: 0;
            }
            ul{
    
            list-style: none;
            }
            a{
                text-decoration: none;
            }
    
        .box{
    /*          500px; */
            background-color: red;
            height: 50px;
        }
    
        .box .li_l{
            float: left;
            margin-left: 5px;
            font-size: 14px;
            line-height: 50px;
            text-align: center;
        }
        .box .li_l a{
            color: white;
            height: 50px;
            display: block;
        }
    
        </style>
    </head>
    <body>
        <div class = "box">
            <ul>
                <li class = "li_l">
                    <a href="#">
                        秒杀离开家了解就 
                    </a>
                </li>
                <li class = "li_l">
                    <a href="#">
                        优惠价了解了解就了解
                    </a>
                </li>
                <li class = "li_l">
                    <a href="#">
                        PLUS会员
                    </a>
                </li>
                <li class = "li_l">
                    <a href="#">
                        闪购
                    </a>
                </li>
                <li class = "li_l">
                    <a href="#">
                        拍卖
                    </a>
                </li>
                <li class = "li_l">
                    <a href="#">
                        京东服饰
                    </a>
                </li>
    
            </ul>
        </div>
        
    </body>
    </html>

    2.继承性

    关于继承性的示例代码:

    这里要注意的问题是:

    继承性:像  一些文本的属性:color,test-*,line-*,font-*这些属性是可以继承下来的.

    正常的标签,上面的都可以继承,但是下划线标签继承时显示有点问题.

    只有a标签color继承有问题,不继承.

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>继承性</title>
        <style>
            .father{
                width: 100px;
                height: 100px;
                background-color: yellow;
    
                color: white;
                line-height: 100px;
                text-align: center;
                font-size: 20px;
                text-decoration: underline;
            }
    
    
    
        </style>
    </head>
    <body>
        <div class = "father">
            <div class="child">
                <p>百度一下</p>
                <a href="#">百度一下</a>
            </div>
        </div>
        
    </body>
    </html>

    3.层叠性

    关于层叠性的比较:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>层叠性</title>
        <style>
            #box1{
                color: red;
            }
            /* 参考下面的规则#box1的数是   1 0  0 */
            .box{
                color: green;
            }
            /* 参考下面的规则.box的数是   0 1  0 */
            p{
                color: yellow;
            }
            /* 参考下面的规则.box的数是   0 0  1 */
            /* 很明显100 > 10 >1 ,所以显示红色*/
            /* 这里比较是通过数大小来比较的
            id选择器是第一位   1 
            类选择器是第二位  
            标签选择器是第三位  
    
             */
    
        </style>
    </head>
    <body>
        <p class = "box" id = "box1"> 猜颜色啦</p>
        
    </body>
    </html>

    层叠性的高级:

    当权重相同时后面的会覆盖前面的:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            /*1 1 2   当权重相同时,后面的会覆盖前面的*/
            .wrap1 #box2 div p{
                color: green;
            }
            /*1 1 2*/
            #box1 .wrap2 div p{
                color: red;
            }
            
            /*#box1 #box2 #box3 p{
    
            }*/
        </style>
    </head>
    <body>
    
        <div class="wrap1" id="box1">
            <div class="wrap2" id='box2'>
                <div class="wrap3" id="box3">
                    <p>猜猜我的颜色</p>
                </div>
            </div>
        </div>
        
    </body>
    </html>

    当继承和选择相比时,以选择为准,因为继承的权重为0

    示例代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            /*继承性权重为0*/
            #box1{
                color: yellow;
            }
            .wrap1 .wrap2 .wrap3 p{
                color: red;
            }
            
        </style>
    </head>
    <body>
    
        <div class="wrap1" id="box1">
            <div class="wrap2" id='box2'>
                <div class="wrap3" id="box3">
                    <p>猜猜我的颜色</p>
                </div>
            </div>
        </div>
        
    </body>
    </html>

    当两个都是继承时,谁的更接近,就用谁的.

    示例代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            /*继承性权重为0*/
            #box1{
                color: yellow;
            }
            .wrap1 .wrap2 {
                color: red;
            }
            
        </style>
    </head>
    <body>
    
        <div class="wrap1" id="box1">
            <div class="wrap2" id='box2'>
                <div class="wrap3" id="box3">
                    <p>猜猜我的颜色</p>
                </div>
            </div>
        </div>
        
    </body>
    </html>

    当都是继承,并且深度都是一样的时候,并且权重一样的时候,(如果不一样,比权重,),谁在后面用谁的.

    示例代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
    
            #box1 .wrap2 div{
                color: red;
            }
            /*继承性权重为0*/
            .wrap1 #box2 div{
                color: yellow;
            }
    
            
        </style>
    </head>
    <body>
    
        <div class="wrap1" id="box1">
            <div class="wrap2" id='box2'>
                <div class="wrap3" id="box3">
                    <p>猜猜我的颜色</p>
                </div>
            </div>
        </div>
        
    </body>
    </html>

    4.盒模型

    盒模型包含三个属性:

    padding: 20px;  内边距,表示内容到边框的距离.

    border: 5px solid green; 盒的边框.

    margin:  盒子和盒子之间的距离

    示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .box{
                width: 200px;
                height: 200px;
                background-color: red;
                padding: 20px;
                border: 5px solid green;
            }
        </style>
    </head>
    <body>
        
        <div class="box">
            
        </div>
    </body>
    </html>

    padding的使用说明:

    padding-top:10px

    上边距10像素

    padding快速设置:

    padding: 10px;  上下左右都是10px

    padding:10px 20px;  上下设置10 px ,左右设置20px

    padding: 10px 20px 30px ; 上设置10px 左右设置20px ,下设置30px

    padding:10px 20px 30px 40px; 上设置10px 右设置20px 下设置30px 左设置 40px

    border使用说明:

    border 盒子的边框.

    border的常规用法如下:

    border:1px solid red;   1px是指边框的宽度,solid 边宽的样式.是实心的还是虚线的,red是指边框的颜色

    border: none; /*一般用这个属性干掉按钮或者表单控件的默认边框*/

    也可以单独设置:

    border-5px  1px 5px 1px 这个是指上下左右(顺序可能不对,)的边框宽度

    border-style: solid dotted double dashed;  上下左右的样式

    border-color: red;*/  边框的颜色.

    border-top: 1px solid red; 单独设置上边的样式和颜色.

    示例代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .box{
                width: 200px;
                height: 200px;
                background-color: blue;
                /*border: 1px solid red;*/
                /*一般用这个属性干掉按钮或者表单控件的默认边框*/
                /*border: none;*/
                /*border- 5px 1px 5px 1px;
                border-style: solid dotted double dashed;
                border-color: red;*/
                border-top: 1px solid red;
    
    
    
    
            }
        </style>
    </head>
    <body>
        <div class="box">
            
        </div>
        
    </body>
    </html>

    使用border来实现三角形:

    示例代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            .box{
                width: 0px;
                height: 0px;
                border-bottom: 40px solid red;
                border-left: 40px solid transparent;
                border-right: 40px solid transparent;
    /*             color: transparent; */
    
            }
        </style>
    </head>
    <body>
        <div class = "box">
            
        </div>
        
    </body>
    </html>

    margin的问题;

    margin是指盒子和其他盒子之间的距离

    margin-right  右边距

    margin-left 左边距

    margin的塌陷现象.

    margin的左右设置是没有问题的,但是margin的上下是有塌陷问题的.

    这里注意一件事,只有在一个div下的各个div之间才会出现塌陷问题,在body下不会出现的.

    塌陷只有margin上下有.左右是没有塌陷问题的.塌陷的解决是上下盒子只有一个有margin,不要搞两个.

    示例代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>margin的塌陷问题</title>
        <style>
            .box1{
                width: 50px;
                height: 50px;
                margin-bottom:  50px;
                background-color: red;
            }
            .box2{
                width: 50px;
                height: 50px;
                margin-top: 50px;
                background-color: blue;
            }
        </style>
    </head>
    <body>
        <div>
        <div class = "box1"></div>
        <div class = "box2"></div>
        </div>
    </body>
    </html>

    当一个父标签下的子标签设置margin时,会发现是父标签会和父标签上面的标签进行margin.

    解决办法是父标签加一个border边框就可以了.

    示例代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            .box{
                width: 300px;
                height: 300px;
                background-color: red;
                border: 1px solid green;
                /*border: 0px solid transparent;*/
    
                /*padding-top: 50px;*/
            }
            .child{
                width: 200px;
                height: 200px;
                background-color: yellow;
                /*margin: 0 auto;*/
                margin-top: 50px;
                
            }
        </style>
    </head>
    <body>
        <div class="box">
            <div class="child"></div>
        </div>
        
    </body>
    </html>

    5.display属性使用

    display : inline-block;行内块

    display:inline;行内标签

    display:blocked;块标签

    下面的示例是行内标签设置后变成行内块后可以设置宽高

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            a{
                width: 100px;
                height: 100px;
                background-color: red;
                /*display: block;*/
                /*
                在一行内显示
                可以设置宽高
                */
                display: inline-block;
            }
        </style>
    </head>
    <body>
        <a href="#">百度一下</a>
        <a href="#">百度一下</a>
    
        
        <!-- 
            行内标签:
            块级标签:
    
         -->
        
    </body>
    </html>
  • 相关阅读:
    我要好offer之 二叉树大总结
    我要好offer之 字符串相关大总结
    楼层扔鸡蛋问题[转]
    Linux System Programming 学习笔记(十一) 时间
    Linux System Programming 学习笔记(十) 信号
    Linux System Programming 学习笔记(九) 内存管理
    Linux System Programming 学习笔记(八) 文件和目录管理
    Linux System Programming 学习笔记(七) 线程
    Linux System Programming 学习笔记(六) 进程调度
    APUE 学习笔记(十一) 网络IPC:套接字
  • 原文地址:https://www.cnblogs.com/ahliucong/p/9449304.html
Copyright © 2011-2022 走看看