定位网页元素、透明度、z-index、包裹性和破坏性

时间:2024-10-22 15:35:14

一、定位

position属性————规定元素的定位类型,即元素脱离文档流的布局,在页面的任意位置显示

定位网页元素、透明度、z-index、包裹性和破坏性

也可以参见以前的总结 <—— 戳

  • static:默认值,没有定位
  • relative:相对定位
  • absolute:绝对定位
  • fixed:固定定位

(1)static 定位

没有定位,以标准流方式显示

定位网页元素、透明度、z-index、包裹性和破坏性

不会受到top, bottom, left, right影响

(2)relative 相对定位

定位网页元素、透明度、z-index、包裹性和破坏性

相对自身原来位置进行偏移
偏移设置:top、left、right、bottom

经常被用来作为绝对定位元素的容器块

相对定位的规律:

定位网页元素、透明度、z-index、包裹性和破坏性

定位网页元素、透明度、z-index、包裹性和破坏性

CSS

#third {
background-color:#C5DECC;
border:1px #395E4F dashed;
position:relative;
right:20px;
bottom:30px;
}

定位网页元素、透明度、z-index、包裹性和破坏性

对浮动元素设置相对定位:
A. 设置第二个盒子右浮动,再设置第一、第二盒子相对定位

定位网页元素、透明度、z-index、包裹性和破坏性

定位网页元素、透明度、z-index、包裹性和破坏性

(3)绝对定位

定位网页元素、透明度、z-index、包裹性和破坏性

使用了绝对定位的元素以它最近的一个“已经定位”的“祖先元素” 为基准进行偏移
如果没有已经定位的祖先元素,会以浏览器窗口为基准进行定位
绝对定位的元素从标准文档流中脱离,这意味着它们对其他元素的定位不会造成影响
元素位置发生偏移后,它原来的位置不会被保留下来

定位的起始位置为最近的父元素(只要把父元素的position设定为relative/fixed即可),否则为Body文档本身

绝对定位不设置偏移量

设置了绝对定位但没有设置偏移量的元素将保持在原来的位置。
在网页制作中可以用于需要使某个元素脱离标准流,而仍然希望它保持在原来的位置的情况

(4)固定定位

类似绝对定位,不过区别在于定位的基准不是祖先元素,而是浏览器窗口

二、定位小结

(1)相对    定位的特性

  1. 相对于自己的初始位置来定位
  2. 元素位置发生偏移后,它原来的位置会被保留下来
  3. 层级提高,可以把标准文档流中的元素及浮动元素盖在下边

(2)相对定位的使用场景
相对定位一般情况下很少自己单独使用,都是配合绝对定位使用,为绝对定位创造定位父级而又不设置偏移量

(1)绝对    定位的特性

  1. 绝对定位是相对于它的定位父级的位置来定位,如果没有设置定位父级,则相对浏览器窗口来定位
  2. 元素位置发生偏移后,原来的位置不会被保留
  3. 层级提高,可以把标准文档流中的元素及浮动元素盖在下边
  4. 设置绝对定位的元素脱离文档流

(2)绝对定位的使用场景
一般情况下,绝对定位用在下拉菜单、焦点图轮播、弹出数字气泡、特别花边等场景

(1)固定    定位的特性

  1. 相对浏览器窗口来定位
  2. 偏移量不会随滚动条的移动而移动

(2)固定定位的使用场景
一般在网页中被用在窗口左右两边的固定广告、返回顶部图标、吸顶导航栏

position属性与浮动同时使用情况:

定位网页元素、透明度、z-index、包裹性和破坏性

浮动和定位属性的区别

position: absolute会导致元素脱离文档流,被定位的元素在文档中不占据任何位置。

float也会导致元素脱离文档流,但还在文档或容器中占据位置,把文档流和其它float元素向左或向右挤,并可能导致换行。

display的inline-block不脱离文档流,将block元素当作大型字符嵌入文档流内。

三、透明度

定位网页元素、透明度、z-index、包裹性和破坏性

定位网页元素、透明度、z-index、包裹性和破坏性

四、z-index

z-index只能在position属性值为relative或absolute或fixed的元素上有效

哪个大,哪个在屏幕最上方

网页中的元素都含有两个堆叠层级

  • 未设置绝对定位时所处的环境,z-index是0
  • 设置绝对定位时所处的堆叠环境,此时层的位置由z-index的值确定

改变设置绝对定位和没有设置绝对定位的层的上下堆叠顺序,只需调整绝对定位层的z-index值即可

父元素是不可添加z-index值的,否则会导致错误。但是如果  parent1   元素和   parent2   元素相对于body又是子元素,那么他俩就可以进行比较了。

定位网页元素、透明度、z-index、包裹性和破坏性

五、包裹性和破坏性

包裹性
包裹性换种说法就是让元素inline-block例如一个div标签默认宽度是100%显示的,但是  一旦被absolute属性缠上,则100%默认宽度就会变成自适应内部元素的宽度。  如下测试代码:

CSS

.div { padding:20px; margin-bottom:10px; background-color:#f0f3f9; }
.abs { position:absolute; }

HTML

<div class="div">
<img src="mm1.jpg" />
<p>无absolute</p>
</div>
<div class="div abs">
<img src="mm1.jpg" />
<p>absolute后</p>
</div>

定位网页元素、透明度、z-index、包裹性和破坏性

例如平时我们要让span标签支持width属性,可能要设置:

span { display:block; width:100px; }

但是,float:left/position:absolute的情况下,display属性就是多余的,可以直接回家喝茶了。

span { float:left; width:100px; }

span { position:absolute; width:100px; }

破坏性

浮动的破坏性在于切断line box链,致使高度塌陷,但由于浮动元素实体是看得见摸得着的,所以其占据的实体位置还是在的。而absolute绝对定位不仅让高度塌陷,宽度也是塌陷的。

示例如下:

CSS

.div { padding:20px; margin:10px 0 0 10px; background-color:#f0f3f9; float:left; }.abs { position:absolute; }

HTML

<div class="div">
<img src="mm1.jpg" />
<p>图片无absolute</p>
</div> <div class="div">
<img class="abs" src="mm1.jpg" />
<p>图片absolute后</p>
</div>

定位网页元素、透明度、z-index、包裹性和破坏性