css position 小记

在之前的面试中被问过这个问题好几遍,每次回答的都不尽人意 这次好好整理下 记录下来

首先position提供一些属性来让我们实现定位的功能,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置

 position的属性值,

static:默认值 元素出现在正常的流中,块级元素会生成一个矩形框,行内元素会生成一个或多个行框,置于其父元素中

inherit:规定从父元素继承父元素的position的值

fixed:生成绝对定位的元素,相对于浏览器进行定位窗口进行定位,这个属性的表型与absolute类似 只不过它的包含块是浏览器窗口本身,它也脱离了原来的文档流的布局,以相对于浏览器窗口的位置进行定位(表现是这个元素的位置相对于浏览器窗口的位置不变,即使你移动了滚动条)

relative:生成相对定位的元素,这个是相对于正常的位置进行定位的,元素仍然保持它未定位前的形状,即它原来是block level的仍然是block level 原来的inline-level的仍然是inline-level同时它原来在文档中的位置仍然保留,relative仍然属于基本的流布局

下面是一个例子

在这个例子中我们有两个段落 对第二个段落设置

       #test {
            position: relative;
            left:20px;

        }

我们会发现他相对于它本身(也就是11111段落的位置向右移动了20px) 如果我们对段落设置了宽高 通过审查元素发现元素的大小没有发生变化

absolute:生成绝对定位的的元素,相对于static以外的第一个父元素进行定位,如果它的所有父元素都没有设置定位 那就相对于最外层的body进行定位,可以通过设置left top bottom right设置元素在包含块的相应位置,并且设置了absolute的元素会生成一个块级框,进行之后的布局,这种定位脱离了原来的文档流

详解position:absolute

我们可以通过设置left right top bottom来控制元素相对于包含元素的位置

1)当我们没有设置left top right bottom时的表现

这时它会相对它的直接父元素以top:0 left:0进行定位(脱离了原本的文档流)

请看下面的例子

  <div>
        <img src="1.jpg" alt="">
        <p>1111111111111111111111111111</p>
    </div>
       body,p{
            margin:0;
        }
        div {
            width:200px;
            margin:20px;
            background: lightblue;
        }

在一个div中我们包含一个图片和一个段落p

在这里我并没有父级的div设置高度  父元素的div高度由img的高度和p(这里的p是块级元素,可以设置高度 当为span等行内元素的时候 高度由line-height决定)的高度和决定

当我们为img设置position:absolute的时候,一个似曾相识的场景出现了

跟之前遇到的float的塌陷的场景十分的类似,但是有些不一样的 这里img脱离了原来的文档流 所以此时父元素的高度直接又p的高度决定 并且这个img相对于这个div的左上角进行定位,会覆盖在之后的p,也就是造成了宽度和高度缺失(img实质还是存在高度的,因为它脱离了文档流才造成了这样的效果)

2)当设置了left top right bottom的时候

仔细的理解相对父元素第一个static以外的元素进行定位

有这样的一个页面结构

  <div id="content">
        <div id="a"></div>
        <div id="b"></div>
    </div>
body {
            margin:0;
        }

        #content {
            width:400px;
            height:400px;
            background: lightblue;
            margin:30px;
        }

        #b {
            width: 200px;
            height:200px;
            background: green;
        }

        #a {
            width:100px;
            height:200px;
            background: red;
        }

在页面中的上面这样的

当我们id为a的div设置相应的position:absolute 以及位置值的时候

    #a {
            position: absolute;
            left: 0;
            top:0;
            width:100px;
            height:200px;
            background: red;
        }

我们发现他相对于body的左上角进行了定位 我们为父元素div(id为content)设置定位的时候呢

    #content {
            position: relative;
            width:400px;
            height:400px;
            background: lightblue;
            margin:30px;
        }

发现他变成相对于设置了position:relative的父元素的左上角进行了定位

对于这点我们可以应用relative+absolute结合的方式达到float的效果

想想我们之前想要实现这样的一个效果

使一个超链接居左 一个超链接居右

  <div id="content">
        <a href="left" id="a">left</a>
        <a href="right" id="b">right</a>
    </div>
    body {
            margin:0;
        }

        #content {

            width:700px;
            height:100px;
            background: lightblue;
            margin:30px;
        }

        a {
            color:red;
        }

        #a {
            float:left;
        }

        #b {
            float:right;
        }

我们可以使用上面方式 但是float存在着一定的问题 我们要去清除浮动等 下面我们可以使用这种relative+absolute的方式进行布局

body {
            margin:0;
        }

        #content {
            position: relative;
            width:700px;
            height:100px;
            background: lightblue;
            margin:30px;
        }

        a {
            color:red;
        }

        #a {
            position: absolute;
            left:0;
            top:0;
        }

        #b {
            position: absolute;
            right: 0;
            top:0;
        }

这样也达到了我们想要的效果(这样也有局限性,就是我们的元素脱离了文档流,比如我们在content元素中在加入其它内容的时候,会从content的元素的开始布局)

