css下position属性详解

写过CSS的人都免不了与position属性打交道,但是要真正理解position属性还不是一个很容易的事。前两天博主想在一个html页面上实现一个<div>元素重叠在另一个<div>元素上,并且位于该<div>元素的右下角的效果。在网上搜到他人的解决方法,并且也实现了,这里面最关键的就是利用position属性以及left、right、top、bottom等属性。为了更为透彻地理解背后原理,博主在网上搜了相关的资料,总算是有了一些认识,或许也只是一知半解,不过先写下来供大家分享。

在html中有块元素和行元素之分。块元素诸如div、p等,其中的子元素会按垂直方向排列,这些元素显示为一块内容;与之相反,span、strong等等元素被称为行内元素,他们的内容显示在行中,即横向扩展。

凡是写在HTML中的元素都会被加载到文档流中,简单的说文档流就相当于一个容器,HTML中的所有元素都是按照从上到下,从左到右的顺序被加载到文档流中,然后在渲染网页的时候,再根据文档流中的顺序将元素一个一个显示在网页中。所以在文档流中的元素都是根据相对位置来进行绘制的。不过并不是所有的元素都会被放入到文档流中,比如position为absolute、fixed等等情况时。

那么现在就正式来讲position属性。position属性共有4个值,分别是relative、absolute、fixed和static:

        static:这是position的默认值,static元素会出现在正常的文档流中,并且按照磨人的规则绘制;

        relative:position为relative的元素依然会出现在文档流中,设置为relative的元素同时是希望在正常的显示位置的基础上进行一些微 调。例如“left:20px”的意思就是在正常显示位置的基础上左边缩进20像素;

        absolute:position为absolute的元素会从文档流中删除,absolute元素的绘制不再以正常位置进行显示,而是以其第一个position不为static的父元素为定位范围,再根据left、right等等属性进行定位。

        fixed:position为fixed的元素的定位规则更absolute类似,只是fixed元素的定位范围不再是父元素而是整个窗口。所以设置为fixed的元素在用户滚动浏览网页时,其相对于浏览器窗口的位置也不会改变。

好了,基本的定义解释清楚了,现在就结合博主自己的实践来谈谈具体的使用,博主想要实现的效果如下:

即一张图片的右下角有一个按钮。根据上文讲解到的知识,这里应该有两个div元素,其中一个为另一个的父元素:

<div class="background_img" >
    <img src="***" />
    <div class="btn"><input type="button" /></div>
</div>

既然class为btn的<div>要相对于父元素定位,所以其position为absolute,同时再通过bottom和right来设置位置:

div.btn{
position:absolute;
right:10px;
bottom:10px;
}

而对于class为background_img的<div>元素来说,其position元素不能为默认的static,所以设置为relative即可:

div.background_img
{
position:relative;
}

就这么几行,这个效果就实现了,各位读者可以自己试一下。

时间: 2024-10-24 22:51:24

css下position属性详解的相关文章

CSS背景定位属性详解

你对CSS中background-position属性的使用是否了解,这里和大家分享一下,该属性定位不受对象的补丁属性(padding)设置影响.默认值为:0%0%,此时背景图片将被定位于对象不包括补丁(padding)的内容区域的左上角. CSS中background-position属性说明 设置或检索对象的背景图像位置.必须先指定background-image属性.该属性定位不受对象的补丁属性(padding)设置影响.默认值为:0%0%.此时背景图片将被定位于对象不包括补丁(paddi

css的字体属性详解

  font-style: inherit:继承 italic:斜体 normal:正常 oblique:偏斜体 font-size: xx-small: 取所有相对大小取值中最小的; x-small:仅大于xx-small的字体 small:默认的小字体 medium:默认值 large:默认的大字体 x-large:仅小于xx-large xx-large:最大的字体 text-decoration: inherit: 继承 none:无文本修饰,缺省设置 underline:下划线 ove

鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解

 这篇文章主要介绍了鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解,需要的朋友可以参考下     screenY 鼠标相对于显示器屏幕左上角的偏移 pageY 鼠标相对于页面左上角的偏移 (其值不会受滚动条的影响) IE9之下并不支持这个属性 但是可以写点代码计算出来. jQuery中的实现:   代码如下: // Calculate pageX/Y if missing and clientX/Y available if ( event.pageX

BGP属性详解:AS-path--属性

在IGP时代我们都知道,比如说ospf,链路状态协议,在进行路由选择的时候,比的是链路的耗费,哪条链路耗费小则会更优先,如果两个链路耗费是一样的,那么就做负载均衡. 实际上就2个原则成就了ospf---最短路径优先的工作原理. 那如果在BGP中,有多条路由可以到达目的的时候,应当如何进行选择呢?哪一条路径是比较优先的呢? 来看看这11个属性的优先级,加深记忆,最好能熟练的背下来: 1 HIGHEST WEIGHT--cisco私有属性 2 HIGHEST LOCAL PRERENCE -----

BGP属性详解:Next-hop

在IGP时代我们都知道,比如说ospf,链路状态协议,在进行路由选择的时候,比的是链路的耗费,哪条链路耗费小则会更优先,如果两个链路耗费是一样的,那么就做负载均衡. 实际上就2个原则成就了ospf---最短路径优先的工作原理. 那如果在BGP中,有多条路由可以到达目的的时候,应当如何进行选择呢?哪一条路径是比较优先的呢? 来看看这11个属性的优先级,加深记忆,最好能熟练的背下来: 1 HIGHEST WEIGHT--cisco私有属性 2 HIGHEST LOCAL PRERENCE -----

BGP属性详解:Local_Pref

在IGP时代我们都知道,比如说ospf,链路状态协议,在进行路由选择的时候,比的是链路的耗费,哪条链路耗费小则会更优先,如果两个链路耗费是一样的,那么就做负载均衡. 实际上就2个原则成就了ospf---最短路径优先的工作原理. 那如果在BGP中,有多条路由可以到达目的的时候,应当如何进行选择呢?哪一条路径是比较优先的呢? 来看看这11个属性的优先级,加深记忆,最好能熟练的背下来: 1 HIGHEST WEIGHT--cisco私有属性 2 HIGHEST LOCAL PRERENCE -----

CSS的position属性在DIV层中的应用

定位的话,父DIV设置position:relative后,子DIV的position:absolute就会相对父DIV作绝对定位,接下来为大家介绍下CSS的position属性在DIV层中的应用   原来只明白position:relative是相对定位,position:absolute 是绝对定位: 经常看到图片轮播的下方有个半透明背景的文字描述.我现在要做这样一个效果,因为不是轮播,所以没去找插件,想自己写. 半透明背景可以设置属性background: rgba(0, 0, 0, 0.

Windows下搭建Mantis详解

Windows下搭建Mantis详解 下边是在Windows下搭建Mantis的详细过程,太长了,只能分开发上来,不过我会附一个pdf的文件上来,需要的可以下载. 搭建环境:        apache_2.2.13-win32-x86-no_ssl.msi        php-5.3.0-Win32-VC6-x86.zip        mysql-5.0.22-win32.zip        mantisbt-1.1.7.zip        辅助工具:        EMS(myman

JavaScript对Json的增删改属性详解_javascript技巧

使用JS对Json数据的处理,项目遇到需要对Json数据进行相关操作,比如增删改操作,本以为会比较难,网上搜索下,发现还是比较简单的,贴一段代码: <script type="text/javascript"> var json = { "age":24, "name":"cst" }; //修改Json中的age值,因为Json中存在age属性 json["age"] = 30; alert(