视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
CSS定位position及应用场景实例分析
2020-11-27 20:10:15 责编:小采
文档

我们都知道在web页面开发时,有时我们灵活的运用css的定位postion属性进行布局时可以实现很好的效果,本文我们总结了一下position知识点,及平常比较常用的地方,希望对学习css的朋友可以参考。

<script>ec(2);</script>

首先我们对postion属性进行详解。

在CSS3中,对于postion是这么描述的


总结如下:
static 是默认布局,设置top\left。属性不会有作用。
relative是相对布局,设置的top\left。会相对文件中的控件。
absolute是绝对定位,设置的top\left。会相对整个页面而定。
fixed是相对浏览器窗口定位,设置的top/left属性,是相对于浏览器窗口的位置。

除此之外,经过我代码测试:
1.如果top\left。其中某属性缺省,absolute,fixed布局的位置,会相对于父控件的位置进行改变。
2.relative相对定位,如果有父控件,相对的是最近的一个父控件,而非同层最近的一个父控件。其次是兄弟控件。
3.static对其他的遮盖层没有影响。

接着我们来通过代码证明以上结论:

情况1

HTML:

<p id="zero">
 <p id="one">one</p>
 <p id="two">two</p>
 <p id="tree">tree</p>
</p>

CSS:

       #zero{
 width:200px;
 height: 200px;
 margin: 100px 500px;
 background: black;
 
 z-index: 0;
 }
 #one{
 width: 100px;
 height: 100px;
 position: relative;
 top: 50px;
 left:20px;
 background: red;
 z-index: 1;
 }
 #two{
 width: 100px;
 height: 100px;
 position: absolute;
 top: 190px;
 
 background: yellow;
 z-index: 2;
 }
 #tree{
 width: 100px;
 height: 100px;
 position: fixed;
 top: 250px;
 left: 600px;
 background: deepskyblue;
 z-index: 3;
 }

在此大家可以看出来id为one的p是相对父控件的布局。

情况2:

CSS:

 
 #first{
 width: 200px;
 height: 200px;
 background: black;
 margin-top: 100px;
 z-index: 1;
 }
 #second{
 margin-top: 10px;
 margin-left:10px;
 width: 150px;
 height: 150px;
 background: yellow;
 z-index:2;
 }
 #thrid{
 width: 100px;
 height: 100px;
 position:relative;
 background: red;
 top: 30px;
 left: 30px;
 z-index: 1;
 }

HTML:

    <p id="first">
<p id="second">
<p id="thrid"></p>
</p>
</p>

从这里可以看出当relative定位是相对最近一个父控件的,而非同层父控件。

情况3:如果没有父p:

HTML

<p id="out"></p>
<p id="out1"></p>

CSS



 #out{
 margin-top: 50px;
 width: 200px;
 height: 200px;
 background: black;
 z-index: 1;
 }
 
 #out1{
 width: 200px;
 height: 200px;
 background: yellow;
 position: relative;
 z-index: 3;
 top:10px;
 }

通过这种情况,看出来 如果没有父控件,则relative定位是相对于兄弟关系的控件。

CSS3中对于z-index的描述

position开发中常见应用

1.网页两侧浮动窗口(播放器,置顶按钮,浮动广告,功能按钮等)
2.导航栏浮动置顶。
3.隐藏p实现弹窗功能(通过设置p的定位和z-index控制p的位置和出现隐藏)

其中1,3较为简单,通过简单的设置position=fixed,以及top left,z-index就能实现,此处不做说明

情况2:

通过调用js函数判断滚动条所在的位置,超过导航栏距离顶部的高度时就设置position为fix固定导航栏位置,否则position为static,maring等属性不变。

JS:


   

 var mt = 0;
 window.onload = function () {
 var myp = document.getElementById("myp");
 var mt = myp.offsetTop;
 window.onscroll = function () {
 var t = document.documentElement.scrollTop || document.body.scrollTop;
 if (t > mt) {
 myp.style.position = "fixed";
 myp.style.margin = "0";
 myp.style.top = "0";
 }
 else {
 myp.style.margin = "30px 0";
 myp.style.position = "static";
 }
 } 
 }

HTML:


 

 <p class="nav auto myp" id="myp" style="z-index:2;">
 <ul id="ulnav">
 <li><a href="#">首页</a></li>
 <li><a href="classes.html">班级设置</a></li>
 <li><a href="achievment.html" rel="nofollow" target="_blank">教学成果</a></li>
 <li><a href="techEnviroment.html" target="_blank">教学环境</a></li>
 <li><a href="specialCourse.html" target="_blank">特色课程</a></li>
 <li><a href="teacherTeam.html" target="_blank">教师团队</a></li>
 <li><a href="contact.html" target="_blank">联系方式</a></li>
 <li></li>
 </ul> 
 </p>

设置合适的CSS控制自己想要的样式。

相关推荐:

关于css中的position属性

css float 属性和position:absolute比较

css: list-style-position的使用与定义

下载本文
显示全文
专题