1、为什么使用定位了
2、什么是定位了
将盒子定在某一个位置,自由的漂浮在其他盒子(包括标准流和浮动)的上面 。
3、定位的构成
3.1、边偏移
在 CSS 中,通过 top
、bottom
、left
和 right
属性定义元素的边偏移:(方位名词)
3.1.1、top
top样式属性定义了定位元素的上外边距边界与其包含块上边界之间的偏移,非定位元素设置此属性无效。
3.1.1.1、属性值
对于绝对定位的元素,元素下外边距边界与其包含块下边界之间的偏移。
对于相对定位定位的元素,元素的下边界离开其正常位置的偏移。
对于绝对定位元素,元素将忽略此属性已bottom属性为准,如果此时设置
height: auto
,将基于内容需要的高度设置高度;如果bottom也为auto的话,元素的垂直位置就是它假如作为静态(即static)元素时该在的位置。
对于相对定位元素,元素相对正常位置的偏移量将基于bottom属性;如果bottom也为auto的话,元素将不会有偏移。
3.1.1.2、注意点
- 当position设置为absolute或fixed时,top属性指定了定位元素上外边距边界与其包含块上边界之间的偏移。
- 当position设置为relative时,top属性指定了元素的上边界离开其正常位置的偏移。
- 当position设置为sticky时,如果元素在viewport里面,top属性的效果和position为relative等同;如果元素在viewport外面,top属性的效果和position为fixed等同。
- 当position设置为static时,top属性无效。
当top和bottom同时指定时,并且 height没有被指定或者指定为auto的时候,top和bottom都会生效,在其他情况下,如果 height被限制,则top属性会优先设置,bottom属性则会被忽略。
3.1.2、right
right样式属性定义了定位元素的右外边距边界与其包含块右边界之间的偏移,非定位元素设置此属性无效。
3.1.2.1、属性值
对于绝对定位的元素,元素右外边距边界与其包含块右边界之间的偏移。
对于相对定位定位的元素,元素的右边界离开其正常位置的偏移。
对于绝对定位元素,元素将忽略此属性而以left属性为准,如果此时设置
width:auto
,将基于内容需要的宽度设置宽度;如果left也为auto的话,元素的水平位置就是它假如作为静态(即static)元素时该在的位置。
对于相对定位元素,元素相对正常位置的偏移量将基于left属性;如果left也为 auto的话,元素将不会有偏移。
3.1.2.2、注意点
- 当position设置为absolute或fixed时,right属性指定了定位元素右外边距边界与其包含块右边界之间的偏移。
- 当position设置为relative时,right属性指定了元素的右边界离开其正常位置的偏移。
- 当position设置为sticky时,如果元素在viewport里面,right属性的效果和position为relative等同;如果元素在viewport外面,right属性的效果和position为fixed等同。
- 当position设置为static时,right属性无效。
当left和right同时指定时,元素的位置会被重复指定。当容器是从左到右时,left的值会被优先设定;当容器是从右到左时,right的值会被优先设定。
3.1.3、bottom
bottom样式属性定义了定位元素下外边距边界与其包含块下边界之间的偏移,非定位元素设置此属性无效。
3.1.3.1、属性值
<length>
对于绝对定位的元素,元素下外边距边界与其包含块下边界之间的偏移。
对于相对定位定位的元素,元素的下边界离开其正常位置的偏移。
- auto
规定:
对于绝对定位元素,元素将忽略此属性而以top属性为准,如果此时设置
height: auto
,将基于内容需要的高度设置宽度;如果top也为auto的话,元素的垂直位置就是它假如作为静态(即static)元素时该在的位置。
对于相对定位元素,元素相对正常位置的偏移量将基于top属性;如果top也为auto的话,元素将不会有偏移。
3.1.3.2、注意点
- 当position设置为absolute或fixed时,bottom属性指定了定位元素下外边距边界与其包含块下边界之间的偏移。
- 当position设置为relative时,bottom属性指定了元素的下边界离开其正常位置的偏移。
- 当position设置为sticky时,如果元素在viewport里面,bottom属性的效果和position为relative等同;如果元素在viewport外面,bottom属性的效果和position为fixed等同。
- 当position设置为static时,bottom属性无效。
当 top和bottom同时指定时,并且 height没有被指定或者指定为auto或100%的时候,top和bottom都会生效,在其他情况下,如果 height被限制,则top属性会优先设置,bottom属性则会被忽略。
3.1.4、left
left属性定义了定位元素的左外边距边界与其包含块左边界之间的偏移,非定位元素设置此属性无效。
3.1.4.1、属性值
<length>
可以是负的,正的 或者 null 表示:
对于绝对定位的元素,元素左外边距边界与其包含块左边界之间的偏移。
对于相对定位定位的元素,元素的左边界离开其正常位置的偏移。
- auto
对于绝对定位元素,元素将忽略此属性而以right属性为准,如果此时设置
width: auto
,将基于内容需要的宽度设置宽度;如果right也为auto的话,元素的水平位置就是它假如作为静态(即static)元素时该在的位置。
对于相对定位元素,元素相对正常位置的偏移量将基于right属性;如果right也为auto的话,元素将不会有偏移。
3.1.4.2、注意点
left的效果取决于元素的position属性:
- 当position设置为absolute或fixed时,left属性指定了定位元素左外边距边界与其包含块左边界之间的偏移。
- 当position设置为relative时,left属性指定了元素的左边界离开其正常位置的偏移。
- 当position设置为sticky时,如果元素在viewport里面,left属性的效果和position为relative等同;如果元素在viewport外面,left属性的效果和position为fixed等同。
- 当position设置为static时,left属性无效。
当left和right同时指定时,元素的位置会被重复指定。当容器是从左到右时,left的值会被优先设定;当容器是从右到左时,right的值会被优先设定。
3.1.5、注意点
注意:
3.2、定位模式(position)
在 CSS 中,通过 position
属性定义元素的定位模式,语法如下:
选择器 {
position: 属性值;
}
定位模式是有不同分类的,在不同情况下,我们用到不同的定位模式。
3.2.1、静态定位(static)
3.2.2、相对定位(relative)
- 相对定位是元素相对于它原来在标准流中的位置来说的。(自恋型)
效果图:
相对定位的特点:
3.2.3、绝对定位(absolute)
绝对定位是元素以带有定位的父级元素来移动位置。(拼爹型)
- 父元素要有定位
-
将元素依据最近的已经定位(绝对、固定或相对定位)的父元素(祖先)进行定位。
绝对定位的特点: -
不保留原来的位置,完全是脱标的。
定位口诀 —— 子绝父相
3.2.4、固定定位(fixed)
固定定位是绝对定位的一种特殊形式:(认死理型)如果说绝对定位是一个矩形,那么固定定位就类似于正方形。
注意:
3.2.5、粘性定位(sticky)
粘性定位可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位。
须指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。
通俗来讲就是设定了top、bottom、left、right
了,超过这个值为为固定定位。
#one {
position: sticky;
top: 10px;
}
在 viewport 视口滚动到元素 top 距离小于 10px 之前,元素为相对定位。之后,元素将固定在与顶部距离 10px 的位置,直到 viewport 视口回滚到阈值以下。
粘性定位常用于定位字母列表的头部元素。标示 B 部分开始的头部元素在滚动 A 部分时,始终处于 A 的下方。而在开始滚动 B 部分时,B 的头部会固定在屏幕顶部,直到所有 B 的项均完成滚动后,才被 C 的头部替代。
示例:
<div class="box">
</div>
* {
padding: 0;
margin: 0;
}
body {
height: 2000px;
}
.box {
position: sticky;
top: 10px;
margin: 100px auto;
width: 30px;
height: 90px;
background-color: pink;
}
4、子绝父相的由来
刚才咱们说过,绝对定位,要和带有定位的父级搭配使用,那么父级要用什么定位呢?
子绝父相 —— 子级是绝对定位,父级要用相对定位。
子绝父相是使用绝对定位的口诀,要牢牢记住!
疑问:为什么在布局时,子级元素使用绝对定位时,父级元素就要用相对定位呢?
观察下图,思考一下在布局时,左右两个方向的箭头图片以及父级盒子的定位方式。
分析:
如果父级盒子也使用绝对定位,会完全脱标,那么下方的广告盒子会上移,这显然不是我们想要的。
结论:父级要占有位置,子级要任意摆放,这就是子绝父相的由来。
5、绝对定位的盒子居中
盒子居中定位示意图
6、堆叠顺序(z-index)
加了定位的盒子,默认后来者居上,后面的盒子会压住前面的盒子。
应用 z-index
层叠等级属性可以调整盒子的堆叠顺序。如下图所示:
- 属性值:正整数、负整数或 0,默认值是 0,数值越大,盒子越靠上;
- 如果属性值相同,则按照书写顺序,后来居上;
- 数字后面不能加单位;
- auto:盒子不会创建一个新的本地堆叠上下文。在当前堆叠上下文中生成的盒子的堆叠层级和父级盒子相同。
注意:z-index
只能应用于相对定位、绝对定位和固定定位的元素,其他标准流、浮动和静态定位无效。
7、定位改变display属性
我们已经 了解 display 是显示模式,可以改变显示模式有以下方式:
所以说,一个行内的盒子,如果加了浮动、固定定位和绝对定位,不用转换,就可以给这个盒子直接设置宽度和高度等。
同时注意:
浮动元素、绝对定位(固定定位)元素的都不会触发外边距合并的问题。(我们以前是用padding border overflow解决的)
也就是说,我们给盒子改为了浮动或者定位,就不会有垂直外边距合并的问题了。
写在最后
如果你感觉文章不咋地
//(ㄒoㄒ)//
,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L;~~~///(^v^)\~~~
谢谢各位读者们啦(^_^)∠※
!!!
原文地址:https://blog.csdn.net/weixin_62277266/article/details/122771394
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_31434.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!