美文网首页
CSS基础之权重深入+盒子模型+标准文档流+浮动

CSS基础之权重深入+盒子模型+标准文档流+浮动

作者: Owen270 | 来源:发表于2017-12-15 16:27 被阅读65次

    1.权重问题深入

    1.1同一个标签,携带了多个类名,且有属性描述相同有冲突时,只看CSS,谁在后面听谁的

    image.png
    image.png

    1.2. !important标记

    a: !important提升的是一个属性,而不是一个选择器
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            p{
                color:red!important;
                font-size: 100px ;
                text-decoration: underline;
            }
            #para1{
                color:blue;
                font-size: 50px;
            }
            .spec{
                color:green;
                font-size: 20px;
            }
        </style>
    </head>
    <body>
        <p id="para1" class="spec">文字</p>
    </body>
    </html>
    
    image.png
    b: !important无法提升继承的权重,该是0还是0
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            div{
                color:red !important;
            }
            p{
                color:blue;
            }
        </style>
    </head>
    <body>
        <div>
            <p>哈哈哈哈哈哈哈哈</p>
        </div>
    </body>
    </html>
    
    image.png
    c: !important不影响就近原则
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            div{
                color:red !important;
            }
            ul{
                color:green;
            }
        </style>
    </head>
    <body>
        <div>
            <ul>
                <li>猜猜我是什么颜色</li>
            </ul>
        </div>
    </body>
    </html>
    
    image.png

    1.3. 权重计算的总结

    image.png

    2.盒子模型

    width是“宽度”的意思,CSS中width指的是内容的宽度,而不是盒子的宽度。
    height是“高度”的意思,CSS中height指的是内容的高度,而不是盒子的高度
    padding是“内边距”的意思
    border是“边框”
    margin是“外边距”
    border  边框 ,边框有三个要素:粗细、线型、颜色。
    border属性能够被拆开,有两大种拆开的方式:
    1) 按3要素:border-width、border-style、border-color
    2) 按方向:border-top、border-right、border-bottom、border-left
    3)如果某一个小要素后面是空格隔开的多个值,那么就是上右下左的顺序:
    border: 1px dashed red;
        div{
                width: 200px;
                height: 200px;
                border-width:10px 20px;
                border-style:solid dashed dotted;
                border-color:red green blue yellow;
            }
    4)按方向来拆:
    1   border-top:10px solid red;
    2   border-right:10px solid red;
    3   border-bottom:10px solid red;
    4   border-left:10px solid red;
    等价于:    border:10px solid red;
    按方向还能再拆一层,就是把每个方向的,每个要素拆开,一共12条语句
    1   border-top-width:10px;
    2   border-top-style:solid;
    3   border-top-color:red;
    4   border-right-width:10px;
    5   border-right-style:solid;
    6   border-right-color:red;
    7   border-bottom-width:10px;
    8   border-bottom-style:solid;
    9   border-bottom-color:red;
    10  border-left-width:10px;
    11  border-left-style:solid;
    12  border-left-color:red;
    等价于:    border:10px solid red;
    
    border可以没有,
    1   border:none;
    某一条边没有:
    1   border-left: none;
    也可以调整左边边框的宽度为0:
    1   border-left-width: 0;
    
    
    image.png image.png image.png

    3.标准文档流

    3.1块级元素和行内元素

    a:块级元素
    霸占一行,不能与其他任何元素并列, 能接受宽、高,如果不设置宽度,那么宽度将默认变为父亲的100%。
    b: 行内元素
    与其他行内元素并排,不能设置宽、高。默认的宽度,就是文字的宽度。
    在HTML中,标签分类:文本级、容器级。
    文本级:p、span、a、b、i、u、em
    容器级:div、h系列、li、dt、dd
    
    CSS的分类和上面的很像,就p不一样:
    所有的文本级标签,都是行内元素,除了p,p是个文本级,但是是个块级元素。
    所有的容器级标签都是块级元素。
    
    image.png
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            h1{
                width: 400px;
                height: 90px;
                background-color: pink;
            }
            span{
                width: 400px;
                height: 90px;
                background-color: pink;
            }
        </style>
    </head>
    <body>
        <h1>哈哈哈哈</h1>
        <h1>嘻嘻嘻嘻</h1>
        <span>哈哈哈哈</span>
        <span>嘻嘻嘻嘻</span>
    </body>
    </html>
    
    image.png

    3.2.块级元素和行内元素的相互转换

    a:块级元素设为行内元素
    display是“显示模式”的意思,用来改变元素的行内、块级性质
    inline就是“行内”。一旦,给一个标签设置 display: inline;
    那么,这个标签将立即变为行内元素。此时它和一个span无异:
    ● 此时这个div不能设置宽度、高度;
    ● 此时这个div可以和别人并排了
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            div{
                display: inline;
                background-color: pink;
                width: 500px;
                height: 500px;
            }
            h1{
                background-color: greenyellow;
                display: inline;
                font-size: 20px;
                font-weight: normal;
            }
        </style>
    </head>
    <body>
        <div>我是一个div</div>
        <div>我是一个div</div>
    
        <h1>我</h1><h1>爱</h1><h1>你</h1><h1>们</h1>
    </body>
    </html>
    
    image.png
    b:行内元素设为块级元素
    让标签变为块级元素。此时这个标签,和一个div无异:
    ● 此时这个span能够设置宽度、高度。
    ● 此时这个span必须霸占一行了,别人无法和他并排
    ● 如果不设置宽度,将撑满父亲
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            span{
                display: block;
                width: 200px;
                height: 200px;
                background-color: pink;
            }
            a{
                display: block;
                width: 250px;
                height: 40px;
                /*文本居中:*/
                text-align: center;
                /*行高40,和盒子一样高,所以就垂直居中了,后面讲*/
                line-height: 40px;
                background-color: orange;
            }
        </style>
    </head>
    <body>
        <a href="http://www.163.com">点击我去网易</a>
    
        <span>我是一个span</span>
        <span>我是一个span</span>
    
    </body>
    </html>
    
    image.png
    c:脱离标准文档流
    1) 浮动
    2) 绝对定位
    3) 固定定位

    4.浮动

    4.1.浮动的元素脱标

    一旦一个元素浮动了,那么,将能够并排了,并且能够设置宽高了。无论它原来是个div还是个span
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            .box1{
                float: left;
                width: 200px;
                height: 200px;
                background-color: yellowgreen;
            }
            .box2{
                width: 350px;
                height: 350px;
                background-color: skyblue;
            }
        </style>
    </head>
    <body>
        <div class="box1"></div>
        <div class="box2"></div>
    </body>
    </html>
    
    image.png

    4.2.浮动的元素互相贴靠

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            span{
                float: left;
                width: 200px;
                height: 200px;
                background-color: orange;
            }
        </style>
    </head>
    <body>
        <span>我是span</span>
        <span>我是span</span>
        <span>我是span</span>
        <span>我是span</span>
        <span>我是span</span>
    </body>
    </html>
    
    image.png
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            body{
                font-size: 60px;
            }
            .box1{
                float: left;
                width: 100px;
                height: 100px;
                background-color: yellowgreen;
            }
            .box2{
                float: left;
                width: 120px;
                height: 220px;
                background-color: gold;
            }
            .box3{
                float: left;
                width: 340px;
                height: 300px;
                background-color: skyblue;
            }
        </style>
    </head>
    <body>
        <div class="box1">1</div>
        <div class="box2">2</div>
        <div class="box3">3</div>
    </body>
    </html>
    
    image.png

    4.3.浮动的元素有字围效果

    让div浮动,p不浮动,div挡住了p,但是p中的文字不会被挡住,形成“字围”效果。我们在初期一定要遵循一个原则:永远不是一个东西单独浮动,浮动都是一起浮动,要浮动,大家都浮动.
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            div{
                float: left;
                width: 344px;
                height: 516px;
                background-color: orange;
            }
        </style>
    </head>
    <body>
        <div>
            <img src="images/1.jpg" alt="" />
        </div>
        <p>123文字文字文......</p>
    </body>
    
    </html>
    

    相关文章

      网友评论

          本文标题:CSS基础之权重深入+盒子模型+标准文档流+浮动

          本文链接:https://www.haomeiwen.com/subject/apirwxtx.html