网页布局绝对定位(position)轻松简单

2016-02-19 23:44 30 1 收藏

今天图老师小编给大家精心推荐个网页布局绝对定位(position)轻松简单教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

【 tulaoshi.com - Web开发 】

使用CSS来定位页面内层的位置,一直是比较难以掌握的事情,很多时候,往往被绝对定位的元素,总是以浏览器的左上角为坐标原点,此时,如果浏览器的大小改变,被定义的层就会偏离设计想要的位置,让人很挠头。

其实,要想控制好层的绝对定位,只要理解CSS中关于定位(position)的定义,一切就会变得轻松简单。

CSS中关于定位(position)是这样定义的:

定位(position)允许用户精确定义元素框出现的相对位置,可以相对于它通常出现的位置,相对于其上级元素,相对于另一个元素,或者相对于浏览器视窗本身。每个显示元素都可以用定位的方法来描述,而其位置由此元素的包含块来决定的。

包含块(containing block)是格式编排发生的关联场景,例如,一个加粗的元素的包含块可以是该元素所出现的段落,如图1所示。

在理解定位之前,首先,要先理解HTML文件的结构,例如有一个html文件内容如下:

htmlheadmeta http-equiv="Content-Type" content="text/html; charset=gb2312" /title文档结构/title/headbodyh1CSS规则/h1p样式表由一些strong样式规则/strong组成。/pul  li选择符ul  li类选择符/li  liID选择符/li  liem包含/em选择符/li/ul  /li  li属性/li  li值/li/ul/ul/body/html

此文档对应的树型结构,如图2所示。

CSS大部分能力是基于元素的父子关系,在图2的家族树中,每个元素都是另一个元素的父或者子或者2者都是。例如:body既是html的子元素,又是h1的父元素,而html就是h1的祖先,h1则是html的子孙。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

Body是所有浏览器能显示的元素的祖先,而html是所有元素的祖先,也称为根元素。

那为什么定位了的元素还总是以浏览器窗口的左上角为坐标呢?因为并不是每个元素都能为其后辈元素生成一个包含块。

建立包含块的规则如下:

根元素的包含块(也叫初始包含块)由用户代理生成,在HTML中,根元素是HTML元素,尽管有的浏览器会不正确地使用body元素。 对于那些未绝对定位的非根元素来说,元素的包含块设置为最近的块级祖先元素的内容区边沿。 对那些使用绝对(absolute)作为定位(postition)的非根元素,包含块设为最近的定位(postition)不是静止(static)的祖先元素(任何类型)。有以下几种情况:
a.  如果祖先元素是块级(block)元素,包含块设为祖先元素的填充(padding)边沿,也就是被边框(border)约束的区域
b.  如果祖先元素是内联(inline)元素,包含块设为祖先元素的内容边沿。因此,绝对定位的元素往往以浏览器可视区域的左上为坐标原点来进行定位了。

在CSS中可是使用position属性来在不同的定位类型中选择。

语法:
position : static | absolute | fixed | relative | inherit

其各参数含义是:
static : 静态(默认),无特殊定位。
relative : 相对,对象不可层叠,但将依据left,right,top,bottom等属性在正常文档流中偏移位置
absolute : 绝对,将对象从文档流中拖出,通过width、height、left,right,top,bottom等属性与margin、padding、border进行绝对定位,绝对定位的元素可以有边界,但这些边界不压缩。而其层叠通过z-index属性定义。
fixed : 悬浮,使元素固定在屏幕的某个位置,其包含块是可视区域本身,因此它不随滚动条的滚动而滚动。(IE5.5+不支持此属性。)
inherit : 这个值从其上级元素继承得到。

示例:

div {position: absolute;bottom: 1in;left: 1in;right: 1in;top: 1in;}div {position:relative;top:-3px;left:6px;}

既然了解了包含块的概念,那么对于相对定位和绝对定位的关系,就很好掌握了。

例如,现在需要把页面内容整体居中,然后再将其中某些层绝对定位的话,那就要把最外面的层设置定位属性。

bodydiv id="box"  div id="nav"p每个显示元素都可以用定位的方法来描述,而其位置由此元素的strong包含块/strong来决定的。/p  /div/div/body

此时,如果你要对nav绝对定位,则需设置css:

body {margin:0;padding:0;text-align:center;}#box{background:#ff0;position:relative; /* 使box层成为其子孙元素的包含块 */width:500px;height:200px;margin:0 auto;}#nav {background:#ccc;position:absolute; /* nav层将在box层的边框范围内绝对定位 */top:20px;left:40px;width:200px;}

其显示效果如图3所示。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

因此,掌握了包含块的概念,定位就变得不那么困难了。

来源:http://www.tulaoshi.com/n/20160219/1630506.html

延伸阅读
标签: Web开发
定位     CSS的定位功能是很强大的,利用它你可以做出各种各样的网页布局。本节就介绍一些CSS常用的定位语句。 1. 相对定位(relative) 相对定位是指相对它本来应该处的位置所做的移动。 style type="text/css" .dingwei{ position:relative; left:50px;} /style p我是一段正常的文本/p p class="dingwei...
标签: Web开发
1. position:static 所有元素的默认定位都是:position:static,这意味着元素没有被定位,而且在文档中出现在它应该在的位置。 一般来说,不用指定 position:static,除非想要覆盖之前设置的定位。 #div-1 { position:static;} 2. position:relative 如果设定 position:relative,就可以使用 top,bottom,left 和 right 来相对于元素在文...
标签: Web开发
使用CSS来定位页面内层的位置,一直是比较难以掌握的事情,很多时候,往往被绝对定位的元素,总是以浏览器的左上角为坐标原点,此时,如果浏览器的大小改变,被定义的层就会偏离设计想要的位置,让人很挠头。 其实,要想控制好层的绝对定位,只要理解CSS中关于定位(position)的定义,一切就会变得轻松简单。 CSS中关于定位...
标签: Web开发
在CSS中,实现分栏布局有两种方法。第一种方法是使用四种CSS定位选项(absolute 、static、relative和fixed)中的绝对定位(absolute positioning),它可以将文档中的某个元素从其原本位置上移除,并重新定位在期望的任何地点之上。第二种则是使用CSS中的浮动(float)概念。 绝对定位或浮动都能够用来实现分栏效果。二者可以独立使用,也可以结...
英文原文:http://brainjar.com/css/positioning/default.asp 翻译:零度,转载请注明本文英文原文出处以及本文地址!由于我英文水平有限,有不懂的地方还请阅读原文,欢迎交流! 相对定位 当一个元素被指明为{position:relative;}的时候,它开始是遵守正常流规则的(也就是说,如果你不给他任何规则,他就和正常的一样,译者注)...

经验教程

383

收藏

54
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部