理解CSS相对定位和固定定位

×

目录

[1]相对定位 [2]固定定位

前面的话

  一般地,说起定位元素是指position不为static的元素,包括relative、absolute和fixed。前面已经详细介绍过absolute绝对定位的基础应用,这篇博客介绍和梳理相对定位relative和固定定位fixed的相关知识

相对定位

定义

  可能理解起来最简单的定位机制就是相对定位了。采用这种机制时,通过使用偏移属性移动定位元素。当元素相对定位时,它会从其正常位置移走,不过,原来所占的空间并不会因此消失。相对定位元素,会为其所有子元素建立一个新的包含块。这个包含块对应于该元素原本所在的位置

  [注意]如果相对定位元素遇到过度受限的问题,一个值会重置为另一个值的相反数。bottom总是等于-top,right总是等于-left

特性

【1】限制范围

  一般地,给绝对定位元素限制范围时,为其父级元素设置相对定位relative,因为相对定位元素不脱离文档流

  [注意]相对定位元素可以限制绝对定位,但不能限制固定定位,因为固定定位是相对于视窗定位的

【2】提升层级

  当想要提升元素层级,又不想脱离文档流时,使用相对定位是一个好主意

行内元素

  不同于绝对定位元素可以使元素具有块级元素属性,相对定位应用于inline元素后,由于无法改变其行内元素的属性,不具备块级元素属性,无法设置宽高,其上下margin也依然存在问题

IE兼容

  在IE6浏览器下,haslayout下的元素负margin超出父元素的部分会被隐藏掉。这个问题可以通过设置margin负值元素的position属性值为relative来解决。

固定定位

  固定定位与绝对定位很类似,元素会完全从文档流中去除,但固定元素的偏移是相对于视窗。

  [注意]IE7-浏览器不支持

特性

  固定定位与绝对定位的很多特性都类似,具有包裹性、破坏性及去浮动的特性,关于各浏览器中display属性的bug、clip属性的隐藏功能、静态位置跳动以及overflow失效的表现都相同,在此就不再赘述。

全屏遮罩

  当页面内容超出页面容器大小出现滚动条时,此时使用absolute全屏遮罩会出现滚动条以外部分没有遮住的情况。因为根元素html的父级是document,document的高度和可视区域一致,也就是与视窗一致,是不包括滚动条以外部分的。

  这时,只能使用fixed固定定位来实现全屏遮罩效果

.page{
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: pink;
    z-index: -1;
}
.test{
    width: 2000px;
    height: 200px;
    background-color: lightblue;
}
<div class="page" id="page"></div>
<div class="test"></div>
<button>absolute</button>
<button>fixed</button>
var btns = document.getElementsByTagName(‘button‘);
for(var i = 0; i < btns.length; i++){
    btns[i].onclick = function(){
        page.style.position = this.innerHTML;
    }
}

//分别点击两个按钮,并拖动横向滚动条查看效果

时间: 2024-10-10 14:01:52

理解CSS相对定位和固定定位的相关文章

web前端入门到实战:css绝对定位和相对定位、固定定位

1.绝对定位 position:absolute: 绝对定位指的是通过规定HTML元素在水平和垂直方向上的位置来固定元素,基于绝对定位的元素不会占据空间.绝对定位的位置声明是相对于已定位的并且包含关系最近的祖先元素.如果当前需要被定为的元素没有已定位的祖先元素作为参考值,则相对于整个网页. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &l

层模型--绝对定位、相对定位、固定定位

绝对定位: 如果想为元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用left.right.top.bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位.如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口. 如下面代码可以实现div元素相对于浏览器窗口向右移动100px,向下移动50px. div{ width:200px; height:200px; border:2px red

HTML定位——绝对定位和相对定位、固定定位

1.绝对定位 绝对定位指的是通过规定HTML元素在水平和垂直方向上的位置来固定元素,基于绝对定位的元素不会占据空间. 绝对定位的位置声明是相对于已定位的并且包含关系最近的祖先元素.如果当前需要被定为的元素没有已定位的祖先元素作为参考值,则相对于整个网页. position:absolute: 1    <!DOCTYPE html>  2  <html lang="en"> 3 4 <head> 5 <meta charset="UT

[转]深入理解css中的position定位和z-index属性

由于平时不太用到,所以过去写css的时候对于position属性的absolute. relative值理解比较模糊,对于z-index的层叠更是摸不着头脑,除了理解的因素外,各个浏览器的不同解析结果也是一个大问题.今天仔细阅读了一下css文档,总算是对盒模型的浮动.定位有了比较深刻的理解. 我们在实践中很有可能遇到这样的问题:1.做一个横向导航,然后鼠标经过之后出现下拉菜单,那么这个下拉菜单的位置控制就是一个关键:2.我们想在一个正常的页面布局中放入几个浮在页面上的气泡提示,这时既不想让气泡提

前端学习(14)~css学习(八):定位属性

CSS的定位属性有三种,分别是绝对定位.相对定位.固定定位. position: absolute; <!-- 绝对定位 --> position: relative; <!-- 相对定位 --> position: fixed; <!-- 固定定位 --> 相对定位 相对定位:让元素相对于自己原来的位置,进行位置调整(可用于盒子的位置微调). 格式: position: relative; left: 50px; top: 50px; 相对定位的举例: <!do

奇妙的CSS之布局与定位

关于布局与定位是Web前端开发里非常基础而又重要的部分.介绍相关知识的文章,很容易就可以找到.虽然,这方面的知识点不是很多,但我们如果不弄清楚,在运用时候往往会出现预料之外的布局,这些“意外”有时候很令人苦恼.下面根据我的学习和编程经验来谈一下这方面的要点. 要想完美的实现自己的布局,那首先一定要把盒模型搞清楚.盒模型由内容区.内边距(padding).边框(border)和外边距(margin)构成.这些属性值都是可选的,相互之间没有依赖关系,但在具体的布局时会需要设置某些属性.我们平时设置的

CSS层模型中的绝对定位 相对定位 固定定位

1.绝对定位:元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用left.right.top.bottom属性相对于其最接近的恶意个具有定位属性的父包含块进行绝对定位.如果不存在这么一个元素,则相对于body元素而言,也就是说相对浏览器而言. 2.相对定位:元素设置层模型中的相对定位,需要设置position:relative(表示相对定位),它通过left.right.top.bottom属性确定元素在正常文档

CSS定位:相对定位、绝对定位和固定定位(relative absolute fixed)

相对定位:position:relative; 不脱离文档流,参考自身静态位置通过top,bottom,left,right定位,并且可通过z-index进行层次分级. 绝对定位:position:absolute; 脱离文档流,通过top,bottom,left,right定位,选取其最近的父级元素进行定位,当父级元素position为static时,absolute元素将以body坐标原点进行定位,可通过x-index层次分级. 固定定位:position:fixed; 这里他所固定的对象是

CSS——相对定位、绝对定位、固定定位

相对定位: 当元素被设置相对定位或是绝对定位后,将自动产生层叠,他们的层叠级别自然的高于文本流,除非设置其z-index值为负值. 并且我们发现当相对定位元素进行位移后,表面来看已经脱离了文本流,但是实际上在本文流中还为原来的相对对定位留下了原有的总宽与总高. 绝对定位: 相对定位只可以在文本流中进行位置的上下左右的移动,同样存在一定的局限性,虽然他的表现区脱离了文本流,但是在文本流却依然为其保留了一席之地,这个位置不随他的移动而改变. 如果希望文本流抛弃这个部分就需要用到绝对定位.绝对定位不光