快速重置表单元素

原始的 button 按钮重置

button {
  background: none;
  border: none;
  color: inherit;
  font: inherit;
  outline: none;
  padding: 0;
}

只需要这样就可以(inputtextarea)

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;
}

下面一种情形也是非常常见的一个情景。

页面存在一个 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>