POSITION定位有哪几种?各有什么特点?

本文详细介绍了CSS中的定位属性position,包括静态、相对、绝对和固定四种定位方式的特点与使用方法,并解答了常见问题如相对定位与绝对定位的搭配使用效果、如何控制定位元素的相互覆盖等问题。

1.背景介绍
  
        position 是CSS用来为HTML文档的一些元素提供定位的属性,定位的基本思想很简单,它允许你定义元素
        框相对于其正常位置应该
        出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。
  
       常规取值:   1.static(静态)   2.Relative(相对)
        3.Absolute(绝对) 4.fixed(固定)
        2.知识剖析
   
        static(静态):HTML元素的默认值,不受top、bottom、left、right属性影响,元素出现在正常的文档
        流中
   
        Relative(相对):相对定位。
        特点:不脱离文档流的布局,受top、bottom、left、right属性影响,只改变自身的位置,在文档流原先的
        位置遗留空白区域。定位的起始位置为此元素原先在文档流的位置。
   
        Absolute(绝对):绝对定位
        特点:脱离文档流的布局,遗留下来的空间由后面的元素填充。定位的起始位置为最近的父元素(position不
        为static),否则为html文档本身。
 
        fixed(固定):固定定位。
        特点:类似于absolute,但不随着滚动条的移动而改变位置。元素的位置相对于浏览器窗口是固定位置。
  

3.常见问题
   
        相对定位与绝对定位的搭配使用效果?
  
        4.解决方案
 
        父容器使用相对定位,子元素使用绝对定位后,这样子元素的位置不再相对于浏览器左上角,而是相对于父窗口左
        上角,若无非static祖先,以初始包含块定位,在浏览器里,根元素的包含块(HTML)为初始包含块,只是一般情
        况下看上去像是body区域。

问题一:层模型的定位区别
绝对定位(position:absolute)是元素相对于浏览器,就是一整个页面;
相对定位(position:relative)是元素参照自己原来的位置,但是元素移动了以后,原来的位置还是该元素的,,也就是说相对定位就是移动后一个元素占了两个位置;

固定定位(position:fixed)是元素相对于视图,就是窗口,固定在视图窗口的某个位置,即使滚动条上下滚动,我们所看到的元素的位置不变。

问题二:怎样控制定位元素的相互覆盖?

定位覆盖的优先级还是先取决于父辈元素的z-index的大小,然后才是自己的z-index的大小。

问题三:position定位需要注意哪些问题?

1、float属性不可以和position属性共用,切记!
2、使用absolute时记得给父元素加relative
3、除了用left和top外,还有right和bottom,活学活用
4、能不用position就不用position,毕竟容易把布局搞乱

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

### CSS `position` 属性使用指南 #### 一、CSS 定位概述 CSS 中的 `position` 属性用于定义元素框相对于其正常位置或其他容器的位置。通过设置不同的定位类型,可以精确控制 HTML 元素在页面中的布局[^1]。 --- #### 二、定位类型的详细说明 ##### 1. **Static(默认定位)** 这是所有 HTML 元素的默认定位方式。在这种模式下,元素按照正常的文档流进行排列,不受 `top`, `bottom`, `left`, 和 `right` 属性的影响[^3]。 ```css /* 默认定位 */ .element { position: static; } ``` ##### 2. **Relative(相对定位)** 相对定位使元素相对于其原始位置偏移,而不会影响其他元素的布局。尽管该元素被重新定位,但它仍然占据原来的空间。 ```css /* 相对定位 */ .relative-element { position: relative; top: 20px; /* 向上移动 20px */ left: 10px; /* 向右移动 10px */ } ``` ##### 3. **Absolute(绝对定位)** 绝对定位将元素从标准文档流中移除,并将其放置在一个指定的位置。如果父级元素设置了 `position` 属性为非 `static` 值,则子元素会相对于最近的已定位祖先元素;如果没有这样的祖先,则相对于初始包含块(通常是浏览器窗口)。 ```css /* 绝对定位 */ .absolute-element { position: absolute; top: 50px; right: 30px; } ``` ##### 4. **Fixed(固定定位)** 固定定位类似于绝对定位,但是固定的参照物是视窗本身而不是某个特定的HTML标签或者区域。即使用户滚动页面,这种类型的盒子也会保持不动[^2]。 ```css /* 固定定位 */ .fixed-element { position: fixed; bottom: 0; right: 0; } ``` ##### 5. **Sticky(粘性定位)** 粘性定位是一种混合形式,在某些条件下表现为相对定位而在另一些条件则像固定定位一样工作。通常来说,当目标对象位于可见区域内时表现得像是相对定位,一旦超出可视范围就变成固定定位。 ```css /* 粘性定位 */ .sticky-element { position: sticky; top: 10px; /* 距离顶部的距离 */ } ``` --- #### 三、实际应用场景与案例分析 以下是几个常见的场景以及如何利用不同种类的定位来解决问题: - **导航栏始终显示于顶端** 可以采用 Fixed Position 来实现这一需求,使得无论怎样滑动网页内容,导航条都维持在其设定好的地方不变形也不消失。 - **侧边栏跟随浏览行为变化** Sticky positioning 很适合用来创建随着用户的垂直滚动自动调整自己高度或状态的小部件,比如目录索引链接列表等。 --- #### 四、常见问题及其解决方案 1. **清除浮动导致的布局错乱** 当多个浮动物体并列存在时可能会引发后续非浮动项目无法正确计算宽度等问题。可以通过引入额外空白 div 设置样式 clear:both 或者运用 clearfix 技巧加以规避[^4]。 2. **层叠上下文混乱** 如果发现 z-index 不生效,请确认当前操作的对象确实处于同一层级关系之中,并且已经显式声明过相应的 position 参数值。 --- ### 总结 掌握好各种定位机制的特点及适用场合对于构建复杂灵活界面至关重要。每种方法都有各自的优势和局限之处,合理搭配才能达到最佳效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值