快速重置表单元素
原始的 button
按钮重置
button {
background: none;
border: none;
color: inherit;
font: inherit;
outline: none;
padding: 0;
}
只需要这样就可以(input
、textarea
)
button {
all: unset;
}
文本省略号显示
文本省略号是非常常见的需求,而省略号展示又通常分为单行和多行俩种情况。
单行:
div {
overflow: hidden; /* 规定超出内容宽度的元素隐藏 */
white-space: nowrap; /* 规定文本是否折行 */
text-overflow: ellipsis; /* 规定超出的内容文本省略号显示,通常跟上面的属性连用,因为没有上面的属性不会触发超出规定的内容 */
}
多行(能主动控制行数,这里设置的超出 4 行显示省略号):
div {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box; /* 将对象作为弹性伸缩盒子模型显示 */
-webkit-line-clamp: 4; /* 控制最多显示几行 */
-webkit-box-orient: vertical; /* 设置或检索伸缩盒对象的子元素的排列方式 */
}
问题:flex 布局下子元素单行文本不显示省略号。
解决:在父元素上设置 overflow: hidden
。
<style>
.card {
display: flex;
}
.avatar {
width: 100px;
height: 100px;
background-color: #eee;
flex-shrink: 0;
}
.content {
flex: 1;
overflow: hidden;
}
.ellipsis {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
</style>
<body>
<div class="card">
<div class="avatar"></div>
<div class="content">
<div class="ellipsis">这是一段最多显示一行的文字,多余的内容会被省略</div>
</div>
</div>
</body>
设置文本两端对齐
p {
text-align-last: justify; /* 这是关键属性 */
}
规定图像展示方式
显示图片的时候会遇到这种问题,对面返回的图片宽高比例是不一样的。但是设置的容器大小是一样的,这个时候需要让图片保持比例最大填充容器。
object-fit: cover | contain | fill | scale-down | none
1px 边框
为元素添加 Retina 屏幕下的 1px 边框(即 hairline),基于伪类 transform 实现。
.hairline {
position: relative;
}
.hairline::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
top: -50%;
right: -50%;
bottom: -50%;
left: -50%;
border: 0 solid #ebedf0;
transform: scale(0.5);
border-top-width: 1px;
}
Sticky Footer
下面一种情形也是非常常见的一个情景。
页面存在一个 footer 页脚部分,如果整个页面的内容高度小于视窗的高度,则 footer 固定在视窗底部,如果整个页面的内容高度大于视窗的高度,则 footer 正常流排布(也就是需要滚动到底部才能看到 footer)。
看看效果:
代码实现:
<div class="container">
<div class="content"></div>
<div class="footer"></div>
</div>
.container {
min-height: 100vh;
display: flex;
flex-direction: column;
}
.footer {
margin-top: auto;
flex-shrink: 0;
height: 60px;
background-color: blue;
}
毛玻璃效果 backdrop-filter
backdrop-filter 属性可以让你为一个元素后面区域添加图形效果(如模糊或颜色偏移)。
img {
display: block;
width: 400px;
}
.container {
position: relative;
display: inline-block;
}
.mask {
position: absolute;
top: 0;
left: 0;
width: 50%;
height: 100%;
-webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px);
}
<div class="container">
<img src="https://cdn9-banquan.ituchong.com/weili/smh/905571202756378775.webp" />
<div class="mask"></div>
</div>