16-CSS3重点定位和display

来源:互联网 发布:wifi路由器网络不稳定 编辑:程序博客网 时间:2024/05/21 15:01

定位(position)

如果,说浮动, 关键在一个 “浮” 字上面, 那么 我们的定位,关键在于一个 “位” 上。

PS: 定位是我们CSS算是数一数二难点的了,但是,你务必要学好它,我们CSS离不开定位,特别是后面的js特效,天天和定位打交道。不要抵触它,反而要爱上它,它可以让我们工作更加轻松哦!
为什么要用定位?

元素的定位属性

元素的定位属性主要包括定位模式和边偏移两部分。

1、边偏移

边偏移属性 描述 top 顶端偏移量,定义元素相对于其父元素上边线的距离 bottom 底部偏移量,定义元素相对于其父元素下边线的距离 left 左侧偏移量,定义元素相对于其父元素左边线的距离 right 右侧偏移量,定义元素相对于其父元素右边线的距离

也就说,以后定位要和这边偏移搭配使用了, 比如 top: 100px; left: 30px; 等等

2、定位模式

在CSS中,position属性用于定义元素的定位模式,其基本语法格式如下:

选择器{position:属性值;}

position属性的常用值

值 描述 static 自动定位(默认定位方式) relative 相对定位,相对于其原文档流的位置进行定位 absolute 绝对定位,相对于其上一个已经定位的父元素进行定位 fixed 固定定位,相对于浏览器窗口进行定位

静态定位(static)

静态定位是所有元素的默认定位方式,当position属性的取值为static时,可以将元素定位于静态位置。 所谓静态位置就是各个元素在HTML文档流中默认的位置。

上面的话翻译成白话: 就是网页中所有元素都默认的是静态定位哦! 其实就是标准流的特性。

在静态定位状态下,无法通过边偏移属性(top、bottom、left或right)来改变元素的位置。

PS: 静态定位其实没啥可说的。

div{        width: 100px;        height: 100px;        background-color: pink;        /*静态对边偏移无效 一般用来清除定位*/        position: static;/*定位模式是静态的 下面的left和top就不起作用了 而且静态定位写和不写都一样*/        left: 100px;        top: 100px;        }</style>

相对定位relative(自恋型)

相对定位是将元素相对于它在标准流中的位置进行定位,当position属性的取值为relative时,可以将元素定位于相对位置。

对元素设置相对定位后,可以通过边偏移属性改变元素的位置,但是它在文档流中的位置仍然保留。

注意: 相对定位最重要的一点是,它可以通过边偏移移动位置,但是原来的所占的位置,继续占有。

就是说,相对定位的盒子仍在标准流中,它后面的盒子仍以标准流方式对待它。

div:nth-child(2){        background-color: purple;        /*相对定位 相对于自己来移动位置*/        position: relative;        /*相对自己原来的位置移动 而且原来的位置还是它的 还是在标准流中*/        left: 20px;        top: 10px;     }

绝对定位absolute (拼爹型)

 [注意] 如果文档可滚动,绝对定位元素会随着它滚动,因为元素最终会相对于正常流的某一部分定位。

当position属性的取值为absolute时,可以将元素的定位模式设置为绝对定位。

注意: 绝对定位最重要的一点是,它可以通过边偏移移动位置,但是它完全脱标,完全不占位置。

父级没有定位

若所有父元素都没有定位,以浏览器为准对齐(document文档)。

父级有定位

绝对定位是将元素依据最近的已经定位(绝对、固定或相对定位)的父元素(祖先)进行定位。

<style>    .father{        width: 300px;        height: 300px;        background-color: pink;        margin:100px;        position: relative;        }     .son{        background-color: purple;        width: 100px;        height: 100px;        /*绝对定位 脱离标准流的 不占位置 怎么定位完全和父元素有关系*/        position: absolute;        left: 20px;        top: 20px;     }        </style>

绝对定位的盒子没有边偏移

如果只是给盒子指定了 定位,但是没有给与边偏移,则改盒子以标准流来显示排序,和上一个盒子的底边对齐,但是不占有位置。

子绝父相

这个“子绝父相”太重要了,是我们学习定位的口诀,时时刻刻记住的。

这句话的意思是 子级是绝对定位的话, 父级要用相对定位。

首先, 我们说下, 绝对定位是将元素依据最近的已经定位绝对、固定或相对定位)的父元素(祖先)进行定位。

就是说, 子级是绝对定位,父亲只要是定位即可(不管父亲是绝对定位还是相对定位,甚至是固定定位都可以),就是说, 子绝父绝,子绝父相都是正确的。

因为子级是绝对定位,不会占有位置, 可以放到父盒子里面的任何一个地方。
父盒子布局时,需要占有位置,因此父亲只能是 相对定位.
这就是子绝父相的由来。

