HTML定位方式

static(默认)

当你没有为一个元素(例如div)指定定位方式时,默认为static,也就是按照文档的流式(flow)定位,将元素放到一个合适的地方。所以在不同的分辨率下,采用流式定位能很好的自适应,取得相对较好的布局效果。

一般来说,我们不需要指明当前元素的定位方式是static——因为这是默认的定位方式。除非你想覆盖从父元素继承来的定位系统。

left,top属性对static没有效果,static是靠margin这些定位的。

 

relative(相对定位)

在static的基础上,如果我想让一个元素在它本来的位置做一些调整(位移),我们可以将该元素定位设置为relative,同时指定相对位移(利用top,bottom,left,right)。

有一点需要注意的是,相对定位的元素仍然在文档流中,仍然占据着它本来占据的位置空间——虽然它现在已经不在本来的位置了。

 

absolute(绝对定位)

如果你想在一个文档(Document)中将一个元素放至指定位置,你可以使用absolute来定位,将该元素的position设置为absolute,同时使用top,bottom,left,right来定位。

如果没有父元素,位置是相对于body来进行的。

绝对定位会使元素从文档流中被删除,结果就是该元素原本占据的空间被其它元素所填充。

 

mix relative and absolute(混合相对定位和绝对定位)

如果对一个父元素设置relative,而对它的一个子元素设置absolute,如:

<div id="parent" style="position:relative">

 <div id="child" style="position:absolute">

 </div>

</div>
  1. 则子元素的绝对定位的参照物为父元素。
     

利用混合定位,我们可以用类似下面的css来实现两列(Two Column)定位

 

#div-parent {

position:relative;

}

#div-child-right {

position:absolute;

top:0;

right:0;

width:200px;

}

#div-child-left {

position:absolute;

top:0;

left:0;

width:200px;

}

 

fixed(固定定位)我们知道absolute定位的参照物是“上一个定位过的父元素(static不算)”,那么如果我想让一个元素定位的参照物总是整个文档(viewport),怎么办呢?

答案是使用fixed定位,fixed定位的参照物总是当前的文档。利用fixed定位,我们很容易让一个div定位在浏览器文档的左上,右上等方位。比如你想添加一个信息提示的div,并将该div固定在右上方,你可以使用以下css

 

element { position:fixed; top:2%; right:2%;}

float(浮动)

对于浮动,需要了解的是:

*浮动会将元素从文档流中删除,他的空间会被其它元素补上。

*浮动的参数物是父元素,是在父元素这个容器中飘。

*为了清除浮动造成的对浮动元素之后元素的影响,我们在浮动元素之后加一个div,并将这个div的clear设置为both

*如果两个元素都设置了浮动,则两个元素并不会重叠,第一个元素占据一定空间,第二个元素紧跟其后。如果不想让第二个元素紧跟其后,可以对第二个浮动的元素使用clear。

例子

<p style="border:1px solid red;">段落一</p>
<p style="border:1px solid green;">段落二</p>
<p style="border:1px solid blue; width:200px;">段落三</p>
<span style="border:1px solid red;">Span1</span>
<span style="border:1px solid green;">Span2</span>

浏览器中显示效果如下图:(外层淡蓝色为浏览器的边框,即本例中 <p> 和 <span>的父容器边框)

如果要让元素们同处一行,就把它们的 display 样式属性设置为inline

我们还有更好的办法​

把上面例子中的代码修改一下,在每个 <p> 标签的样式中都插入 float: left :

<p style="border:1px solid red;float:left;">段落一</p>
<p style="border:1px solid green;float:left;">段落二</p>
<p style="border:1px solid blue; width:200px;float:left;">段落三</p>

结果变成这样: 

 

总结:

 

position属性值说明
absolut生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
relative生成相对定位的元素,相对于其正常位置进行定位。因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。
fixed生成绝对定位的元素,相对于浏览器窗口进行定位。
static默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
inherit规定应该从父元素继承 position 属性的值。

 

 

 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值