We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CSS 的属性 vertical-align 用来指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方式。
vertical-align
不能用它垂直对齐 块级元素。
块级元素
/* Keyword values */ vertical-align: baseline; vertical-align: sub; vertical-align: super; vertical-align: text-top; vertical-align: text-bottom; vertical-align: middle; vertical-align: top; vertical-align: bottom; /* <length> values */ vertical-align: 10em; vertical-align: 4px; /* <percentage> values */ vertical-align: 20%; /* Global values */ vertical-align: inherit; vertical-align: initial; vertical-align: unset;
基线的位置并不是固定的:
在文本之类内联元素中,基线是字符x的下边缘位置
在像img元素中基线就是下边缘。
在inline-block元素中,也分两种情况:
如果该元素中有内联元素,基线就是最后一行内联元素的基线。
如果该元素内没有内联元素或者overflow不是visible,其基线就是margin的地边缘。
baseline:默认值,就是基线对齐
sub:元素的基线向下移
super:元素的基线向上移
具体的长度值
是正值基线就向上移动,如果是负值基线向下移动。
<div style="background: #398dee"> <span style="vertical-align: -10px">负值效果</span> x <span style="vertical-align: 10px">正向移动10px</span> </div>
<div style="background: #398dee;line-height: 50px"> <span style="vertical-align: -10%">负值效果</span> x <span style="vertical-align: 10%;">正向移动10px</span> </div>
middle并不是我们理解的居中,而是近似。而且会受字体大小的影响偏移。
众所周知,flex 是 flex-grow、flex-shrink、flex-basis的缩写。其取值可以考虑以下情况:
flex-grow
flex-shrink
flex-basis
flex 的默认值是以上三个属性值的组合。假设以上三个属性同样取默认值,则 flex 的默认值是 0 1 auto。 同理,如下是等同的:
.item {flex: 2333 3222 234px;} .item { flex-grow: 2333; flex-shrink: 3222; flex-basis: 234px; }
当 flex 取值为 none,则计算值为 0 0 auto,如下是等同的:
.item {flex: none;} .item { flex-grow: 0; flex-shrink: 0; flex-basis: auto; }
当 flex 取值为 auto,则计算值为 1 1 auto,如下是等同的:
.item {flex: auto;} .item { flex-grow: 1; flex-shrink: 1; flex-basis: auto; }
当 flex 取值为一个非负数字,则该数字为 flex-grow 值,flex-shrink 取 1,flex-basis 取 0%,如下是等同的:
.item {flex: 1;} .item { flex-grow: 1; flex-shrink: 1; flex-basis: 0%; }
当 flex 取值为一个长度或百分比,则视为 flex-basis 值,flex-grow 取 1,flex-shrink 取 1,有如下等同情况(注意 0% 是一个百分比而不是一个非负数字):
.item-1 {flex: 0%;} .item-1 { flex-grow: 1; flex-shrink: 1; flex-basis: 0%; } .item-2 {flex: 24px;} .item-1 { flex-grow: 1; flex-shrink: 1; flex-basis: 24px; }
当 flex 取值为两个非负数字,则分别视为 flex-grow 和 flex-shrink 的值,flex-basis 取 0%,如下是等同的:
.item {flex: 2 3;} .item { flex-grow: 2; flex-shrink: 3; flex-basis: 0%; }
当 flex 取值为一个非负数字和一个长度或百分比,则分别视为 flex-grow 和 flex-basis 的值,flex-shrink 取 1,如下是等同的:
.item {flex: 2333 3222px;} .item { flex-grow: 2333; flex-shrink: 1; flex-basis: 3222px; }
flex-basis 规定的是子元素的基准值。所以是否溢出的计算与此属性息息相关。flex-basis 规定的范围取决于 box-sizing。这里主要讨论以下 flex-basis 的取值情况:
auto:首先检索该子元素的主尺寸,如果主尺寸不为 auto,则使用值采取主尺寸之值;如果也是 auto,则使用值为 content。
content:指根据该子元素的内容自动布局。有的用户代理没有实现取 content 值,等效的替代方案是 flex-basis 和主尺寸都取 auto。
百分比:根据其包含块(即伸缩父容器)的主尺寸计算。如果包含块的主尺寸未定义(即父容器的主尺寸取决于子元素),则计算结果和设为 auto 一样。
举一个不同的值之间的区别:
<div class="parent"> <div class="item-1"></div> <div class="item-2"></div> <div class="item-3"></div> </div> <style type="text/css"> .parent { display: flex; width: 600px; } .parent > div { height: 100px; } .item-1 { width: 140px; flex: 2 1 0%; background: blue; } .item-2 { width: 100px; flex: 2 1 auto; background: darkblue; } .item-3 { flex: 1 1 200px; background: lightblue; } </style>
主轴上父容器总尺寸为 600px
子元素的总基准值是:0% + auto + 200px = 300px,其中
0% + auto + 200px = 300px
600px - 300px = 300px
伸缩放大系数之和为: 2 + 2 + 1 = 5
剩余空间分配如下:
item-1 和 item-2 各分配 2/5,各得 120px
item-3 分配 1/5,得 60px 各项目最终宽度为:
item-1 = 0% + 120px = 120px
item-2 = auto + 120px = 220px
item-3 = 200px + 60px = 260px 当 item-1 基准值取 0% 的时候,是把该项目视为零尺寸的,故即便声明其尺寸为 140px,也并没有什么用,形同虚设
而 item-2 基准值取 auto 的时候,根据规则基准值使用值是主尺寸值即 100px,故这 100px 不会纳入剩余空间
The text was updated successfully, but these errors were encountered:
No branches or pull requests
1.vertical-align
2.flex: 0 1 auto
vertical-align
CSS 的属性
vertical-align
用来指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方式。语法
设置其值,对准基线
基线的位置并不是固定的:
在文本之类内联元素中,基线是字符x的下边缘位置
在像img元素中基线就是下边缘。
在inline-block元素中,也分两种情况:
如果该元素中有内联元素,基线就是最后一行内联元素的基线。
如果该元素内没有内联元素或者overflow不是visible,其基线就是margin的地边缘。
基线相关的设置:
baseline:默认值,就是基线对齐
sub:元素的基线向下移
super:元素的基线向上移
具体的长度值
是正值基线就向上移动,如果是负值基线向下移动。
flex
众所周知,flex 是
flex-grow
、flex-shrink
、flex-basis
的缩写。其取值可以考虑以下情况:flex 的默认值是以上三个属性值的组合。假设以上三个属性同样取默认值,则 flex 的默认值是 0 1 auto。
同理,如下是等同的:
当 flex 取值为 none,则计算值为 0 0 auto,如下是等同的:
当 flex 取值为 auto,则计算值为 1 1 auto,如下是等同的:
当 flex 取值为一个非负数字,则该数字为 flex-grow 值,flex-shrink 取 1,flex-basis 取 0%,如下是等同的:
当 flex 取值为一个长度或百分比,则视为 flex-basis 值,flex-grow 取 1,flex-shrink 取 1,有如下等同情况(注意 0% 是一个百分比而不是一个非负数字):
当 flex 取值为两个非负数字,则分别视为 flex-grow 和 flex-shrink 的值,flex-basis 取 0%,如下是等同的:
当 flex 取值为一个非负数字和一个长度或百分比,则分别视为 flex-grow 和 flex-basis 的值,flex-shrink 取 1,如下是等同的:
flex-basis 规定的是子元素的基准值。所以是否溢出的计算与此属性息息相关。flex-basis 规定的范围取决于 box-sizing。这里主要讨论以下 flex-basis 的取值情况:
auto:首先检索该子元素的主尺寸,如果主尺寸不为 auto,则使用值采取主尺寸之值;如果也是 auto,则使用值为 content。
content:指根据该子元素的内容自动布局。有的用户代理没有实现取 content 值,等效的替代方案是 flex-basis 和主尺寸都取 auto。
百分比:根据其包含块(即伸缩父容器)的主尺寸计算。如果包含块的主尺寸未定义(即父容器的主尺寸取决于子元素),则计算结果和设为 auto 一样。
举一个不同的值之间的区别:
主轴上父容器总尺寸为 600px
子元素的总基准值是:
0% + auto + 200px = 300px
,其中故剩余空间为
600px - 300px = 300px
伸缩放大系数之和为: 2 + 2 + 1 = 5
剩余空间分配如下:
item-1 和 item-2 各分配 2/5,各得 120px
item-3 分配 1/5,得 60px
各项目最终宽度为:
item-1 = 0% + 120px = 120px
item-2 = auto + 120px = 220px
item-3 = 200px + 60px = 260px
当 item-1 基准值取 0% 的时候,是把该项目视为零尺寸的,故即便声明其尺寸为 140px,也并没有什么用,形同虚设
而 item-2 基准值取 auto 的时候,根据规则基准值使用值是主尺寸值即 100px,故这 100px 不会纳入剩余空间
The text was updated successfully, but these errors were encountered: