css-浮动+定位

一、浮动

1.浮动,让元素脱离正常的文档流,当正常文档布局不能解决的时候,则需要脱离正常文档流

2.浮动的应用:一列变一行

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动</title>
    <style>
        ul{
            /*去除无序列表前面的小圆点*/
            list-style:none;
        }
        li{
            float:left;
            margin-left:20px;
        }
    </style>
</head>
<body>

    <ul>
        <li>首页</li>
        <li>登录</li>
        <li>注册</li>
    </ul>

</body>
</html>

 

3.浮动带来的问题:高度塌陷

高度塌陷

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动</title>
    <style>
        .box{
            border:10px solid red;
        }
        .box div{
            height:100px;
            width:100px;
        }
        .left{
            background:green;
        }
        .right{
            background:deepskyblue ;
        }
    </style>
</head>
<body>

    <div class="box">
        <div class="left"></div>
        <div class="right"></div>
    </div>

</body>
</html>

当<div class="left"></div>和<div class="right"></div>两个标签浮动之后,脱离了原来的文档流,父级标签没有了内容的支撑,发生了高度塌陷

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动</title>
    <style>
        .box{
            border:10px solid red;
        }
        .box div{
            height:100px;
            width:100px;
        }
        .left{
            background:green;
            float:left;
        }
        .right{
            background:deepskyblue ;
            float:left;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="left"></div>
        <div class="right"></div>
    </div>

</body>
</html>

 

4.解决高度塌陷问题的方法

4.1 overflow :hidden

4.2 方法2:

 

4.3 方法3:

利用伪类方法来清楚浮动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动</title>
    <style>
     
        .box{
            border:10px solid red;
            overflow: hidden;
        }
        .box div{
            height:100px;
            width:100px;
        }
        .left{
            background:green;
            float:left;
        }
        .right{
            background:deepskyblue ;
            float:left;
        }
        .clearfix::after{     
            display: block;    
            clear:both;
            content:"";
            /*clearfix是一个类名;*/
            /*样式三个缺一不可*/
            /*display:block 表示我们这个元素为块级元素*/
            /*clear:both  清楚所有*/
            /*content:“” 当里面没有元素的时候,清楚浮动*/
        }
        
    </style>
</head>
<body>
<!--浮动带来的问题:高度塌陷-->
<!--在父级标签里面写上类名-->
    <div class="box clearfix">
        <div class="left"></div>
        <div class="right"></div>
    </div>

</body>
</html>

当有浮动出现的时候,就会触发伪类元素,清楚浮动带来的高度塌陷问题

当父级盒子里面有浮动带来的高度塌陷,就可以用这种方法来清楚浮动,推荐使用

 

二、定位

1.定位:定位就是将元素定在网页中的任意位置

定位:static(默认值)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)

2.固定定位

固定定位是脱离文档流的,即脱离了原来的位置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>固定定位</title>
    <style>
        div{
            width:200px;
            height:200px;
            background:skyblue;
        }
    </style>
</head>
<body>
    <div>hello world!</div>
</body>
</html>

固定定位是脱离文档流的

3.相对定位

相对定位就是相对自身原来的位置作为参照的来定位的,所以原来的位置是一直存在的,并没有脱离文档流

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>相对定位</title>
    <style>
        div{
            height:200px;
            width:200px;
            background:red;
        }
        .div1{
            background:green;
            /*position:fixed;  我们可以发现测试对象的位置让出来了,参照物进入了它的位置*/
            position:relative;
            /*相对定位我们发现测试对象发生了相对定位,但是它的位置依然没有释放出来,说明相对定位是不脱离文档流的*/
            left:300px;
            top:300px;
        }

    </style>
</head>
<body>
    <div class="div1">测试对象</div>
    <div class="div2">参照</div>
</body>
</html>

 

4.绝对定位

绝对定位是以浏览器作为参照物

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>相对定位</title>
    <style>
        div{
            height:200px;
            width:200px;
            background:red;
        }
        .div1{
            background:green;
            /*position:fixed;  我们可以发现测试对象的位置让出来了,参照物进入了它的位置*/
            /*position:relative;*/
            position:absolute;
            /*相对定位我们发现测试对象发生了相对定位,但是它的位置依然没有释放出来,说明相对定位是不脱离文档流的*/
            left:300px;
            top:300px;
        }

    </style>
</head>
<body>
    <div class="div1">测试对象</div>
    <div class="div2">参照</div>
</body>
</html>

 

由上图我们可以看出,绝对定位是脱离文档流的

 

 

5.定位的应用---父相子绝

相对定位不脱离文档流,而绝对定位是脱离文档流的

父相子绝:父盒子用相对定位,子盒子用绝对定位

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>父相子绝</title>
    <style>
        .div{
            height:800px;
            width:800px;
            background:cadetblue ;
            position:relative;
        }
        .div div{
            height:100px;
            width:100px;
            position:absolute;
        }
        .div1{
            background:cyan ;
            left:100px;
            bottom:200px;

        }
        .div2{
            background:palegreen ;
            border-radius: 50%;
            left:40px;
            bottom:40px;
        }
        .div3{
            background:beige ;
            left:50px;
            bottom:500px;
        }

    </style>
</head>
<body>
    <div class="div">
        <div class="div1"></div>
        <div class="div2"></div>
        <div class="div3"></div>
    </div>
</body>
</html>

 

将子元素放到正中心

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>父相子绝</title>
    <style>
        .div{
            height:800px;
            width:800px;
            background:cadetblue ;
            position:relative;
        }
        .div div{
            height:100px;
            width:100px;
            position:absolute;
        }
        .div1{
            /*将元素放到正中心*/
            background:cyan ;
            left:50%;
            margin-left:-50px;
            top:50%;
            margin-top:-50px;
        }
        .div2{
            background:palegreen ;
            border-radius: 50%;
            left:40px;
            bottom:40px;
        }
        .div3{
            background:beige ;
            left:50px;
            bottom:500px;
        }

    </style>
</head>
<body>
    <div class="div">
        <div class="div1"></div>
        <div class="div2"></div>
        <div class="div3"></div>
    </div>
</body>
</html>

 

6.元素的层叠顺序排列

简单地说就是层叠在一起的图片或者其他元素,谁在上面谁在下面,比如轮播图的层叠图片,哪种图片水排在第一张

 如果想要控制显现的图片哪张图片优先,就要用到Z-index

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>静态轮播图</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .d1{
            width:800px;
            height:200px;
            background:olivedrab ;
            margin:0 auto;
            position:relative;
        }
        ul{
            list-style: none;
        }
        img{
            width:800px;
            height:200px;
            position:absolute; 
        }

    </style>
</head>
<body>
    <div class="d1">
        <ul class="u1">
            <!--z-index后面的数字哪个数字大,就显示谁-->
            <li ><img style="z-index:1" src="C:\Users\dyl\Pictures\29-11091512035335.jpg" alt=""></li>
            <li><img style="z-index:2" src="C:\Users\dyl\Pictures\u=3393628659,3401683801&fm=26&gp=0.jpg" alt=""></li>
        </ul>
    </div>
</body>
</html>

posted @ 2019-12-10 17:50  zgzeng  阅读(326)  评论(0编辑  收藏  举报