CSS 基于文字的图片马赛克你见过吗

简介: CSS 基于文字的图片马赛克你见过吗

本文已参与[新人创作礼]活动,一起开启掘金创作之路

看到封面这张图,是不是如同艺术品一般,第一次看到这张图时,是比较震惊的,迫不及待的研究其源码是如何实现的,最后更为惊奇的是只需要纯 CSS 即可实现,接下来就展开说明实现过程。

前置知识点

实现此效果需要了解 2 个前置的 CSS 知识点,滤镜filter属性中的contrastmix-blend-mode属性。

filter: contrast

filter属性相信都有所触过,比如常见的blur()函数用于高斯模糊图片。除此之外还有很多其他函数可用,如下表所示:

Filter 描述
blur(px) 给图像设置高斯模糊
brightness(%) 将线性乘法器应用于输入图像,使其看起来或多或少地变得明亮
contrast(%) 调整图像的对比度
drop-shadow() 给图像设置一个阴影效果
grayscale(%) 将图像转换为灰度图像
hue-rotate(deg) 给图像应用色相旋转
invert(%) 反转输入图像
opacity(%) 转化图像的透明程度
saturate(%) 转换图像饱和度
sepia(%) 将图像转换为深褐色
url() 获取指向 SVG 滤镜的 URI,该 SVG filter 可以嵌入到外部 XML 文件中

今天主要用到的是contrast,用于调整图像的对比度。如下图所示,右侧图片是增加了filter: contrast(50%)的效果。

浏览器兼容情况如下所示:

mix-blend-mode

mix-blend-mode该 CSS 属性作用是让元素内容和这个元素的背景以及下面的元素发生“混合”。设置不同 mix-blend-mode 值的效果如下所示:具体含义解释如下:

  • multiply混合后通常颜色会加深,多用在白色背景图片和其他元素的混合,以及彩色纹理的合并上。
  • screen 混合后颜色会减淡,非常适合实现霓虹灯光效果,适合黑色背景素材和其他元素混合,非常实用。
  • overlay 在颜色值暗的时候,采用了类似“正片叠底”的算法,而颜色亮的时候,采用了类似“滤色”的算法。此混合模式比较适合实现文字水印效果。
  • darken表示哪个颜色暗使用哪个颜色,在 web 开发中,给图形或文字着色会很实用。
  • lighten是哪个颜色浅就表现为哪个颜色,在 web 开发中,给图形或文字着色会很实用。
  • color-dodge颜色减淡混合模式可以用来保护底图的高光,适合处理高光下的人物照片。
  • color-burn颜色加深混合模式可以用来保护底图的阴影,适合处理幽深秘境一类的照片,通过和特定的色彩进行混合,可以营造更加幽深的意境。
  • hard-light的效果是强光,最终的混合效果就好像耀眼的聚光灯照射过来,表现为图像亮的地方更亮,暗的地方更暗。多用在图像表现处理上。
  • soft-light的效果是柔光,最终的混合效果就好像发散的光源弥漫过来,表现效果和 hard-light 有类似之处,只是表现没有那么强烈。给图像着色的时候常用此混合模式。
  • difference是差值效果,可以实现颜色的反色效果。
  • exclusion的效果是排除,最终的混合效果和 difference 模式是类似的,区别在于 exclusion 的对比度要更低一些。

接下来要介绍的 4 种混合模式都属于颜色系混合模式,在 web 开发中不常用,还是传统的图像表现处理领域用的较多。

  • hue表示色调混合,最终的效果是混合后的颜色使用底层元素的亮度和饱和度,而使用上层元素的色调。
  • saturation表示饱和度混合,混合后的颜色保留底图的亮度和色调,使用顶图的饱和度。
  • color表示颜色混合,混合后的颜色保留底图的亮度,使用顶图的色调和饱和度。
  • luminosity表示亮度混合,混合后的颜色保留底图的色调和饱和度,使用顶图的亮度,和 color 模式正好是相反的。

浏览器兼容情况如下所示:

代码开发

今日主图的效果主要就是用到了滤镜filter属性中的contrastmix-blend-mode属性中的multiply

为了达到效果的同时也能阅读文字,所以设置图片的对比图filter: contrast(60%)。再将整个文本设置绝对定位置于图片上方,并设置mix-blend-mode: multiply即可达到图片所示的效果。核心代码如下所示:

<div>
  <img src="https://xxx.jpeg">
  <p>
  ***
  文本内容
  ***
  </p>
</div>

CSS 代码:

