关于前端:视觉还原小技巧CSS-实现角标效果

38次阅读

共计 2567 个字符,预计需要花费 7 分钟才能阅读完成。

欢送关注微信公众号:前端侦探

最近在我的项目中碰到一个这样的角标设计,如下

像这种能够文字可变动,自适应大小的布局,天然首选 CSS 了~ 上面看看如何实现的(两分钟读完)

一、圆角矩形和三角形

从设计上能够拆分成两局部,一个圆角矩形和一个三角形

假如 HTML 是这样的

<tag> 审核为通过 </tag>

圆角很好实现,border-radius就行,如下

tag{
  border-radius: 4px 4px 4px 0px;
  color: #fff;
  padding: 2px 6px;
  font-size: 10px;
  line-height: 16px;
  background: #EA3447;
}

小三角能够用伪元素生成,对于三角形的实现形式有很多,如果对兼容性没什么要求,倡议采纳 clip-path 实现,比拟容易了解,确定三个坐标,间接裁剪就能够了

用 CSS 实现就是

tag::before{
    content: '';
    position: absolute;
    width: 3px;
    height: 3px;
    left: 0;
    bottom: -3px;
    background: #BB2A39;
    clip-path: polygon(0 0, 100% 0, 100% 100%); /* 三角 */
}

二、色彩稍暗的三角形

下面的实现中,圆角矩形和三角形用了两个色彩,别离是 #EA3447#BB2A39

每次都要保护两个色彩变量太麻烦了,有没有方法只用一个色彩呢?换句话说,如何将一个色彩变暗?这里有几种形式

1. 遮蔽一层半透明的彩色

这个其实比拟容易了解,在原有的色彩,遮蔽一层半透明的彩色,原有色彩天然就变暗了

具体实现就是用 CSS 背景绘制一层半透明突变

tag::before{background: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3));
  background-color: inherit;
}

这里的 background-color:inherit 就示意背景色彩是继承父级的

2. 通过滤镜实现

CSS 滤镜中有个 brightness,能够设置图像的亮度, 亮度越高,图像越白,无穷大时趋近于红色,亮度越低,图像越黑,当为 0 时,图像就齐全成彩色,刚好实用于这种场景

具体实现就是

tag::before{filter: brightness(.7);
  background-color: inherit;
}

像其余饱和度(saturate)、灰度(grayscale)滤镜也能达到相似的成果,不过这里亮度更为适合

3. 将来的解决形式 color-mix

大家可能在一些 CSS 预处理中用过色彩的解决计划,比方要把一个色彩亮度升高 20%,在 less 中可能是这样

.el{background: darken(@color, 20%); 
}

不过这些是预处理的,变动并不是实时的,有时候可能并不能满足理论需要。

当初,新的色彩计划曾经要在 CSS 中实现了,那就是 color-mix,也就是颜色混合,目前曾经在草案中了,如果将来全面反对了,那么要将一个色彩变暗,能够这样来实现

.el{
  --accent: #EA3447;
  background: hsl(from var(--accent) h s calc(l - 20%));
}

这里的 from 示意将原有色彩开展,而后从新计算成新的色彩

更多对于 color-mix 的草案能够查看 https://www.w3.org/TR/css-col…

三、富裕质感的高光

设计师为了突出肯定的质感,在标签上和加了一层“强劲的高光”,下面的截图可能不是特地清晰,能够看上面的放大比照图

能看出区别吗?能领会到设计的良苦用心吗?

看着有些相似一个是纯色填充,一个是突变填充。为了保障色彩变量的单一性,这里的高光能够用一层半透明的红色突变来实现

tag{background: linear-gradient(to right bottom, rgba(255, 255, 255, 0.4), transparent) rgba(20, 30, 41, 0.76));
}

这里绘制了一个从左上角到右下角的半透明红色突变,笼罩在本来的色彩上,成果如下

因为只是简略粗犷的叠加,导致整体偏白,有种饱和度有余的感觉,究其原因,还是因为叠加的不够天然。那么如何叠加的更为天然呢?能够采纳background-blend-mode,也就是背景混合模式。

为了让叠加成果看起来更加柔和,这里能够用soft-light,如下

tag{background-blend-mode: soft-light}

这样成果就好多了,十分粗劣,能够看看比照成果

残缺代码如下

tag{
  border-radius: 4px 4px 4px 0px;
  color: #fff;
  padding: 2px 6px;
  font-size: 10px;
  line-height: 16px;
  background: linear-gradient(to right bottom, rgba(255, 255, 255, 0.4), transparent) var(--bg, #EA3447);
  background-blend-mode: soft-light;
}
tag::before{
  content: '';
  position: absolute;
  width: 3px;
  height: 3px;
  left: 0;
  bottom: -3px;
  background-color: inherit;
  filter: brightness(.7);
  clip-path: polygon(0 0, 100% 0, 100% 100%);
}

四、总结一下

整体实现其实没有太难的中央,如果设计师没什么要求,其实到第一步就能够完结了。然而如果充沛还原这些富裕质感的设计,也能让网站整体的视觉感触更上一层楼。上面总结一些实现要点:

  1. 自适应尺寸的尽量用 CSS 实现
  2. 三角的实现举荐 clip-path,更容易了解
  3. 充分考虑实现的可维护性,比方能用一个变量,就不要用两个变量,CSS 同样如此
  4. 叠加一层半透明的彩色能够实现图像变暗
  5. 图像变暗还能够通过 CSS 滤镜 brightness 实现
  6. 将来还能够通过颜色混合 color-mix 来实现,能够提前理解一下
  7. 背景混合模式能够让色彩叠加依据天然

这些晋升视觉还原的小技巧你学到了吗?最初,如果感觉还不错,对你有帮忙的话,欢送点赞、珍藏、转发❤❤❤

欢送关注微信公众号:前端侦探

正文完
 0