block
: 有宽高, 不在同一行;inline-block
: 有宽高,在同一行;(父节点上使用 inline-block 会自动获取子节点的宽度
)inline
: 无宽高, 在同一行;Here is demo:
<html lang="en"><style>li {display: inline-block;background: red;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;width: 30px}.demo {width: 90px;}.clearfix {overflow: visible;}</style><body><ul class="demo"><li>testtest</li><li>testtest</li><li>testtest</li><li>testtest</li><li>testtest</li><li>testtest</li></ul></body></html>
I'm confused why is it, I want to use overflow: hidden and not expect the strange gap, how can I do?
原因是因为代码间的标签符号之间包含空格,浏览器也会处理这部分占位,因此解决方法如下:
The solve way is to add line-height: 0
or font-size: 0
to the class demo and add line-height: 12px
or font-size: 12px
to the tag li.
position
属性值为非 static
祖先元素进行定位, 直到 body;transform
, perspective
, filter
时, fixed 定位会失效;使用 sticky 布局有一些限制:
<div><div style="position: sticky; top: 20px; background: pink; margin-top: 50px;">Header</div><div style="height: 1000px">Content</div> // 比如这一行不可或缺</div>
margin
的百分比值是以父元素的宽度作为解析基准的。
.demo {table-layout: fixed; /* 固定表格布局算法 */width: 100%;}
.footer {padding: 1em calc(100% - 450px); /* 暗藏内容宽度为 900 px */background: #ccc;}