热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

position四个属性值的关系

我在以前的公司,并不怎么用position这个属性,只是在写一些特殊效果的时候才用绝对定位。这就导致我对这个属性很不理解。今天有空,百度学习了一下。留下下面的文字position的四个属性值:r

我在以前的公司,并不怎么用position这个属性,只是在写一些特殊效果的时候才用绝对定位。这就导致我对这个属性很不理解。今天有空,百度学习了一下。留下下面的文字

position的四个属性值: relative ,absolute ,fixed,static (画外音:inherit其实也是,不过今天不怎么说他~)

写个小小的页面:

<html>
<head>
<style>
#parent
{}
#div1
{border:1px red solid; width:200px; height:100px}
#div2
{border:1px blue solid; width:200px; height:100px}
style>
/head>
<body>
<div id="parent">
<div id="div1">div1div>
<div id="div2">div2div>
div>
body>
html>

这是原始页面的样子:

1、relative

这个值比较简单,它的偏移是相对自己来进行的。意思就是,div1如果设置了relative值,那么,它的偏移,就会根据top,right,bottom,left的值以它原来的位置为基准偏移,而不管其他元素会怎么样。

不信?试试看。

注意:例子中2个div是同级关系哦~~

#div1{border:1px red solid; width:200px; height:100px;position: relative;  top: 15px; left: 25px;}

div1的样式改成这样。div2不动。那么,页面的样子变成下面

好啦。看到了吧~如果不设置relative时div应该在哪里就在哪里,一旦设置后就按照它理应在的位置进行偏移。

div2呢?它还在原来的位置,如果你给他设置relative,那么他也会偏移。

最后说一句:relative的偏移是基于对象的margin的左上侧的。就是说,如果你设置了margin,那么偏移的时候会加上的。


2、absolute

css手册是这样说的:“生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

但是他究竟是根据谁来偏移的呢?

这里有2种状况,用div1来说明:
1、如果div1父容器(id='parent'的div)没有设置position属性,那么div1的偏移是以body为依据的。比如这样(下面去掉了div2,方便看清楚):

<html>
<head>
<style>
body
{ margin:50;border:1px green solid; height:200px;}
#parent
{}
#div1
{border:1px red solid; width:200px; height:100px;position:absolute; top: 15px; left: 25px; }
style>
head>
<body>
<div id="parent">
<div id="div1">div1div>
div>
body>
html>

这样的效果如下:

看到了吧。div1是以body为基准偏移的。

2、如果div1的父容器设置了position属性,并且position的属性值为absolute 或者relative,那么div1就会依据父容器进行偏移。比如这样:

<html>
<head>
<style>
body
{ margin:10px;border:1px green solid; height:500px;}
#parent
{position:absolute; border:1px black solid; width:400px; height:200px; margin:20px;}
#div1
{border:1px red solid; width:200px; height:100px;position:absolute; top: 15px; left: 25px; }
style>
head>
<body>
<div id="parent">
<div id="div1">div1div>
div>
body>
html>

最终效果如下:

需要注意的是:如果parent设定了margin,border,padding等属性,那么这个定位点将忽略padding,将会从padding开始的地方(即只从padding的左上角开始)进行定位,这与我们会想当然的以为会以margin的左上端开始定位的想法是不同的。

 

那么放两个div在父容器里面呢?比如这样:

<html>
<head>
<style>
body
{ margin:10px;border:1px green solid; height:500px;}
#parent
{position:absolute; border:1px black solid; width:400px; height:200px; margin:20px;}
#div1
{border:1px red solid; width:200px; height:100px;position:absolute; top: 15px; left: 25px; }
#div2
{border:1px blue solid; width:200px; height:100px; }
style>
head>
<body>
<div id="parent">
<div id="div1">div1div>
<div id="div2">div2div>
div>
body>
html>

效果如下:

div1设置了position属性,导致它浮动起来了。div2就占据了原来div1应该在的位置~

3、fixed

这个好理解,它总是以body为依据的。

<html>
<head>
<style>
body
{ margin:10px;border:1px green solid; height:300px;}
#parent
{position:absolute; border:1px black solid; width:400px; height:200px; margin:20px;}
#div1
{border:1px red solid; width:200px; height:100px;position:fixed; top: 15px; left: 25px; }
style>
head>
<body>
<div id="parent">parent
<div id="div1">div1div>
div>
body>
html>

效果如下:

4、static

这其实是position的默认值。。。

好吧好吧。还有一个inherit,其实那意味着继承父容器的position 属性的值,可以自己试试看~~~这里不贴了。


推荐阅读
  • 很有意思的全景动画:(直接上代码)html部分:<div><div>css部分:.panorama{width:300px;hei ... [详细]
  • 在DIV内垂直居中UL - Centering Vertically an UL inside a DIV
    iamtryingtomakeanavigationmenuinsidea200pxx200pxsquare,thisnavigationlist(UL)chang ... [详细]
  • 本文详细介绍了如何利用CSS技术对链接下划线进行个性化定制和美化,涵盖了多种实用技巧和方法。通过对CSS属性的灵活运用,可以实现不同风格的下划线效果,提升网页的视觉体验。文中不仅提供了基础的代码示例,还结合实际案例进行了深入解析,帮助读者更好地理解和应用这些技巧。此外,文章还引用了《CSS2.0中文手册》中的相关内容,增加了技术的权威性和实用性。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 前端实用的CSS3技巧有哪些
    本文小编为大家详细介绍“前端实用的CSS3技巧有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“前端实用的CSS3技巧有哪些”文章能帮助大家 ... [详细]
  • 1、给边框加上圆角及阴影,如下代码:<!DOCTYPEhtmlPUBLIC"-W3CDTDHTML4.01TransitionalEN"" ... [详细]
  • http:js.alixixi.coma2014021292298.shtmlhttp:w3cshare.comexample?pid134http:w3cshare.comc ... [详细]
  • 小编给大家分享一下CSS3如何实现loading预加载动画特效,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章 ... [详细]
  • Ihaveafixed,100%heightmenuontheleftandIneedtocreateashadoweffectonitsrightside ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • 本文主要探讨了Java中处理ActionEvent事件的接口,以及一些常见的编程问题和解决方案,包括方法重载、成员变量访问、镜片质量检测等。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
author-avatar
利盈香玟倩文怡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有