position定位——让人又爱又恨的属性

关于css中的position这个属性,在使用的时候,有时很强大,有时又让人很无奈。

强大的时候,对于div中的一些小物件不方便使用margin或者padding的时候,给与position:absolute;再配备left、right、top和bottom,基本上就是想放哪里放哪里了。

让人无奈的时候,就是我们一旦滥用了position这个定位属性,就会让自己的布局飞的满天是,又因为z-index没有设定好,基本上,整体的布局就会让你手足无措,找原因的话,又非常麻烦,最后,恐怕只能推倒重做了。

所以,对待position这个属性,我们要详细的了解到它运行的原理,以及应用的场景,这样,我们才可以在想用的时候完美的驱使它来完成我们想要的效果。

废话不多说,直接上步骤,先说position的概念吧

position,我们百度一下,就知道这个单词的意思是方位,在css中,就是定位的意思,属性名字是 position,属性值有五个,分别是 static(默认定位)、absolute(绝对定位)、relative(相对定位)、fixed(固定定位)、inherit(继承定位,不常用)

书写规则:

position:static|absolute|relative|fixed|inherit

 

每个属性值都介绍一下吧 

      1、position:static(默认定位)

      顾名思义,就是我们平常书写的时候,每个div在文档流中默认的排版,就是static属性值,它不会让div或者其他元素脱离文档流,而是遵循排版的原则,从上到下,块级元素换行,行内元素不换行等等通用原则,所以,如果不用定位属性,那么这个position就不用设置。

      2、position:relative(相对定位)

      相对定位,就是相对于自己本身进行定为移动,它不会脱离文档流,也就是说,我给一个元素设定了这个属性,那么这个文件还会在这个文档流中来回移动,至于怎么移动,下面再讲。

      3、position:absolute(绝对定位)

      跟相对定位不同,它是相对于拥有相对定位属性父元素进行定位移动,它会脱离文档流。

      如果父元素中的所有子元素都设置了absolute,那么所有的子元素都会浮起来,然后堆叠到一块儿,所以为了把各个元素摊开显示,我们需要移动这些元素,而移动这些元素的方法,就是直接是style样式表中书写:left、right、top、bottom四个属性,然后在属性的后面写上px(像素)、%(百分比)等可以表示距离的单位。

  在这里,我们要特别强调,left和right不能同时使用,top和bottom不能同时使用。

  并且,这四个元素,都是相对于拥有相对定位(relative)属性的父元素进行移动的。如果父元素没有相对定位,那么绝对定位就是相对于body进行定位的。

  所以,为了不让自己设置的元素跑飞了,那就记得给父元素设置relative吧。

  4、fixed(固定定位)

  这个定位是相对于浏览器窗口进行的定位,移动方法跟相对和绝对定位一样的。

  它也会脱离文案流,我们常见的侧边栏或者广告图就是用这个功能实现的。很实用,很强大的功能。

  5、inherit(继承定位),就是从父元素继承position定位属性,不怎么常用。

 

  讲到这里,我们就涉及到一个z-index (层级)的问题。刚才我们讲过,如果给子元素全部设置了absolute,那么所有的子元素就会堆叠在一起,互相遮盖。

  如果我们需要在一个元素上堆叠好多层,那怎么给它们排序呢。这就需要用到z-index属性了。

  z-index属性的属性值是数字。数字越大,那么它就显示的最考上,比如说吧,

  z-index=0 的元素就会再 z-index=1的下面显示,z-index=10会再z-index=8上面显示,所以,堆叠它们的显示顺序,设置z-index就可以了。

  当然,如果不设置z-index的话,默认的,后面的元素会遮盖前面的元素。

 

  使用时需注意的问题:

  1、float属性不可以和position属性共用,切记!

  2、使用absolute时记得给父元素加relative

  3、除了用left和top外,还有right和bottom,活学活用

  4、能不用position就不用position,毕竟容易把布局搞乱

  5、Javascript中调用position的方法是:div.style.positio=”absolute”类似 div是变量名

 

  上面只是简单的讲了一下position的基本东西,如果你在这里面没有了解到你想要的答案,你可以在下面给我留言,我会积极回复的。

  最后,积极交流,共同进步!

转载于:https://www.cnblogs.com/lianshouluguo/p/5851168.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 6.8安装Python2.7.13

转载自:http://www.cnblogs.com/94YY/p/6224441.html查看当前系统中的 Python 版本python --version返回 Python 2.6.6 为正常。检查 CentOS 版本cat /etc/redhat-release返回 CentOS release 6.8 (Final) 为正常。安装所有的开发工具包yum groupinstall -y "D…

新安装数据库sqlserver2008r2,使用javaweb连接不上问题处理

鼠标右键【计算机】--》【管理】,打开界面如下: 选择自己数据库的实例名: 选择TCP/IP:右键【属性】,将所有TCP动态端口的【0】删掉,TCP端口设为1433;重启服务,即可连接。PS:不知道这…

vue 鼠标点击事件_VBA代码解决方案第115讲:点击鼠标实现精准控制触发事件的VBA代码第二方案...

大家好,我们今日继续讲解VBA代码解决方案的第115讲内容:工作表事件中,根据Target参数不同,实现精准控制触发事件的VBA代码第二方案。在上一讲中我们讲了利用Address的属性实现控制触发事件的方案,今日讲解第二方案&…

