CSS 定位
使用position属性给网页进行定位,position样式的取值有如下几种:
- static:默认值,没有定位或者叫静态定位。
- relative:相对定位
- absolute:绝对定位
- fixed:固定定位
一、static定位
<style type="text/css">
#big{ width: 600px; height: 400px; border: solid 1px red;}
#div1,#div2{ width: 500px; height: 100px; border: solid 1px red; margin: 10px;}
</style>
<div id="big">
<div id="div1">111</div>
<div id="div2">222</div>
</div>
我们可以看到div1和div2基本标准文档流自动定位,即div1在上,div2紧接着在下。两个div都被包含在big容器里面。
二、relative定位
relative定位:相对自身原来位置进行偏移;偏移位置通过top,bottom,left,right来进行设置。
<style type="text/css">
#big{ width: 600px; height: 400px; border: solid 1px red;}
#div1,#div2{ width: 500px; height: 100px; border: solid 1px red; margin: 10px;}
#div2{ position: relative; top: 100px; left: 100px;}
</style>
<div id="big">
<div id="div1">111</div>
<div id="div2">222</div>
</div>
我们可以看到DIV2在相对自身原来位置的基础上,向下偏移100PX,向右偏移100PX;相对定位仍然在标准文档流中。
三、absolute定位
绝对定位:相对于最近的一个“已经定位”的“祖先元素” 为基准进行偏移,这句话不好理解,我们看如下代码:
<head>
<meta charset="UTF-8">
<title>Position定位-absolute</title>
<style type="text/css">
#big{ width: 600px; height: 400px; border: solid 1px red; margin: 200px;}
#div1,#div2{ width: 500px; height: 100px; border: solid 1px red; margin: 10px;}
#div2{ position: absolute; left: 100px; top: 100px;}
</style>
</head>
<body>
<div id="big">
<div id="div1">111</div>
<div id="div2">222</div>
</div>
</body>
此时,DIV2并没有相对于big进行偏移,虽然big是div2的最近祖先元素,但是big没有定位,此时会继续寻找上一级已经定位的祖先元素,一直找下去,找到了则相对于这个祖先元素进行偏移,如果一直找不到,则相对于body元素进行偏移,所以在上述代码中DIV2相对于body元素进行了向下偏移100PX,向右偏移100PX。
在看如下代码,给big添加relative定位:
<head>
<meta charset="UTF-8">
<title>Position定位-absolute</title>
<style type="text/css">
#big{ width: 600px; height: 400px; border: solid 1px red; margin: 200px; position: relative;}
#div1,#div2{ width: 500px; height: 100px; border: solid 1px red; margin: 10px;}
#div2{ position: absolute; left: 100px; top: 100px;}
</style>
</head>
<body>
<div id="big">
<div id="div1">111</div>
<div id="div2">222</div>
</div>
</body>
此时由于DIV2的父级元素big有了定位,所以DIV2相对于big进行了向下偏移100PX,向右偏移100PX,为了实现子元素相对于父元素绝对定位,通常我们将父元素设置position:relative,而将子元素设置position:absolute。
绝对定位已经完全脱离了标准文档流。
四、fixed定位
固定定位:类似绝对定位,不过区别在于定位的基准不是祖先元素,而是浏览器窗口。所以只要固定定位,不管浏览器的滚动条如何滚动,该定位元素不会随着滚动条的滚动一起移动,而是一直静止在那里。
<style type="text/css">
#big{ width: 600px; height: 400px; border: solid 1px red;}
#div1,#div2{ width: 500px; height: 100px; border: solid 1px red; margin: 10px;}
#div2{ width: 200px; height: 300px; background-color: green;
position: fixed; top: 100px; right: 10px;}
</style>
<div id="big">
<div id="div1">111</div>
<div id="div2">222</div>
</div>
我们可以看到DIV2相对于浏览器上方向下偏移100PX,相对于浏览器右边向左偏移10PX;如果网页内容很长,不管浏览器滚动条如何滚动,DIV2的位置不会受到滚动条滚动的影响。
固定定位已经完全脱离了标准文档流。
五、z-index
z-index:调整元素定位时重叠层的上下位置,默认值为0
<style type="text/css">
#div1{ position: absolute; top: 150px; left: 150px; z-index: 2; opacity: 0.5;}
#div2{position: absolute; top: 300px; left: 300px; z-index: 1;}
</style>
<div id="div1">
<img src="img/zjl.jpg" width="300" height="300" />
</div>
<div id="div2">
<img src="img/fbb.jpg" width="300" height="300">
</div>
我们可以看到DIV1覆盖在DIV2的上面。
本文来自博客园,作者:码农阿亮,转载请注明原文链接:https://www.cnblogs.com/wml-it/p/16077621.html
技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
开源库地址,欢迎点亮:
GitHub:https://github.com/ITMingliang
Gitee: https://gitee.com/mingliang_it
GitLab: https://gitlab.com/ITMingliang
建群声明: 本着技术在于分享,方便大家交流学习的初心,特此建立【编程内功修炼交流群】,为大家答疑解惑。热烈欢迎各位爱交流学习的程序员进群,也希望进群的大佬能不吝分享自己遇到的技术问题和学习心得!进群方式:扫码关注公众号,后台回复【进群】。