博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于CSS:absolute定位
阅读量:6186 次
发布时间:2019-06-21

本文共 1976 字,大约阅读时间需要 6 分钟。

前言

虽然会脱离文档流,但是不能排斥absolute定位,且其实在太强大

正文

先引用w3c对于 containing-block的说明

The position and size of an element’s box(es) are sometimes computed relative to a certain rectangle, called the containing block of the element. The containing block of a  or  element is defined in the Box Model . The containing block of a  element is the same as for a  element. For  and , it is defined as follows:

  1. If the element has , the containing block is established by the  in the case of continuous media or the page area in the case of paged media.
  2. If the element has , the containing block is established by the nearest ancestor with a  other than , in the following way
  1. In the case that the ancestor is block-level, the containing block is formed by the padding edge of the ancestor.
  2. In the case that the ancestor is inline-level, the containing block depends on the direction 1. If the  is , the top and left of the containing block are the top and left content edges of the first box generated by the ancestor, and the bottom and right are the bottom and right content edges of the last box of the ancestor. 2. If the  is , the top and right are the top and right edges of the first box generated by the ancestor, and the bottom and left are the bottom and left content edges of the last box of the ancestor.

即:当当前元素定位为absolute时,标准会赋予改元素一个 containing-block而该block的宽度和高度是由top、left、right、bottom来决定的

而absolute定位时,如果该元素显式设置了width和left和right则只会应用left和width,right会被忽略,同理应用于top、bottom、height

但是上述情况的一些应用会令人产生些思考: 如下代码:

  
复制代码

结果是:

观察结果:

  • 没有为children设置height属性情况下获取到了高度
  • 在parent左边开始往右80px的区域内做到了水平居中(margin:auto) 说明什么呢: 看下parent图:

其实根据开头的引用,绿色区域其实就是containing-block的大小,而我们设置了width则width小于了containing-block宽度,取自身宽度,然后再margin:auto自然就居中了。

说白了就是:containing-block 相当于在元素外围套了层div,且元素的左上角顶住containing-block的左上角。

说多了很难理解,自己多改改代码自然就有深刻体会了。

比如自行运行下面代码:

  
复制代码

结尾

至此前置知识准备完毕,这篇是自己查了stackoverflow和w3c标准得出的结论,对错与否不做保证,目前为止还与自己的认知没有出入。

转载于:https://juejin.im/post/5bff5f89e51d4524f35d07f7

你可能感兴趣的文章
android4.0.3 编译lichee 报错dhd-cdc-sdmmc-gpl-3.0.8问题
查看>>
Junit 执行保存数据,数据无法保存,控制台不报错
查看>>
crc16 - 产生Modbus RTU格式的CRC码
查看>>
招聘又来了,这次推荐有奖哦
查看>>
我的友情链接
查看>>
Linux下ssh秘钥方式登录远程服务器
查看>>
golang test测试使用
查看>>
【Apache学习】编译安装httpd2.4 含傻瓜版自动安装脚本
查看>>
Python classmethod(类方法) 和 类属性 静态方法(缺少)
查看>>
我的友情链接
查看>>
vsftpd的基于pam_mysql的虚拟用户配置示例
查看>>
MYSQL数据库迁移到ORACLE数据库
查看>>
C语言中运算符的优先级排序
查看>>
nodejs tutorial - 5 单元测试 2015-3-24
查看>>
ubuntu下未获得锁问题
查看>>
我的友情链接
查看>>
前端面试题整理
查看>>
odoo 10 的 两个模块分析和细微改动
查看>>
Azure上的Web Apps极其相关服务
查看>>
HP iLo licenses
查看>>