对css中的定位属性postion刨根解牛
定位的基本思想很简单:
它允许你定义元素框相对于其正常位置应该出现的位置(relative),或者相对于父元素(absolute)、另一个元素甚至浏览器窗口本身的位置(fixed)。显然,这个功能非常强大,也很让人吃惊。
一切皆为框:
div、h1 或 p 元素常常被称为块级元素。这意味着这些元素显示为一块内容,即“块框”。与之相反,span 和 strong 等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”。
CSS 定位机制
CSS 有三种基本的定位机制:普通流、浮动和绝对定位。
除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定。
块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。
行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响行内框的高度。由一行形成的水平框称为行框(Line Box),行框的高度总是足以容纳它包含的所有行内框。不过,设置行高可以增加这个框的高度。
以上介绍皆为铺垫,接下来才是真正的讲解postion这个属性
大家都知道postion属性有四个值,static fixed relative absolute,
今天我们就来剖析这四个值的特点,来揭开他们的神秘面纱:
1、static, 默认值,元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。
2、relative,元素框偏移某个距离,相对它在正常流中的位置,元素仍保持其未定位前的形状,它原本所占的空间仍保留。偏移量通过top/left/right/bottom/设置
3、absolute,元素框从文档流完全删除(自然其宽高对父元素毫无影响),并相对于postion值为relative其包含块偏移定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
4、fixed ,元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。
补充说明:
relative定位:
1、设置一个元素为相对定位后,如果不设置其偏移量(即 top|right|bottom|left值),则对于其本身而言,和没设相对定位,毫无区别和影响,但可能对子元素有影响(比如有绝对定位的子元素)
2、相对定位的元素偏移到其它地方,其宽度高度不会改变(原本width默认100%,还是100%,这是和absolute不一样的地方),不会挤压掉别的地方原本的元素,但会重叠,重叠的效果是,会覆盖掉未定位(即postion值为static)的元素,而不管其元素的html标签在相对定位元素的前面还是后面,对应定位元素,则是根据z-index属性值来,如果两个值相等,则比较html标签在文档中的先后。
3、设置相对定位元素的高度宽度会影响父元素的高度宽度(因为它的原来的坑还占着,原来的坑会随着元素的宽高改变大小)
absoute定位:
1、元素设置成绝对定位后,和父元素脱离关系(如果说有关系的话,就为设置偏移量前还在原来的位置,但不占地方,其坑会被后面的兄弟元素霸占,从而重叠),所以其大小变化对父元素毫无影响
2、元素绝对定位后都是块级元素(即使原本是行级元素如span),不过其宽度不设置的话将是内容的实际大小,不在是默认的父元素的宽度,这点和相对定位是有很大区别的
3、千万记住绝对定位元素是相对于,它的相对定位的父元素,如果父元素中没有相对定位的则是相对于body
最后介绍下 z-index属性,它只对定位元素(级postion不等于static)才有效
对css中的定位属性postion刨根解牛的更多相关文章
- 对css中的浮动属性float刨根解牛
1.浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 脱离常规流,由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样. 2.几张图说明浮动常 ...
- css中的定位属性position(转)
css中的定位属性position 同样的也是上课的时候发现学生难以理解的一些问题拿出来记录一下,希望帮助初学者. 在css中定位属性position的运用在页面中是很常用的,特别是一些结合js来 ...
- css中的定位属性
- 总结一下CSS中的定位 Position 属性
在CSS中,Position 属性经常会用到,主要是绝对定位和相对定位,简单的使用都没有问题,尤其嵌套起来,就会有些混乱,今记录总结一下,防止久而忘之. CSS position 属性值: absol ...
- [转]总结一下CSS中的定位 Position 属性
在CSS中,Position 属性经常会用到,主要是绝对定位和相对定位,简单的使用都没有问题,尤其嵌套起来,就会有些混乱,今记录总结一下,防止久而忘之. CSS position 属性值: absol ...
- CSS 中关于background 属性功能
background 是 css中的核心属性,我们对他应该充分了解. background-image 定义背景图像 这个属性是我们用的最多的属性 设置背景图像有两个方式 background: ...
- Css中的Position属性
Css中的Position属性 Css属性在线查询地址: http://www.css88.com/book/css/properties/index.htm CSS 中的 position 属性 在 ...
- css中background背景属性概
css中background背景属性概 background:url(背景图片路径) no-repeat;/*不重复默认在左上方*/background:url(背景图片路径) no-repeat ...
- 理解与应用css中的display属性
理解与应用css中的display属性 display属性是我们在前端开发中常常使用的一个属性,其中,最常见的有: none block inline inline-block inherit 下面, ...
随机推荐
- 解决Deprecated: preg_replace(): The /e modifier is deprecated, use
使用php5.5运行ecshop的时候出现如下错误Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace ...
- codeforces 388B Fox and Minimal path
这个题目的突破口就是固定最短长度,然后以二进制的形式分层: 最后把需要的曾连起来: #include<cstdio> #include<cstring> #define max ...
- UVALive 3211 Now or later
每架飞机有早晚起降两种方式,给定n架飞机两种方式的起落时间,为每架飞机安排起落时间(早或晚),使得所有飞机起降时间按照早到晚的顺序之间的间隔时间最小值尽量大. 分析: 最小时间尽量大应该采用二分的方法 ...
- javaweb学习总结(二十八)——JSTL标签库之核心标签
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- 到底DAO是什么?为什么要有它的存在?
Data Access Object 数据访问接口,就是访问数据库方法的 interface 1. DAO用来封装Data Source的..就比如,Connection conn = DAOFa ...
- ANDROID_MARS学习笔记_S01原始版_019_SERVICE之Transact
一.代码1.xml(1)activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/ ...
- ANDROID_MARS学习笔记_S01原始版_014_WIFI
一.代码1.xml(1)main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...
- 电脑是如何识别USB 3.0 U盘的
USB 3.0电缆如图1所示. 图1 USB 3.0的接口比USB 2.0接口多了5根线,这5根线分别是Shield.SSRX+/-和SSTX+/-,即是屏蔽地.超速发送差分对和接受差分对. 因此一个 ...
- MySQL 5.6数据库配置主从同步
win7环境下mysql主从搭建 我下载的是压缩包,免安装的那种 1.简单安装 解压后把my-default.ini复制一份改为my.ini默认mysql会找这个文件,首先从system32下找,然后 ...
- Android List去掉重复数据
今天用数据库获取数据发现有个字段的数据重复了,于是就写了下面这个方法去除重复的数据. public static List<String> removeDuplicate(List< ...