CSS2.1SPEC:视觉格式化模型之width属性详解(下)
我们知道,元素在设置了float属性之后,就具有了“收缩性”,此时在计算width值的时候也有一个特殊的算法,首先看CSS标准中的计算规则:
我们有如下代码:
<div class="container">
<div style="float: left;border: 1px solid #f00;">
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
</div>
</div>
我们知道,英文在不出现空格的情况下是不允许换行的,而且这里的这个“单词”长度肯定超出了500px的长度,我们看一下效果:
我们对DEMO1中的代码进行下改动,也就是把DEMO1中的"单词"加几个空格:
<div class="container">
<div style="float: left;border: 1px solid #f00;">
ddddddddddddddddddd dddddddddddd ddddddddddd dddddddddddddddddddddddddddddddddddddddddddddd
</div>
</div>
这样一来,就变成了一句英文句子了,并且在空白处时候允许换行,我们看最终的显示效果:
把这个几个值带入公式计算,也不难得出最终的宽度值就是available-width,即500px
首先,margin-left、margin-right的auto值将被设为0。
<div class="container">
<div style="width: 100px;height: 100px;background: #34538b;">
static posotion演示
</div>
</div>
计算left和width的值。[1]
[2]:如果left和right都是auto,但是width不是auto,那么如果包含块的direction属性为ltr,则把left置为"static position"的位置,然后再根据等式求right值;反之,则把right置为"static position"的位置,然后再根据等式求left值。
[3]:如果width和right是auto,那么首先根据"shrink-to-fit"算法计算width值,然后再根据等式计算right值
[4]:标准原文中的4,5,6条规则其实可以归结为一条,即如果left,right和width只有一个auto值,那么直接根据等式计算auto值。
<div class="container">
<div style=height: 100px;background: #34538b;position: absolute">
绝对定位演示
</div>
</div>
在demo4中,我们定义了一个绝对定位的元素,并且width,left和margin都是默认的auto值,可以看到元素的width是按照"shrink-to-fit"得出的,而left值被设置为了static position的位置,这里其实就是包含块的padding-left:10px。置于right值,虽然浏览器的调试工具并没有给出具体right值的used value,但还是有理由相信浏览器会根据标准中的规则计算相应的值。
<div class="container">
<div style="width:100px;height: 100px;background: #34538b;position: absolute;left: 0px;right: 0px;margin-left: auto;margin-right: auto;">
绝对定位演示
</div>
</div>
<div class="container">
<div style="width:100px;height: 100px;background: #34538b;position: absolute;left: 0px;right: 0px;margin-left: auto;margin-right: 0px;">
绝对定位演示
</div>
</div>
我们把margin-right置为0px,而把margin-left置为auto,显示效果如下:
<div class="container">
<div style="height: 100px;background: #34538b;max-width: 400px;">
max-width演示
</div>
</div>
我们为div定义max-width为400px,如果我们没有定义这个属性的话,由于width值在这里是auto,因此width值应该和包含块的content edge宽度相同,即为500px,但由于我们限定了max-width,并且500px>400px,所以最终width值的使用值就为400px,再把这个值带入到2.2.3节的规则中,就形成了一个过约束的条件,因此忽略margin-right值根等式重新计算,最终得到margin-right:100px。
CSS2.1SPEC:视觉格式化模型之width属性详解(下)的更多相关文章
- CSS2.1SPEC:视觉格式化模型之width属性详解(上)
在介绍了包含块之后,CSS2.1标准中介绍了width属性和height属性,这两个属性在我们的页面布局中也发挥着重要的作用.在盒模型中,width和height包围了一个框的内容区域(content ...
- CSS2.1SPEC:视觉格式化模型之包含块
原汁原味的才是最有味道的,在阅读CSS标准时对这一点的体会更加深刻了,阅读文档后的一大感觉就是很多看上去理所应当的样式表现也都有了对应的支持机制.本文首先从包含块写起,一方面总结标准中相应的阐述,并且 ...
- CSS学习笔记——视觉格式化模型 visual formatting model
CSS 视觉格式化模型(visual formatting model)是用来处理文档并将它显示在视觉媒体上的机制.他有一套既定的规则(也就是W3C规范),规定了浏览器该怎么处理每一个盒子.以下内容翻 ...
- CSS中的视觉格式化模型
视觉格式化模型 1. 简介 在视觉格式化模型中,文档树中的每个元素都将会根据盒模型产生零到多个盒子.这些盒子的布局由如下因素决定: 盒子的尺寸和类型 定位策略(正常文档流,浮动或者绝对定位) 和文档树 ...
- CSS视觉格式化模型
CSS视觉格式化模型(visual formatting model)是用来处理文档并将它显示在视觉媒体上的机制.这是CSS 2.1的一个基础概念.视觉格式化模型根据CSS盒模型为文档的每个元素生成0 ...
- 大前端学习笔记整理【二】CSS视觉格式化模型
1. 概念 在视觉格式化模型中,文档树中的每个元素都将会根据盒模型产生零到多个盒子.这些盒子的布局由如下因素决定: 盒子的尺寸和类型 定位策略(正常文档流,浮动或者绝对定位) 和文档树中其他元素的关系 ...
- Css盒模型属性详解(margin和padding)
Css盒模型属性详解(margin和padding) 大家好,我是逆战班的一名学员,今天我来给大家分享一下关于盒模型的知识! 关于盒模型的属性详解及用法 盒模型基本属性有两个:padding和marg ...
- 行盒(line box)垂直方向的属性详解:从font-size、line-height到vertical-align
视觉格式化模型 在一个文档中,每个元素都被表示为0.1或多个矩形的盒子.确定这些盒子的尺寸, 属性 --- 像它的颜色,背景,边框方面 --- 和位置是渲染引擎的目标.① 在CSS中,使用标准盒模型描 ...
- border-sizing属性详解和应用
box-sizing用于更改用于计算元素宽度和高度的默认的 CSS 盒子模型.它有content-box.border-box和inherit三种取值.inherit指的是从父元素继承box-sizi ...
随机推荐
- linux的ssh服务
1.检查是否安装ssh > rpm -qa|grep ssh 2.安装ssh服务 > yum install ssh 配置 /etc/ssh/sshd_config 端口 22 3.启动s ...
- struts框架问题五之向值栈中保存数据
5. 问题五: 向值栈保存数据 (主要针对root栈) > valueStack.push(Object obj); * push方法的底层调用root对象的push方法(把元素添加到0位置) ...
- centos7之iptables与firewalld
保障数据的安全性是继保障数据的可用性之后最为重要的一项工作.防火墙作为公网 与内网之间的保护屏障,在保障数据的安全性方面起着至关重要的作用. firewalld与iptables iptables f ...
- Eloquent Observer 的小坑
前言 最近开发新的项目不是基于完整的 laravel 框架,框架是基于 laravel ORM 的简单MVC模式.随着项目的成熟和业务需求,需要引入事件机制.简单地浏览了一下 symfony.lara ...
- 什么是adb命令?以及如果高效使用他们?
接下来 我会为大家讲解 最通俗易懂的adb命令 希望大家能够喜欢...
- 2018.10.14 loj#6011. 「网络流 24 题」运输问题(费用流)
传送门 费用流入门题. 直接按照题意模拟. 把货物的数量当做容量建边. 然后跑一次最小费用流和最大费用流就行了. 代码: #include<bits/stdc++.h> #define N ...
- linux常见命令整理
Linux管理文件和目录的命令 命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touc ...
- 2、WindowManager源码分析--最后一战
在最后一站中,几乎所有的UI界面都是这个WindowManager管理的,那么他是如何调度的呢?我们来看看一些项目中的界面. 上面有登陆界面,专门管理登陆.战斗界面,用户界面,专门管理用户属性等等. ...
- MySQL性能调优与架构设计——第13章 可扩展性设计之 MySQL Replication
第13章 可扩展性设计之 MySQL Replication 前言: MySQL Replication 是 MySQL 非常有特色的一个功能,他能够将一个 MySQL Server 的 Instan ...
- (线段树 区间合并更新)Tunnel Warfare --hdu --1540
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1540 http://acm.hust.edu.cn/vjudge/contest/view.action ...