2020-09-21 css页面布局之定位流

定位流

1、相对定位就是相对于自己以前在标准流中的位置来移动

格式:
position:relative
需要配合一下四个属性一起使用
top:20px
left:30px
right:40px
bottom:50px
=======================图=============================


image.png

示范

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>

    <style>
        * {
            margin:0;
            padding:0;
        }

        div {
            width: 100px;
            height: 100px;
        }

        .box1 {
            background-color: red;
        }

        .box2 {
            background-color: green;
            position: relative;
            top: 20px;
            left: 20px;

        }

        .box3 {
            background-color: blue;
        }

    </style>
</head>
<body>

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


</body>
</html>

1.1相对定位的注意点

1)、在相对定位中同一个方向的定位属性只能使用一个
top/bottom 只能使用一个
left/right 只能使用一个
2)、相对定位是不脱离标准流的,会继续在标准流中占用一份空间
3)、由于相对定位是不脱离标准流的,所以在相对定位流中式区分块级,行内,行内块级元素的
4)、由于相对定位是不脱离标准流的,并且相对定位的元素会占用标准流中的位置,所以当给相对定位的元素设置margin/padding
等属性时会影响到标准流的布局,即,给相对定位的标签设置margin或padding,是以该标签原来的位置为基础来进行偏移的。
================================图================================


image.png

示范

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>

    <style>
        * {
            margin:0;
            padding:0;
        }

        div {
            width: 100px;
            height: 100px;
        }

        .box1 {
            background-color: red;
        }

        .box2 {
            background-color: green;
            position: relative;
            top: 20px;
            left: 20px;

            /*相对于该标签原来的位置进行偏移*/
            margin-top: 50px;

        }

        .box3 {
            background-color: blue;
        }

    </style>
</head>
<body>

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


</body>
</html>

1.2、相对定位的应用场景

1)、用于对元素进行微调
2)、配合后面学的绝对定位来使用

===============================图==========================


image.png

image.png

示范

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>

    <style>
        * {
            margin:0;
            padding:0;
        }

        input {
            width: 200px;
            height: 50px;
        }

        input:focus {   /*输入框获取焦点也即是点击时的样式,背景颜色*/
          outline: none;
          background-color: #eee;
        }

        img {
            height: 50px;
            position: relative;
            top: 20px;
        }
    </style>
</head>
<body>

<input type="text" name="call" placeholder="请输入图片中的验证码">
<img src="call.jpeg" alt="">


</body>
</html>

2、绝对定位就是相对于body或者某个定位流中的祖先元素来定位

===============================图=================================


image.png

image.png

示范

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        div {
            width: 100px;
            height: 100px;
        }

        .box1 {
            background-color: red;
        }
        .box2 {
            position: absolute;
            /*left: 0;*/
            /*top: 10px;*/
            background-color: green;

        }
        .box3 {
            background-color: blue;
        }
    </style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>

</body>
</html>

2.1、绝对定位的参考点

1)、默认情况下所有的绝对定位的元素,无论有无祖先元素,都会以body作为参考点
2)、如果一个绝对定位的元素有祖先元素,并且祖先元素也是定位流,那么这个绝对定位的元素就会以定位流的那个祖先元素作为参考点
2.1)只要是这个绝对定位元素的祖先元素都可以
2.2)祖先元素必须是定位流,此处的定位流指的是绝对定位,相对定位,固定定位(定位流中只有静态定位不行)
2.3)如果一个绝对定位的元素有祖先元素,而且祖先元素中有多个元素都是定位流,那么这个绝对定位流的元素会以离它最近的那个定位流的祖先元素作为参考点

默认情况下所有的绝对定位的元素,无论有无祖先元素,都会以body作为参考点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>

        * {
            margin: 0;
            padding: 0;
        }

        .box1 {
            width: 100px;
            height: 100px;
            background-color: red;

            position: absolute;
            right: 0;
            bottom: 0;

        }

        .box2 {
            width: 2000px;
            height: 100px;
            background-color: green;
        }

        .box3 {
            width: 100px;
            height: 2000px;
            background-color: blue;
        }


    </style>
</head>
<body>

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


</body>
</html>

2.2、绝对定位的注意点

1)、绝对定位的元素是脱离标准流的,所以绝对定位的元素不区分块级元素/行内元素/行内块级元素
2)、如果一个绝对定位的元素是以body作为参考点,那么其实是以网页首屏的宽度和高度作为参考点,而不是以整个网页的宽度和高度作为参考点,会相对于body定位会随着页面的滚的那个而滚动。
3)、一个绝对定位的元素会忽略祖先元素的padding。