参考  http://www.cnblogs.com/bokin/archive/2012/12/14/2816864.html

http://www.zhangxinxu.com/wordpress/2010/01/absolute%E7%BB%9D%E5%AF%B9%E5%AE%9A%E4%BD%8D%E7%9A%84%E9%9D%9E%E7%BB%9D%E5%AF%B9%E5%AE%9A%E4%BD%8D%E7%94%A8%E6%B3%95/

http://www.w3school.com.cn/css/css_positioning.asp

时间: 2024-10-09 18:27:49

css position 小记的相关文章

CSS position 属性

实例 定位 h2 元素: h2 { position:absolute; left:100px; top:150px; } 亲自试一试 浏览器支持 IE Firefox Chrome Safari Opera           所有主流浏览器都支持 position 属性. 注释:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit". 定义和用法 position 属性规定元素的定位类型. 说明 这个属性定义建立元素布局所用的定位机制.

CSS position的absolute和relative的解析[转]

定位一直是WEB标准应用中的难点,如果理不清楚定位那么可能应实现的效果实现不了,实现了的效果可能会走样.如果理清了定位的原理,那定位会让网页实现的更加完美. 定位的定义:在CSS中关于定位的内容是:      position:relative | absolute | static | fixed static(静态) 没有特别的设定,遵循基本的定位规定,不能通过z-index进行层次分级. relative(相对定位) 对象不可层叠.不脱离文档流,参考自身静态位置通过 top,bottom,

css position(定位)

一个定位元素(positioned element)是其计算位置属性为 relative, absolute, fixed 或 sticky 的一个元素. 相对定位元素(relatively positioned element)是计算后位置属性为 relative的元素. 绝对定位元素(absolutely positioned element)是计算后位置属性为 absolute 或 fixed 的元素. 粘性定位元素(stickily positioned element)是计算后位置属性

HTML CSS——position学习终结者(二)

在博客<HTML CSS--position学习终结者(一)>中我们认识到如果某一absolute作用的元素的父对象(或曾祖父,只要是父级对象)设置了position属性且position的属性值为absolute.relative或者fixed,那么这个子元素会参照离它(指子元素)最近的且position的属性值为absolute.relative或者fixed的父元素进行定位,子元素的定位点为父元素的左上角,学习过padding的人可能会这样想:这个时候如果父元素设置了padding样式,

转:css:Position

http://www.cnblogs.com/polk6/archive/2013/07/26/3214847.html CSS Position 定位属性 本篇文章主要介绍元素的Position属性,此属性可以设置元素在页面的定位方式. 目录 1. 介绍 position:介绍position的值以及辅助属性. 2. position 定位方式:介绍position的四种定位方式:绝对.相对.固定.默认. 3. 总结 position:以示例的方式展示position. 1. 介绍 1.1 说

CSS position绝对定位absolute relative

常常使用position用于层的绝对定位,比如我们让一个层位于一个层内具体什么位置,为即可使用position:absolute和position:relative实现. 一.position语法与结构   -   TOP position语法: position : static absolute relative position参数:static : 无特殊定位,对象遵循HTML定位规则absolute : 将对象从文档流中拖出,使用left,right,top,bottom等属性进行绝对

前端开发必知必会:CSS Position 全解析

当人们刚接触布局的时候都比较倾向于使用定位的方式.因为定位的概念看起来好像比较容易掌握.表面上你确切地指定了一个块元素所处的位置那么它就会坐落于那里.可是定位比你刚看到的时候要稍微复杂一点.对于定位来说,有一些东西会绊倒新手,所以在它成为你的惯用技巧前你需要掌握它们. 一旦你更深入地了解了它是怎么运作的,你就能够做出一些更棒的事情来. CSS盒模型和定位的类型 为了搞清楚定位首先你得了解CSS盒模型.在上一句中的链接是我写在InstantShift 中的一篇关于盒模型的文章.我在那篇文章做了详细

CSS position:fixed 实现html元素固定于某位置

本文章通过实例向大家讲解position:fixed 实现html元素固定于某位置.实例中div将固定于网页右下角,主要使用到css position:fixed 属性,需要的码农可以参考一下. CSS实现div固定于网页右下角实例代码:将一个元素固定于网页右下角的效果使用非常频繁,比如返回顶部的按钮,或者说是信息提示框之类的,下面就介绍一下如何使用CSS实现此效果,代码实例如下: <!DOCTYPE html> <html> <head> <title>C

css position全解析

1.position:static 所有的元素的默认定位都是position:static,这意味着元素没有被定位,而且在文档中出现在它应该在的位置. 2.position:relative 如果设定 position:relative,就可以使用 top,bottom,left 和 right 来相对于元素在文档中应该出现的位置来移动这个元素.[意思是元素实际上依然占据文档中的原有位置,只是视觉上相对于它在文档中的原有位置移动了] 3.position:absolute 当指定 positio