绝对定位怎么居中对齐

小盒子在大盒子里面垂直居中

<style>        .father {            width: 800px;            height: 400px;            background-color: pink;            margin: 40px auto;            position: relative;        }        .son {            width: 100px;            height: 40px;            background-color: purple;            position: absolute;            /* margin: 0 auto;  加了绝对定位的盒子,margin 左右auto 就无效了 */            /* left: 400px; */            left:50%;  /* left 父盒子宽度的一半 */            margin-left: -50px; /* 左走自己宽度 的一半 */            top: 50%;            margin-top: -20px;        }        </style>

固定定位fixed(认死理型)

固定定位是绝对定位的一种特殊形式,它以浏览器窗口作为参照物来定义网页元素。当position属性的取值为fixed时,即可将元素的定位模式设置为固定定位。

当对元素设置固定定位后,它将脱离标准文档流的控制,始终依据浏览器窗口来定义自己的显示位置。不管浏览器滚动条如何滚动也不管浏览器窗口的大小如何变化,该元素都会始终显示在浏览器窗口的固定位置。

固定定位有两点:

  1. 固定定位的元素跟父亲没有任何关系,只认浏览器。
  2. 固定定位完全脱标,不占有位置,不随着滚动条滚动。
  3. 固定定位必须给个宽度和高度

记忆法: 就类似于孙猴子, 无父无母,好不容易找到一个可靠的师傅(浏览器),就听的师傅的,别的都不听。

ie6等低版本浏览器不支持固定定位。

