曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4283|回复: 0
打印 上一主题 下一主题

[CSS] position 定位

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2015-12-21 23:20:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在说 position 定位之前,需要先了解 html 是以一种流的方式依次的展现在你的面前的。比如下面的代码:
  1.   <html>
  2.   <head>
  3.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4.   <title>Position</title>

  5.   <style>
  6.         .groad { background-color:#97D0F9 }
  7.         .groad span {font-size:22px; color:#fff }
  8.         
  9.         .forum { background-color:#A8F3BC; height:80px; }
  10. </style>
  11.      </head>

  12. <body>

  13. <div class="groad">[url]www.groad.net[/url] <span>技术论坛</span></div>

  14. <div class="forum">曲径通幽</div>

  15. </body>
  16. </html>
复制代码

它呈现的效果是:


注意代码的书写顺序以效果的展现顺序。

但是在日常的使用中,我们经常遇到一些导航栏中的下拉菜单,只要鼠标移动到其上,下拉菜单就会自动出现,而这个下拉菜单是不会影响页面中的其它元素,这是怎么回事呢? 这个就和 postion 定位有关了,看下面逐步演示。

比较下面代码:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2.   <html>
  3.   <head>
  4.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5.   <title>Position</title>

  6.   <style>
  7.         .groad { background-color:#97D0F9 }
  8.         .groad span {font-size:22px; color:#fff }
  9.         
  10.         .forum { background-color:#A8F3BC; height:80px; position:relative; left:150px; }
  11.         
  12.         .css{background-color:#F3F8C1; color:blue; height:50px}
  13. </style>
  14.      </head>

  15. <body>

  16. <div class="groad">[url]www.groad.net[/url] <span>技术论坛</span></div>

  17. <div class="forum">曲径通幽</div>

  18. <div class="css">曲径通幽 CSS 版块</div>

  19. </body>
  20. </html>
复制代码


显示效果为:



上面代码中,forum 处已经使用了 postion 来定位,其值为 reletive (相对定位),该属性后面还得添加一项,告诉它的相对偏移位置(left:150px,向左偏移 150px )。那这里的相对偏移了 150px 是相对于哪个参照物来偏移的呢? 先不着急说,且看再加另外一个 top 偏移,相应的代码写成:
  1. .forum { background-color:#A8F3BC; height:80px; position:relative; left:150px; top:30px }
复制代码

看效果图:



我们可以将 top 值改得再大一点,比如 top:150px ,那么看到的效果是:



通过上面的比较,我们看到,相对偏移,实际上是元素相对于文档流中它原来的空间位置的偏移!像上面的例子里,经过改 top 后的位置移动,是相对于原来的空间位置,沿着 Y 轴向下移动的(当值为负数时,向上移动)。另外需要注意的是,它原来的空间位仍然保留着一片空白。

除了相对定位,还有绝对定位,下面来看看绝对定位是怎么说的。

要用绝对定位时, position 的值要改为 absolute ,此时效果变为:


当改为绝对定位时,对应这个 div 元素已经完全从文档流中剥离出来,而不再按照原先的代码书写顺序来展示 。这个就如同,当你上体育课时,体育委员是可以单独站出来的,而不是和其他同学一块排队的。

然而,不管是相对定位还是绝对定位,参照物必须有,那么绝对定位的参照物是什么呢? 在这里的情况是,参照的是 body 体来定位,这个可以通过修改 left, top 等值观察到。但实际应用中一般是不会参照 body 体(整个屏幕)来定位的,这是因为当使用不同的显示器,不同的分辨率时,这样的位置都会发生变化,所以不能这么做。那么这个问题该怎么办?

上面所演示的绝对定位,之所以参照 body 体,那是因为它在它的旁边,或者更远的地方没有找到一个“父” div 作为参照物。下面修改代码,看另一种情况:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2.   <html>
  3.   <head>
  4.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5.   <title>Position</title>

  6.   <style>
  7.         .groad { background-color:#97D0F9 }
  8.         .groad span {font-size:22px; color:#fff }
  9.         
  10.         .pa {  height:150px; width:600px; background-color:#E6B4F4; position:relative; top:80px }
  11.         .forum { background-color:#A8F3BC; height:80px; position:absolute; top:100px }
  12.         
  13.         .css { background-color:#F3F8C1; color:blue; height:50px; top:200px }
  14. </style>
  15.      </head>
  16.      
  17. <body>

  18. <div class="groad">www.groad.net <span>技术论坛</span></div>
  19. <div class="css">曲径通幽 CSS 版块</div>

  20. <div class="pa">
  21. <div class="forum">曲径通幽</div>
  22. </div>



  23. </body>
  24. </html>
复制代码

显示效果:

在上面代码中,forum 这个 div 被包含在 pa 这个 div 中,pa 是 forum 的父元素,且 pa 的 position 被设置为 relative。这样,forum 这个浅绿背景的小方块就有了参照物,尽管它是 absolute 的,但它会跟着 pa 的位置改变而改变(可以通过改变 pa 的 top 值来观察)。

有了这个技巧后,由于不再被强制以 body 体作为偏移的参照物,此时具有 absolute 属性的元素就可以在页面中任意走动了,以后再配合 js 脚本,那么就可以制作出任何的效果。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 10:15 , Processed in 0.088018 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表