绝对定位相对于body定位是以首屏为准

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>

        * {
            margin: 0;
            padding: 0;
        }

        .box1 {
            width: 100px;
            height: 100px;
            background-color: red;

            position: absolute;
            right: 0;
            bottom: 0;

        }

        .box2 {
            width: 2000px;
            height: 100px;
            background-color: green;
        }

        .box3 {
            width: 100px;
            height: 2000px;
            background-color: blue;
        }


    </style>
</head>
<body>

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

#一个绝对定位的元素会忽略祖先元素的padding
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>

        * {
            margin: 0;
            padding: 0;
        }

        .box1 {
            width: 100px;
            height: 100px;
            background-color: red;

            padding: 20px;

        }
        .box2 {
            width: 50px;
            height: 50px;
            background-color: yellow;
            position: absolute;
            left: 0;
            top: 0;
        }


    </style>
</head>
<body>

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

</body>
</html>

2.3、绝对定位水平居中

1)、注意当一个盒子绝对定位之后不能使用margin:0 auto;让盒子自身居中
2)、如果相让一个绝对定位的盒子自身居中,可以使用left:50%;margin-left:负元素宽度一半px;

示范

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>

        * {
            margin: 0;
            padding: 0;
        }

        .box1 {
            width: 200px;
            height: 50px;
            background-color: red;

            position: absolute;
            left: 50%;
            margin-left: -100px;

        }



    </style>
</head>
<body>
<div class="box1"></div>
</body>
</html>

2.4、绝对定位的应用场景

1)、用于对元素进行微调
2)、配合相对定位来使用
企业开发中一般相对定位和绝对定位都是一起出现的,很少单独使用=====子绝父相
那为何要子绝父相呢,请看下图
===========================图=============================


image.png

3、固定定位

1)、固定定位(和绝对定位高度相似,和背景的关联方式也高度相似)
背景的关联方式background-attachment:fixed;可以让图片不随着滚动条的滚动而滚动
而固定定位可以让某一个元素不随着滚动条滚动而滚动

2)、注意点
· 固定定位,就时相对于浏览器窗口定位,页面如何滚动,这个盒子显示位置不变。
· 固定定位的元素是脱离标准流的,不会占用标准流中的空间。
· 固定定位和绝对定位一样不区分行内、块级、行内块级。
· E6不支持固定定位

示范

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>

    <style>
        * {
            margin: 0;
            padding: 0;
        }


        .bg {
            width: 600px;
            height: 1000px;
            border: 1px solid #000;
            background-image: url("https://images2018.cnblogs.com/blog/1036857/201805/1036857-20180515224016405-1306758469.jpg");
            background-repeat: no-repeat;
            background-attachment: fixed;
        }



        div {
            width: 100px;
            height: 100px;
        }

        .box1 {
            background-color: red;
        }

        .box2 {
            border: 1px solid #000;
            border-radius: 50%;
            text-align: center;
            line-height: 100px;

            background-color: green;
            position: fixed;
            right: 0;
            bottom: 0;
        }

        .box3 {
            background-color: blue;
        }

        .box4 {
            background-color: yellow;
            height: 2000px;
        }



    </style>




</head>
<body>

<div class="bg"></div>

<div class="box1"></div>
<div class="box2">回到顶部</div>
<div class="box3"></div>
<div class="box4"></div>
</body>
</html>

固定定位应用场景

· 网页对联广告
· 网页头部通栏(穿透效果)
=======================图===========================


image.png

4、静态定位

1)、什么是静态定位?
默认情况下标准流中的元素position 属性就等于static,所以静态定位其实就是默认的标准流。

5、z-index

1)、z-index属性:用于指定定位的元素的覆盖关系

1.1)、z-index值表示谁压着谁,数值大的压盖着数值小的。
1.2)、只有定位了的元素,才能有z-index值,也就是说,不管相对定位,绝对定位,固定定位,都可以使用z-index值,而浮动的东西不能用。
1.3)、z-index值没有单位,就是一个正式,默认的z-index值是0
1.4)、如果大家都没有z-index值(默认所有元素z-index值为0),或者z-index值一样,那么
谁卸载HTML后面,谁在上面能压住别人,定位了的元素,永远能都压住没有定位的元素。

2)、注意点:仓父现象(父亲怂了,儿子再牛逼也没用)

父元素没有z-index值,那么子元素谁的z-index值大谁盖谁
父元素z-index值不一样,那么父元素谁的z-index值大谁盖谁
简单说,父元素有z-index值就比父元素的值,子元素的值再大也不管用,
父元素没有值,就比子元素的z-index值。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343