美文网首页
CSS补充2

CSS补充2

作者: 金石_832e | 来源:发表于2019-04-15 11:39 被阅读0次

    定位position

    定位分为四种:相对定位 relative,绝对定位 absolute,固定定位 fixed,没有定位 static。
    relative:不脱离文档流,提升层级,一般作为父级元素,为子级元素的定位提供参考范围。
    absolute:脱离文档流,提升层级,一般作为子级元素。
    fixed:针对于窗口进行定位,脱离文档流,提升层级。加入针对body做固定定位。无论鼠标怎么滚动,肉眼观察被定为的元素,位置都是不变的。

    注意点:不管是那种定位,子级元素的位置都是针对于父级元素来定的。在实际开发中,子级元素需要定位,父级元素一般也会有定位。
    定位的扩展样式:left,right,top,bottom

    固定定位样式展示(不常用,只看效果)

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>相对定位</title>
            <style type="text/css">
                body{
                    margin: 0;
                    padding: 0;
                }
                div{
                    width: 100px;
                    height: 6.25rem;
                }
                #box1{
                    background: yellow;
                }
                #box2{
                    background: green;
                    /* 测试绝对定位 */
                    position: fixed;
                    right: 0px;
                    top: 0px;
                }
                #box3{
                    background: blue;
                }
            </style>
        </head>
        <body>
            
            <div id="box1">
                
            </div>
            <div id="box2">
                
            </div>
            <div id="box3">
                
            </div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
            <div id="">哈哈哈哈</div>
        </body>
    </html>
    
    

    初始效果图

    滑动效果图


    浮动加定位练习

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style type="text/css">
                * {
                    padding: 0;
                    margin: 0;
                }
    
                #nav {
                    height: 50px;
                    background: #D5D5D5;
                }
    
                #secnav {
                    height: 150px;
                    width: 1000px;
                    background: brown;
                    margin: 5px auto;
                }
    
                #content {
                    width: 1000px;
                    margin: 0 auto;
                }
    
                #content .center,
                #content .right,
                #content .left {
                    width: 350px;
                    float: left;
                    height: 400px;
                }
    
                #content .left {
                    width: 300px;
                    background: red;
                }
    
                #content .right {
                    background: blue;
                }
    
                #content .center {
                    background: green;
                    position: relative;
                }
    
                .img_fir,
                .img_sec {
                    width: 100px;
                    height: 100px;
                    background: pink;
                    position: absolute;
                }
    
                .img_fir {
                    left: 50px;
                    top: 80px;
                }
    
                .img_sec {
                    left: 50px;
                    top: 200px;
                }
    
                p.p1 {
                    position: absolute;
                    left: 200px;
                    top: 220px;
                }
    
                p.p2 {
                    position: absolute;
                    left: 200px;
                    top: 120px;
                }
            </style>
        </head>
        <body>
            <div id="nav">
    
            </div>
            <div id="secnav">
    
            </div>
            <div id="content">
                <div class="left">
    
                </div>
                <div class="center">
                    <div class="img_fir">
    
                    </div>
                    <div class="img_sec">
    
                    </div>
                    <p class="p1">这是第一段文字</p>
                    <p class="p2">这是第二段文字</p>
                </div>
                <div class="right">
    
                </div>
            </div>
        </body>
    </html>
    
    

    利用z-index提升层级,模拟box-shadow渲染边框

    <html>
        <head>
            <meta charset="utf-8">
            <title>做阴影</title>
            <style type="text/css">
                #box{
                    width: 100px;
                    height: 100px;
                    position: relative;
                }
                .p1{
                    width: 100px;
                    height: 100px;
                    border: 1px blue solid;
                    position: absolute;
                    background: #fff;
                }
                .p2{
                    width: 100px;
                    height: 100px;
                    border: 1px blue #000;
                    position: absolute;
                    left:8px ;
                    top: 8px;
                    background: #000;
                    opacity: 0.6;
                    /* z-index提升或降低层级 */
                    z-index: -100;
                }
            </style>
        </head>
        <body>
            <div id="box">
                <div class="p1">
                    
                </div>
                <div class="p2">
                    
                </div>
            </div>
        </body>
    </html>
    

    透明度使用存在问题

    在同一标签下,设置背景样式和文字样式,又设置该标签的opcity。会导致文字和背景颜色一起变透明。
    解决方式:背景和文字做成两个兄弟标签,通过定位将文字所在的标签放在背景所在的标签上,给背景所在的标签添加透明度。


    溢出 overflow

    属性:auto(如果超出会出现滑动条),hidden(如果超出会隐藏超出部分)

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style type="text/css">
                div{
                    width: 200px;
                    height: 200px;
                    border: 1px red solid;
                    overflow: auto;
                    /* 超出部分隐藏
                    overflow: hidden; */
                }
            </style>
        </head>
        <body>
            <div id="">
                dwahuiodhoiwajdpwdwadwadw
                的户外哦好多我
                等你哦按地往哪
                给你陪你玩披肩发陪我就
                但我买票就没跌破挖坑吗
                的户外哦好多我
                等你哦按地往哪
                给你陪你玩披肩发陪我就
                但我买票就没跌破挖坑吗
                的户外哦好多我
                等你哦按地往哪
                给你陪你玩披肩发陪我就
                但我买票就没跌破挖坑吗
                的户外哦好多我
                等你哦按地往哪
                给你陪你玩披肩发陪我就
                但我买票就没跌破挖坑吗
                的户外哦好多我
                等你哦按地往哪
                给你陪你玩披肩发陪我就
                但我买票就没跌破挖坑吗
            </div>
        </body>
    </html>
    

    小知识点补充:当设置好能容纳两个图片的标签宽高后,将两张图片放在其中,会出现放不下的情况。因为html中两个文字之间的距离,或者图片间的距离并不是0。因此需要初始化body标签或需要容纳两张图片的标签设置font-size为0!!!

    相关文章

      网友评论

          本文标题:CSS补充2

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