浮动和定位(二)

《CSS 权威指南(第三版)》阅读随笔

定位

利用定位,可以准确地定义元素框相对于其正常位置应该出现在哪里,或者相对于父元素、另一个元素或者浏览器窗口的位置。

基本概念

定位类型

在 CSS 中使用 position 属性来控制元素定位,常用的定位有:

  • static:元素框正常生成;
  • relative:元素框偏移一定距离;
  • absolute:元素框会从文档流中删除,并相对于其包含块定位;
  • fixed:类似于 absolute,不过其包含块为视窗。
包含块

上节提到,浮动元素的包含块是其最近的块级祖先元素,对于定位元素来说,情况要稍微复杂一些:

  • 根元素(html 或者 body 视代理不同有所区别)也称为初始包含块;
  • 对于非根元素,当 position 值为 static 或者 relative 时,其包含块由最近的块级框、表单元格和行内块祖先框的内容边界构成;
  • 对于非根元素,当 position 值为 absolute 时,其包含块为最近的 position 不是 static 的祖先元素。
偏移属性

针对于 relative、absolute 和 fixed 等三种定位机制,可以使用 top、right、bottom、left 等偏移属性来描述元素相对于其包含块的偏移量,其中偏移量可以是百分比也可以是单位数值。

.center { color:red;position: absolute;top:50%;right:0;bottom:0;left:50%; } /* 一个相对于包含块,位于右下角的红色方块 */

宽度和高度

设置宽高

在使用偏移量定位元素时,即使不设置宽高,也会隐含生成,相当于默认的 auto 值。当然在设置偏移量的同时,仍然可以自定义宽高,此时的宽高可能超出其包含块。

限制宽高

如果希望对元素的宽高加以限制,可以使用 min-height、min-width、max-height、max-width 等属性。顾名思义,这些属性可以在设置元素的宽高后,仍对其进行最大、最小方面的限制。例如使用百分比设置了宽度以后,再通过单位距离来限制宽度,反之亦然。

内容溢出和裁剪

溢出

当元素内容超过元素本身的大小时,就会溢出元素本身,此时需要根据实际情况,采用不同策略来应对溢出。在 CSS 中可以使用 overflow 属性来控制溢出行为:

  • visible:对于溢出的内容照常展示;
  • hidden:隐藏溢出部分;
  • scroll:对于超出元素的部分,可以通过加滚动条的方式来滚动展现;
  • auto:让代理决定如何控制溢出;
内容裁剪

使用 CSS 的 clip 属性可以自定义裁剪内容区域,并以矩形方式进行裁剪:

.center { clip: reat(10px,40px,40px,10px;) }

其中 reat 传入的四个参数值,前两个参数代表待裁剪矩形左上角距离包含块上边界和左边界的距离,后两个参数代表待裁剪区域右下角距离包含块上边界和左边界的距离,且只能设置单位数值,不可用百分比。

元素可见性

visibility 属性可以控制元素是否可见:

  • visible:可见;
  • hidden:隐藏,但仍旧在文档流中,占据一定位置;
  • collapse:用在表格中时,此值可删除一行或者一列但不影响元素布局;除此之外,相当于 hidden 值。
    visibility 属性是可继承的,且不可见父元素中可以包含可见子元素。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 浮动 CSS允许浮动任何元素。 浮动元素 首先,会以某种方式将浮动元素从文档的正常流中删除,不过它还是会影响布局。...
    exialym阅读 1,293评论 0 6
  • 一、文档流的概念指什么?有哪种方式可以让元素脱离文档流? 1、文档流指的是元素在排列布局中所占用的位置,具体的说是...
    鸿鹄飞天阅读 837评论 0 0
  • 一、文档流的概念指什么?有哪种方式可以让元素脱离文档流? 文档流:将窗体自上而下分成一行行, 并在每行中按从左至右...
    hk_kh阅读 638评论 0 0
  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位...
    zx9426阅读 1,053评论 0 2
  • display:float 浮动详解 在我刚开始学习CSS的时候,看到浮动这个概念,只知道是让一个盒子向左或向右移...
    闰土在流浪阅读 1,443评论 0 6

友情链接更多精彩内容