div {
  position: relative; 
  overflow: hidden;
}
img {
  width: 100%;
  filter: contrast(60%);
}
p {
  line-height: 1;
  font-size: 1.76vw;
  color: #fff;
  background: #000;
  mix-blend-mode: multiply;
  position: absolute;
  top: 0;
  width: 100%;
  height: 100%;
}

经过处理后的下图你能不看源码猜到是哪位明星吗?


image.png

最后

今日只用到了 filtermix-blend-mode 的一个属性,还很很多的功能等着你去发现,有兴趣的同学可以尝试用起来吧,CSS 的世界等着你来发掘~ 看完如果觉得有用,记得点个赞再走,收藏起来说不定哪天就用上啦~

参考



目录
相关文章
|
4月前
|
前端开发
在Webpack配置文件中,如何配置loader以处理其他类型的文件,如CSS或图片
在Webpack配置文件中,通过设置`module.rules`来配置loader处理不同类型的文件。例如,使用`css-loader`和`style-loader`处理CSS文件,使用`file-loader`或`url-loader`处理图片等资源文件。配置示例:在`rules`数组中添加对应规则,指定`test`匹配文件类型,`use`指定使用的loader。
|
3月前
|
JavaScript 容器
jquery和CSS3图片排序过滤搜索插件
Filterizr是一款jquery和CSS3图片排序过滤插件。它可以对一组图片进行排序,按条件过滤和按关键字搜索。并在显示结果时使用指定的CSS3动画过渡效果。
40 2
|
4月前
|
编解码 前端开发 UED
探讨了CSS媒体查询在移动端开发中的应用,介绍了媒体查询的基本概念、常见条件及其在响应式布局、导航菜单、图片优化和字体调整等方面的具体应用
本文深入探讨了CSS媒体查询在移动端开发中的应用,介绍了媒体查询的基本概念、常见条件及其在响应式布局、导航菜单、图片优化和字体调整等方面的具体应用。通过实际案例分析和注意事项的讨论,旨在帮助开发者更好地理解和运用媒体查询,提升移动端用户体验。
87 4
|
4月前
CSS3制作的聚光灯下倒影文字选装动画特效源码
CSS3聚光灯下倒影文字特效是一段基于CSS3实现的聚光灯下带倒影的文字旋转动画效果代码,具有真实的视觉感,同时文字还会在旋转过程中显示出灯光的反射效果,很有意思,欢迎对此段代码感兴趣的朋友前来下载使用。
47 6
|
4月前
纯css3发光霓虹灯文字闪烁特效代码
纯css3发光霓虹灯文字闪烁特效代码是一款彩色的店铺名称文字动画特效。
63 6
|
4月前
CSS3实现的九宫格图片鼠标悬停去除遮罩层源码
CSS3实现的九宫格图片鼠标悬停去除遮罩层源码
29 0
CSS3实现的九宫格图片鼠标悬停去除遮罩层源码
|
4月前
jQuery+CSS3模拟过山车动态的文字动画特效源码
jQuery+CSS3模拟过山车动态的文字动画特效源码实现在全黑的背景下,画面中的文本呈现过山车的轨迹动画上下滚动转圈,且伴随文本颜色渐变效果,非常有意思,欢迎对此特效感兴趣的朋友前来下载参考。
39 1
|
6月前
|
前端开发
前端基础(五)_CSS文本文字属性、背景颜色属性
本文详细介绍了CSS中关于文本和背景颜色的样式属性。包括字体大小、字体族、字体加粗、字体样式、文本行高、`font`属性、文本颜色、文本对齐方式、文本装饰线、首行缩进等文本属性,以及背景颜色、背景图片、背景重复、背景位置等背景属性。文章通过示例代码展示了这些属性的具体应用和效果。
170 3
前端基础(五)_CSS文本文字属性、背景颜色属性
|
5月前
|
前端开发 UED
Webpack 中处理 CSS 和图片资源的多 Loader 配置
【10月更文挑战第12天】 处理 CSS 和图片资源是 Webpack 配置中的重要部分。通过合理选择和配置多个 Loader,可以实现对这些资源的精细处理和优化,提升项目的性能和用户体验。在实际应用中,需要不断探索和实践,根据项目的具体情况进行灵活调整和优化,以达到最佳的处理效果。通过对 Webpack 中多 Loader 处理 CSS 和图片资源的深入了解和掌握,你将能够更好地应对各种复杂的资源处理需求,为项目的成功构建和运行提供坚实的基础。
145 1
|
7月前
|
前端开发
简单几行代码CSS实现网页自动打文字效果
简单几行代码CSS实现网页自动打文字效果
80 1