定位的练习

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title>    <style>    *{        margin: 0px;        padding: 0px;    }    ul{        list-style: none;    }    .slider{        width: 520px;        height: 280px;        background: pink;        margin: 50px auto;        position: relative;    }    .arrow-l, .arrow-r{        position: absolute;        width: 24px;        height: 36px;        top: 50%;        margin-top:-12px;    }    .arrow-l{        left: 0px;    }    .arrow-r {        right: 0px;    }    .circle{        width: 65px;        height: 13px;        position: absolute;        bottom: 15px;        left: 50%;        margin-left: -32.5px;        /*background: pink;*/        background: rgba(2552552550.3);        border-radius: 6px;    }    .circle li{        float: left;        width: 9px;        height: 9px;        border-radius: 50%;        background: #B7B7B7;        margin: 2px;    }    </style>    }    }</head><body><div class="slider"><img src="imgc/taobao.jpg" alt="">    <a class="arrow-l" href="#"><img src="imgc/left.png" alt=""></a>    <a class="arrow-r" href="#"><img src="imgc/right.png" alt=""></a>     <ul class="circle">        <li></li>        <li></li>        <li></li>        <li></li>        <li></li>     </ul></div></body></html>

固定定位

.top{        height: 44px;        background: url(imgc/top.png) no-repeat top center;        width: 100%;/*固定定位的盒子一定要写宽和高 除非里面有内容撑开*/        position: fixed;        top: 0px;        left: 0px;    }    .box {        width: 1002px;        margin:44px auto;    }    .ad-l, .ad-r{        position: fixed;        top: 100px;    }    .ad-l{        left: 0px;    }    .ad-r{        right: 0px;    }

叠放次序(z-index)

当对多个元素同时设置定位时,定位元素之间有可能会发生重叠。

在CSS中,要想调整重叠定位元素的堆叠顺序,可以对定位元素应用z-index层叠等级属性,其取值可为正整数、负整数和0。

比如:

 z-index: 2;

注意:

  1. z-index的默认属性值是0,取值越大,定位元素在层叠元素中越居上。

  2. 如果取值相同,则根据书写顺序,后来居上。

  3. 后面数字一定不能加单位。

  4. 只有相对定位,绝对定位,固定定位有此属性,其余标准流,浮动,静态定位都无此属性,亦不可指定此属性。

四种定位总结

定位模式 是否脱标占有位置 是否可以使用边偏移 移动位置基准 静态static 不脱标,正常模式 不可以 正常模式 相对定位relative 不脱标,占有位置 可以 相对自身位置移动 绝对定位absolute 完全脱标,不占有位置 可以 相对于定位父级移动位置 固定定位fixed 完全脱标,不占有位置 可以 相对于浏览器移动位置

定位模式转换

跟 浮动一样, 元素添加了 绝对定位和固定定位之后, 元素模式也会发生转换, 都转换为 行内块模式, 因此 比如 行内元素 如果添加了 绝对定位或者 固定定位后,可以不用转换模式,直接给高度和宽度就可以了。

<!DOCTYPE html><html lang="en">    <head>        <meta charset="utf-8">        <style>        div {            height: 100px;            background-color:  pink;            /*float: left;  没给盒子的宽度 浮动的盒子有模式转换的情况 转化为 行内块  宽度位内容的宽度*/             /*position: fixed;   元素添加了 绝对定位和固定定位之后, 元素模式也会发生转换, 都转换为 行内块模式 */        }        span {            background-color: purple;            /* display: block; */            width: 100px;            height: 100px;            /*float: left;  如果盒子本身就需要添加浮动后者绝对固定定位就不需要转换了 */            position: absolute;        }        </style>    </head>    <body>    <div> 稳住,定位不难,我们能赢</div>    <span>我是行内元素</span>    </body></html>

元素的显示与隐藏

在CSS中有三个显示和隐藏的单词比较常见,我们要区分开,他们分别是 display visibility 和 overflow。

他们的主要目的是让一个元素在页面中消失,但是不在文档源码中删除。 最常见的是网站广告,当我们点击类似关闭不见了,但是我们重新刷新页面,它们又会出现和你玩躲猫猫!!

display 显示

display 设置或检索对象是否及如何显示。

display : none 隐藏对象 与它相反的是 display:block 除了转换为块级元素之外,同时还有显示元素的意思。

特点: 隐藏之后,不再保留位置。

visibility 可见性

设置或检索是否显示对象。

visible :  对象可视

hidden :  对象隐藏

特点: 隐藏之后,继续保留原有位置。(停职留薪)

display: none;/*隐藏元素 不是删除 看不见了而已但是元素还是存在页面中 但是不保留位置*/        display: block;/*除了转换为块级元素 还有显示元素的意思 和上面一句是反义词*/        visibility: hidden;/*隐藏元素 他和display最大的区别就是他保留位置*/        visibility: visible;/*可见的和上面是翻译词*/

鼠标经过二维码显示

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title>    <style>      div{        width: 100px;        height: 100px;        background-color: pink;        text-align: center;        line-height: 100px;        margin: 100px auto;        position: relative;      }      div img{        position: absolute;        left: 110px;        top: 0px;        display: none;/*暂时隐藏*/      }      div:hover img{        display: block;      }    </style></head><body><div> 扫二维码 <img src="imgc/erweima.png" alt=""></div>  </body></html>

overflow 溢出

检索或设置当对象的内容超过其指定高度及宽度时如何管理内容。

visible :  不剪切内容也不添加滚动条。

auto :   超出自动显示滚动条,不超出不显示滚动条

hidden :  不显示超过对象尺寸的内容,超出的部分隐藏掉

scroll :  不管超出内容否,总是显示滚动条

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title>    <style>    div {        width: 100px;        height: 100px;        background-color: pink;    }    div:first-child {/* display: none;隐藏元素 不是删除  看不见了而已,但是元素一直存在页面中 但是不保留位置  block  显示*/ visibility: hidden; /*  隐藏元素  他和 display none 最大的区别是 他保留位置 visible显示*/    }    div:last-child {        background-color: purple;    }    </style></head><body>    <div></div>    <div></div></body></html>
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 姬珊瑚发软歪了怎么办 胃胀气怎么办简单的方法 8个月的宝宝咳嗽怎么办 坐完月子掉头发怎么办 在香港买到假货怎么办 用气垫脸上浮粉怎么办 不够奶给宝宝吃怎么办 叶插发芽发根后怎么办 多肉植物摊大饼怎么办 英短蓝猫掉毛怎么办 英短蓝猫很凶怎么办 面部打伤怎么办了肿了 朋友欠钱一直拖怎么办 旧车三年不年检怎么办 遇到领导整你该怎么办 皮肤热了就瘙痒怎么办 猫爪子肉垫脏了怎么办 嘴周围干燥起皮怎么办 下嘴唇总是起皮怎么办 上嘴唇老是起皮怎么办 涂口红嘴唇起皮怎么办 上嘴唇干裂起皮怎么办 9岁儿童嘴唇干裂怎么办 上嘴唇干裂烂了怎么办 孕妇脚干的裂开怎么办 小腿皮肤干燥起皮怎么办 秋天脸干燥起皮怎么办 脚上干燥起皮怎么办 脚皮肤干燥起皮怎么办 脚有脚气脱皮又痒怎么办 脚特别干还脱皮怎么办 皮肤干燥起皮怎么办痒 脚一直脱皮怎么办不痒 我的脚老是起皮怎么办? 脚裂了怎么办 小妙招 牛不吃草不倒嚼怎么办 婴儿吸奶乳头痛怎么办 公犬的生殖肿了怎么办 大阴唇一边肿了怎么办 小阴唇比大阴唇大怎么办 儿童9岁外阴白斑怎么办