Css规范整理:1、布局大纲

简介: CSS 2.1中,一个盒可能会根据三种定位方案来布局: 常规流 CSS 2.1中,常规流包括块级盒的块格式化(block formatting),行内级盒的行内格式化和块级与行内级盒的相对定位 浮动在浮动模型中,盒先根据常规流来放置,然后从常规流中取出来并尽可能远地向左或向右移动。

布局大纲

CSS 2.1中,一个盒可能会根据三种定位方案来布局:

  1. 常规流 CSS 2.1中,常规流包括块级盒的块格式化(block formatting),行内级盒的行内格式化和块级与行内级盒的相对定位
  2. 浮动在浮动模型中,盒先根据常规流来放置,然后从常规流中取出来并尽可能远地向左或向右移动。其它内容可能沿着浮动(盒)的一侧排列(Content may flow along the side of a float)
  3. 绝对定位 在绝对定位模型中,一个盒会从常规流中全部移除(它不会影响后面的兄弟元素)并根据包含块确定位置

如果一个元素是浮动的,绝对定位的或者是根元素,它就叫流外(out of flow)(元素)。如果一个元素不是流外的,就叫流内(in-flow)(元素)。在常规流布局中有清楚的解释。

选择定位方案: position属性

position属性决定了用哪种CSS 2.1定位算法来计算盒的位置

  • position
    • Value: static | relative | absolute | fixed | inherit
    • Initial: static
    • Applies to: 所有元素
    • Inherited: no
    • Percentages: N/A
    • Media: visual
    • Computed value: 与指定值相同

属性值的含义如下:

  • static(常规流)

    盒是个常规盒,根据常规流布局。top、left、right、bottom属性失效

  • relative(相对定位)

    盒的位置是根据常规流计算的(被称为常规流中的位置),然后盒相对于其常规位置偏移。当盒B为相对定位时,后面的盒的位置仍按照B没有偏移量来计算。table-row-group,table-header-group,table-footer-group,table-row,table-column-group,table-column,table-cell和table-caption元素上'position:relative'的效果是未定义的

  • absolute(绝对定位)

    盒的位置(及可能的大小)由top、left、right、bottom属性指定,这些属性指定了相对于盒的包含块的偏移量。绝对定位的盒脱离了常规流,意味着它们不会影响后面兄弟元素的布局,而且,虽然绝对定位盒有外边距,但它们不会与任何其它外边距合并。

  • fixed(绝对定位)

    除了盒相对于某些参照(reference)是fixed之外,盒的位置根据absolute模型来计算。如同absolute模型一样,盒的外边距不会与任何其它外边距合并。媒体类型为handheld,projection,screen,tty和tv的情况下,该盒相对于**(视口viewport)固定,并且滚动时不会移动。媒体类型为print时,该盒在每一页都会呈现,并且相对于页盒(page box)固定,即使页面是通过一个(视口viewport)**看到的(例如,打印预览时)。

用户代理可以把根元素的position视为static

9.3.2 盒偏移:top、left、right、bottom

如果元素的position属性有一个除static外的值,就说它是定位元素(positioned)。定位的元素生成定位的盒(positioned boxes),根据以下4个属性布局:

  • top

    • Value:<length> | <百分比> | auto | inherit

    • 初始值:auto

    • 适用元素:定位元素

    • 继承性:无

    • 百分比:参照包含块的高度

    • Media:visual

    • 计算值:如果指定了一个长度,就是对应的绝对长度;如果指定了一个百分比,就是指定的值;否则就是'auto'

      该属性指定了一个绝对定位的盒的上外边距边界离盒的包含块的上边界有多远。对于相对定位的盒,偏移量参照该盒自身的上边界(例如,该盒在常规流中给定了一个位置,然后根据这些属性从原位置偏移)

  • right

    • Value:<length> | <百分比> | auto | inherit

    • 初始值:auto

    • 适用元素:定位元素

    • 继承性:无

    • 百分比:参照包含块的宽度

    • Media:visual

    • 计算值:如果指定了一个长度,就是对应的绝对长度;如果指定了一个百分比,就是指定的值;否则就是'auto'

      top类似,只是指定了一个盒的右外边距边界离该盒包含块的右边界有多远。对于相对定位的盒,偏移量参照该盒自身的右边界

  • bottom

    • Value:<length> | <百分比> | auto | inherit

    • 初始值:auto

    • 适用元素:定位元素

    • 继承性:无

    • 百分比:参照包含块的高度

    • Media:visual

    • 计算值:如果指定了一个长度,就是对应的绝对长度;如果指定了一个百分比,就是指定的值;否则就是'auto'

      top类似,只是指定了一个盒的右外边距边界离该盒包含块的下边界有多远。对于相对定位的盒,偏移量参照该盒自身的下边界

  • left

    • Value:<length> | <百分比> | auto | inherit
    • 初始值:auto
    • 适用元素:定位元素
    • 继承性:无
    • 百分比:参照包含块的高度
    • Media:visual
    • 计算值:如果指定了一个长度,就是对应的绝对长度;如果指定了一个百分比,就是指定的值;否则就是'auto'

    top类似,只是指定了一个盒的左外边距边界离该盒包含块的左边界有多远。对于相对定位的盒,偏移量参照该盒自身的左边界

