资讯专栏INFORMATION COLUMN

CSS 各种定位(position)方式的区别

i_garfileo / 421人阅读

摘要:绝对定位元素从文档流删除,并相对于包含块定位。固定定位元素从文档流删除,并相对于浏览器视窗定位,因此不随文档滚动而移动。

定位(position)
position: relative/absolute/fixed/static/inheri

absolute :生成绝对定位的元素, 相对于最近一级的 定位不是 static 的父元素来进行定位。

fixed (老IE不支持)生成绝对定位的元素,通常相对于浏览器窗口或 frame 进行定位。

relative 生成相对定位的元素,相对于其在普通流中的位置进行定位。

static 默认值。没有定位,元素出现在正常的流中

sticky 生成粘性定位的元素,容器的位置根据正常文档流计算得出

static:静态定位

是position的默认值,元素框正常生成,也就是没有定位时的正常显示。

relative:相对定位

用法一:元素相对自身的原位置偏移某个距离,但是原本的空间依旧保留,表现为空白
用法二:把一个元素设置为position: relative; 可以使该元素的子元素相对该元素绝对定位。

absolute:绝对定位

元素从文档流删除,并相对于包含块定位。元素在原本的空间关闭。元素定位后生成一个块级框,不论它原来是行内元素还是块级元素。
包含块:最近的position值不是static的祖先元素(块级或行内),一般会指定一个元素作为绝对定位元素的包含块,将其position设置为relative而且没有偏移。

fixed:固定定位

元素从文档流删除,并相对于浏览器视窗定位,因此不随文档滚动而移动。元素在原本的空间关闭。元素定位后生成一个块级框,不论它原来是行内元素还是块级元素。与绝对定位的区别仅仅是包含块不同。
包含块:浏览器视窗。

sticky:CSS3新增属性,FF和safari支持
当定位内容在窗口中时,定位不起作用,类似于relative;但是当定位内容快要移出窗口时,相对窗口定位,类似于fixed;更详细一点:当且仅当包含块在水平位置超出窗口范围时,left定位才有意义;当且仅当包含块在垂直位置超出窗口范围时,top定位才有意义;

在FF中的测试代码:



  
  
  
  
  
  
relative
abso
fix
stick
absolute/fixed和float对比

类似:元素都会从文档流删除,但是依旧会影响布局;都会生成一个块级框,无论原来是不是块级元素。
区别:float的包含块是最近块级祖先元素。

偏移属性:top/right/bottom/left,初始值是auto。

采用position定位之后必须采用偏移属性定义偏移量,也就是相对包含块的偏移。注意应用于position值不是static的元素。

有时也需要定义width和heigth,但是可能会和偏移属性的定义冲突,因为四个偏移属性实际上已经定义了元素的大小。此时,根据width和left属性定义左右,根据top和height属性定义上下。

CSS常见居中技巧

文本水平居中:

text-align: center;

div水平垂直居中:
父级div设置为positon: relative,需要居中的div元素设置以下样式:

        {position: absolute;
        width:400px;height:200px;
        left:50%;top:50%;
        margin-left:-200px;margin-top:-100px;
        border:1px solid #00F;
        }

解释:设置元素为position: absolute使元素相对父级元素定位,然后以百分比形式设置相对父级元素的偏移量,设置为偏移50%并非是完全居中,还需要消除div本身的宽度和高度的影响,设置margin-left和margin-top为一半宽度和高度的负值,此时完全居中。

div水平居中:

        margin: 0 auto;

如果还需要文本居中,设置

        text-align: center;
内容溢出overflow: visible/ hidden/ scroll /auto/ inherit,初始值是visible。

一个元素的大小固定,但是其内容放不下,就会导致溢出。overflow控制溢出部分的可见(visible)、不可见(hidden)、滚动可见(scroll)。

元素可见性visibility: visible/ hidden/ collapse/ inherit,初始值是visible。

visibility:hidden和display:none的区别:visibility:hidden设置元素不可见,但是元素依旧会影响布局,只是元素部分呈现为空白;display:none元素不显示并且从文档流中删除,对文档布局没有任何影响。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/111558.html

相关文章

  • CSS原生布局方式

    摘要:布局任何元素在默认的情况下都是处于整个文档流中的,不会浮动的。相对定位如果想为元素设置层级布局模型中的相对定位,需要设置表示相对定位,它通过属性确定元素在正常文档流中的偏移位置。 showImg(https://segmentfault.com/img/remote/1460000009753577); 前言 网页原生布局的方法其实网上有很多,大概为Flow(流动布局模型)、Float...

    PingCAP 评论0 收藏0
  • CSS知识点及技巧整理

    摘要:当元素在容器中被滚动超过指定的偏移值时,元素在容器内固定在指定位置。详见浮动与清除浮动浮动相关知识属性的取值元素向左浮动。是相对长度单位,相对于当前对象内文本的字体尺寸。 这些个知识点是我个人认为的,下面我们就来看看这些个知识点。 1.怎么让一个不定宽高的 DIV,垂直水平居中? 使用Flex 只需要在父盒子设置:display: flex; justify-content: cent...

    masturbator 评论0 收藏0
  • CSS知识点及技巧整理

    摘要:当元素在容器中被滚动超过指定的偏移值时,元素在容器内固定在指定位置。详见浮动与清除浮动浮动相关知识属性的取值元素向左浮动。是相对长度单位,相对于当前对象内文本的字体尺寸。 这些个知识点是我个人认为的,下面我们就来看看这些个知识点。 1.怎么让一个不定宽高的 DIV,垂直水平居中? 使用Flex 只需要在父盒子设置:display: flex; justify-content: cent...

    EasonTyler 评论0 收藏0
  • 那些年,碰上过面试题

    摘要:元素在跨越特定阈值前为相对定位,之后为固定定位。和简单介绍和,哪个会触发哪个触发顺序,哪个能够避免,哪个时尽量减少而不可能避免,哪些操作会触发阮一峰动画动画与动画区别性能区别性能优化动画性能优化动画介绍后续还会继续进行面试题的积累 记录一下最近碰上的面试题 js篇 介绍一下Array的API/方法,具体到返回值和参数 join / slice / splice / sort / pu...

    bitkylin 评论0 收藏0
  • 那些年,碰上过面试题

    摘要:元素在跨越特定阈值前为相对定位,之后为固定定位。和简单介绍和,哪个会触发哪个触发顺序,哪个能够避免,哪个时尽量减少而不可能避免,哪些操作会触发阮一峰动画动画与动画区别性能区别性能优化动画性能优化动画介绍后续还会继续进行面试题的积累 记录一下最近碰上的面试题 js篇 介绍一下Array的API/方法,具体到返回值和参数 join / slice / splice / sort / pu...

    nicercode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<