mysql注入5.0以上_[Injection]对MYSQL 5.0服务器以上版本注入

How to do a SQL Injection for MYSQL Server 5.01. Find a vulnerable add a ‘ at the end of the site example: news.php?id1 add a ‘ at the end of the 1 and see if you get a syntax error2. order by #–Keep upping the # until you get an error.3. union all sel…

动态规划(制表法)模板及应用

int cache[100][100] 初始化为全体为 -1,这样在 cache 中存储的可以是其他任意非负整数,也可以是布尔类型 0/1 (true/false),1. 模板 int cache[2500][2500];// 初始化为 -1,memset(cache, -1, sizeof(cach…

(翻译)31天Windows Phone学习-1-项目模板

今天在在外文网站Google关于Windows Phone 7的学习资料,无疑间Google到了Jeff Blankenburg的 31 Days of Windows Phone这个系列,感觉写的比较基础和浅显易懂,适合我这种入们级的人学习,所以准备拿来对Windows Phone 7的简单入门学…

Mssql 跨域查询

有数据库test1和数据库test2。其中test1中有表 table1、table2;test2 中有表 table1。三个表的字段都为为:id、xingming、shijian、shuliang。接下来我们就以上面的条件为例来介绍跨数据库查询和跨表 查询的方法。 SELECT * FROM OPENROWSET(sqloledb…

arch mysql日志位置_MySQL 日志文件与相关参数

1 、参数文件及mysql参数查看mysql 的 my.cnf 配置文件位置命令:>./bin/mysql --help | grep my.cnf查看mysql 的参数设置命令: mysql > show variables --显示所有参数; // show variables like log_error% 显示某匹配参数mysql > select se…

MOSS点滴(2):自定义Application Page

在MOSS中后台管理的页面都是Application Page,比如网站设置的页面(settings.aspx)就是典型的Application Page,它不能被Sharepoint Desiger定制。如果我们要修改只能手动的使用其他工具来修改,我们也可以添加Application Page,必须…

wpf使用webbrowser时提示当前页面脚本发生错误_win7系统internet脚本错误的应对办法...

最近有win7系统用户反馈,上网时遇到ie浏览器总会提示internet脚本错误的问题,不知如何解决,为此非常苦恼,那么win7系统提示internet脚本错误怎么办呢?就此问题,下面小编教你win7系统internet脚本错误的应对办法。有不…

JDK的目录结构及结构图

-bin目录: JDK开发工具的可执行文件 -lib目录: 开发工具使用的归档包文件 -jre: Java 运行时环境的根目录,包含Java虚拟机,运行时的类包和Java应用启动器, 但不包含开发环境中的开发工具 -demo: 含有源代码的程序示例 -include: 包含…

java9-1.类,抽象类,接口的综合小练习

1 /*2 教练和运动员案例(学生分析然后讲解)3 乒乓球运动员和篮球运动员。4 乒乓球教练和篮球教练。5 为了出国交流,跟乒乓球相关的人员都需要学习英语。6 请用所学知识:7 分析,这个案例中有哪些抽象类,哪些接…

java发送c语言结构体_C语言中结构体直接赋值?

在C语言中结构体变量之间可以进行赋值操作吗?简单结构体的赋值先说结论:一般来说,C语言中的结构体变量可以用另一个变量对其进行赋值或初始化。简单结构体(不包含指针成员)直接赋值没有问题。我们先下面一段代码:#include #includ…

Cacti 使用安装详解-企业级实例

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还…

MySQL 插入数据时,中文乱码???问题的解决

在终端,mysql -u root -p 登录; show variables like character%; 来查看当前数据库的相关编码集。 client为客户端使用的字符集。connection为连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型则按照服务器端默认的字…

mysql时间间隔interval_MySQL DATEDIFF函数获取两个日期的时间间隔的方法

描述返回两个日期之间的时间间隔。语法DateDiff(interval, date1, date2 [ ,firstdayofweek[ , firstweekofyear]] )DateDiff 函数的语法有以下参数:参数描述interval必选。字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔。有关数值&#xff…

linux教程:配置Tomcat开机启动

我们在linux下安装好tomcat之后;经常是需要配置到开机启动的; 这样的话就不需要我们每次重启linux服务器之后自己在登陆运行startup.sh文件启动tomcat了 本次的演示环境是在centos7中完成的;也在centos6.5中测试过;理论上所有版本…

操作系统内存分配算法_操作系统基础45-伙伴系统和slab内存分配

当在用户模式下运行进程请求额外内存时,从内核维护的空闲页帧列表上分配页面。这个列表通常使用页面置换算法来填充,如前所述,它很可能包含散布在物理内存中的空闲页面。也要记住,如果用户进程请求单个字节内存,那么就…

Sublime Text 3新建工程

1. 创建工程 Project > Add Folder to Project 这时在sidebar中将出现刚刚添加的文件目录,如果还需要添加其他目录,则重复这一操作即可。 2. 保存工程 Project > Save Project As 点击保存后Sublime Text将自动生成两个文件: 如图&…

钟国晨 160809323

助教老师好,我是计科三班钟国晨,我对我们专业并不是很了解,至少从目前来看是这样,不过虽然感觉我们专业内容比较复杂,我还是对我们所学的知识挺感兴趣的,我性格比较开朗,希望以后能和老师您多多…