共计 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%);
}
四、总结一下
整体实现其实没有太难的中央,如果设计师没什么要求,其实到第一步就能够完结了。然而如果充沛还原这些富裕质感的设计,也能让网站整体的视觉感触更上一层楼。上面总结一些实现要点:
- 自适应尺寸的尽量用 CSS 实现
- 三角的实现举荐 clip-path,更容易了解
- 充分考虑实现的可维护性,比方能用一个变量,就不要用两个变量,CSS 同样如此
- 叠加一层半透明的彩色能够实现图像变暗
- 图像变暗还能够通过 CSS 滤镜 brightness 实现
- 将来还能够通过颜色混合 color-mix 来实现,能够提前理解一下
- 背景混合模式能够让色彩叠加依据天然
这些晋升视觉还原的小技巧你学到了吗?最初,如果感觉还不错,对你有帮忙的话,欢送点赞、珍藏、转发❤❤❤
欢送关注微信公众号:前端侦探