CSS中的重点和难点(绝对定位与相对定位)

绝对定位

设置position属性的时候,如果设置的属性值是absolute,此时就是绝对定位

绝对定位跟相对定位不同

影响后面的兄弟元素

  

相对body定位

在相对定位中,相对于原有位置进行定位的

在据对定位中,相对于body元素定位的

注意

设置top的时候,根据body的顶边定位

设置bottom的时候,相对于屏幕的底边定位

leftright是相对于body左右边定位的。

 

div {

width: 200px;

height: 200px;

background: green;

position: absolute;

/*top: 200px;*/

/*left: 100px;*/

/*bottom优先级低于top,要注释top*/

bottom: 200px;

10  right: 200px;

11 

12 }

 

绝对定位影响宽高

在未设置盒子的宽度和高度的时候,我们可以通过绝对定位的偏移量:topbottomright, left来设置盒子的宽高

相对定位不可以

 

相对定位并没有修改盒子的宽高,宽度还是100%,高度还是内容的高度

绝对定位修改盒子的宽高,宽度不再是100%,宽度和高度都是由偏移量topbottomleftright定义的


就近原则

嵌套的盒子设置了绝对定位,它会寻找离他最近的设置了定位的祖先元素(绝对定位,相对定位,固定定位),从而来定义相对的偏移量。

也就是说,此时不再以body定位,而是相对设置了定位的祖先元素定位

 

.box1 {

border: 1px solid #000;

padding: 50px;

width: 498px;

height: 498px;

}

.box2 {

border: 1px solid #000;

padding: 50px;

10  width: 398px;

11  height: 398px;

12  /*相对定位*/

13  position: relative;

14 }

15 .box3 {

16  border: 1px solid #000;

17  padding: 50px;

18  width: 298px;

19  height: 298px;

20 }

21 .box {

22  width: 50px;

23  height: 50px;

24  background: green;

25  /*据对定位,默认相对于body*/

26  position: absolute;

27  top: 50px;

28  left: 50px;

29 }

 

定位顶点

绝对定位是相对于父元素的padding定点(包含padding)进行定位设置的。

设置border会影响定位的结果

 

 

.box2 {

border: 50px solid #000;

padding: 50px;

width: 350px;

height: 350px;

/*相对定位*/

position: relative;

}

 

display

不论是行内元素,还是块元素,设置了绝对定位,display属性失效,此时有点类似inline-block,不论是块元素还是行内元素,都可以直接设置宽高

.box {

width: 50px;

height: 50px;

background: green;

/*据对定位,默认相对于body*/

position: absolute;

top: 50px;

left: 50px;

/*设置display失效了*/

10  display: inline;

11 }

 

压盖现象

元素设置了绝对定位,此时会有压盖现象,后面的元素会显示在前面的元素上面

后面还会继续讨论压盖现象

 

绝对定位居中

我们可以根据绝对定位的特性让元素居中

绝对定位是相对于元素左上角的一点进行定位的,我们可以将其设置成50%,此时该元素的左上角一点将在页面中心,我们通过margin向上和向左平移宽高的一半,既可以实现元素的居中(兼容块元素和行内元素,绝对定位不会区分块元素和行内元素)

 

.box {

position: absolute;

top: 50%;

left: 50%;

margin: -100px -150px;

width: 300px;

height: 200px;

background: green;

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值