这4个属性的值含义如下:

  • <length> 偏移量是到参照边的固定距离。允许负值

  • <percentage> 偏移量是包含块宽度(对于left 或者 right)或高度(对于top 或者 bottom)的百分比。允许负值

  • auto 对于非替换元素,该值的效果取决于那些相关的值也是'auto'的属性。非替换元素的详细情况,见绝对定位的width和height章节。对于替换元素,该值的影响只取决于替换内容的固有尺寸。替换元素的详细情况,见绝对定位的width和height章节。

'display','position'与'float'之间的关系

这3个属性影响盒的生成及布局—'display''position''float' —间的相互影响如下:

  1. 如果'display'值为'none',那么'position''float'不会生效。此时,元素不生成盒
  2. 否则,如果'position'值为'absolute'或者'fixed',盒就是绝对定位的。'float'的计算值置为'none'。并且display根据下表来设置。盒的位置将由'top''right''bottom''left'属性以及盒的包含块决定
  3. 否则,如果'float'值不为'none',那么盒是浮动的,'display'根据下表来设置
  4. 否则,如果该元素是根元素,'display'根据下表来设置,但指定值'list-item'应该变成计算值'block'还是'list-item',在CSS 2.1中是未定义的
  5. 否则,其它'display'属性值(计算值)就用指定值
Specified value Computed value
inline-table table
inline, table-row-group, table-column, table-column-group, table-header-group, table-footer-group, table-row, table-cell, table-caption, inline-block block
其它 与指定值相同

下一章:Css盒模型

原文发布时间为:2018年02月10日
原文作者:雕刻零碎 

本文来源:开源中国 如需转载请联系原作者


目录
相关文章
|
11天前
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。
|
5天前
|
前端开发 容器
实现CSS品字布局
【10月更文挑战第27天】
|
1月前
|
前端开发 容器
使用 CSS Grid 布局实现响应式设计
【10月更文挑战第1天】使用 CSS Grid 布局实现响应式设计
45 4
|
1月前
|
前端开发 容器
前端技术分享:利用CSS Grid布局实现响应式设计
【10月更文挑战第1天】前端技术分享:利用CSS Grid布局实现响应式设计
|
2月前
|
前端开发 容器
css布局-弹性布局学习笔记
这篇文章是关于CSS弹性布局的学习笔记,详细介绍了flex容器和元素的相关属性,包括flex-direction、flex-wrap、flex-flow、justify-content、align-items、align-content以及order、flex-grow、flex-shrink、flex-basis、flex和align-self等,解释了这些属性在弹性盒子布局中的作用和用法。
|
2月前
|
缓存 前端开发
css内部样式和外部样式的性能比较和使用规范
CSS 的内部样式和外部样式各有优缺点,适用于不同场景。
|
2月前
|
JavaScript 前端开发
网页前端课程设计-【模仿】香港中文大学官网,轮播图及div+css布局,js的dom操作
这篇文章介绍了如何模仿香港中文大学官网进行网页前端课程设计,包括使用div+css布局、js的DOM操作以及实现轮播图等技术细节。
|
3月前
|
前端开发 安全 容器
CSS如何优雅实现卡片多行排列布局?
【8月更文挑战第24天】CSS如何优雅实现卡片多行排列布局?
99 3
|
3月前
|
前端开发 开发者 容器
探索现代Web开发中的CSS Grid布局技术
【8月更文挑战第29天】在数字时代的浪潮中,网页设计不断进化以适应日新月异的用户需求。CSS Grid布局技术作为一项革新性的前端工具,为设计师和开发者提供了前所未有的布局能力。本文旨在通过深入浅出的方式介绍CSS Grid的核心概念、基本用法以及在实际项目中的应用,帮助读者快速掌握这一强大的网页布局工具。
52 3
|
3月前
|
前端开发 开发者 容器
【Web布局的革命】探索CSS Grid栅格系统,打造未来网页设计!
【8月更文挑战第25天】在网页设计领域,布局至关重要。传统的布局方法难以满足复杂需求,CSS Grid 栅格系统因此诞生。它是一种二维布局模式,能直接控制行和列,简化复杂网格的设计。通过定义 `display: grid;` 创建网格容器,并利用 `grid-template-columns` 和 `grid-template-rows` 设置行列尺寸,轻松实现响应式布局。此外,CSS Grid 支持高级功能,如网格区域划分和对齐设置,极大提升了布局的灵活性和创意空间。随着浏览器兼容性的增强,CSS Grid 必将成为未来网页设计的关键技术之一。
64 1