web前端CSS学习之CSS 提取图片主题色功能探索
小职 2021-05-10 来源 :iCSS前端趣闻 阅读 1024 评论 0

摘要:本文主要介绍了web前端CSS学习之CSS 提取图片主题色功能探索,通过具体的内容向大家展现,希望对大家前端CSS的学习有所帮助。

本文主要介绍了web前端CSS学习之CSS 提取图片主题色功能探索,通过具体的内容向大家展现,希望对大家前端CSS的学习有所帮助。

web前端CSS学习之CSS 提取图片主题色功能探索

本文将介绍一种利用 CSS 获取图片主题色的小技巧。一起看看~

 

背景

起因是微信技术群里有个同学发问,有什么方法能够获取图片的主色呢?有一张图片,获取他的主色调:

 web前端CSS学习之CSS 提取图片主题色功能探索

 

 

利用获取到的这个颜色值,来实现类似这样的功能 -- 容器中有一张图片,希望背景色可以适配图片的主色,像是这样:

 web前端CSS学习之CSS 提取图片主题色功能探索

 

 

大家出谋划策,有说利用 Canvas 进行计算的,有推荐专门的开源库的,都挺好。

 

那么,利用 CSS,能不能实现这个功能呢?

 

听起来好像有点痴人说梦,CSS 还能实现这个效果?emm,利用 CSS 确实可以通过一种讨巧的方式,近似的获取到图片的主色调,在对主色的要求不是特别精确的情况下,不失为一种办法,下面一起来一探究竟。

 

利用 filter: blur() 及 transform: sacle() 获取图片主题色

这里,我们利用模糊滤镜以及放大效果,可以近似的拿到图片的主题色。

 

假定我们有这样一张图片:

 web前端CSS学习之CSS 提取图片主题色功能探索

 

 

<div></div>

利用模糊滤镜作用给图片:

 

div {

    background: url("https://i0.wp.com/airlinkalaska.com/wp-content/uploads//aurora-2.jpg?resize=1024%2C683&ssl=1");

    background-size: cover;

    filter: blur(50px);

}

看看效果,我们通过比较大的一个模糊滤镜,将图片 blur(50px),模糊之后的图片有点那感觉了,不过存在一些模糊边缘,尝试利用 overflow 进行裁剪。

 web前端CSS学习之CSS 提取图片主题色功能探索

 

 

接下来,我们需要去掉模糊的边边,以及通过 transform: scale() 放大效果,将颜色再聚焦下,稍微改造下代码:

 

div {

    position: relative;

    width: 320px;

    height: 200px;

    overflow: hidden;

}

 

div::before {

    content: "";

    position: absolute;

    top: 0;

    left: 0;

    right: 0;

    bottom: 0;

    background: url("https://i0.wp.com/airlinkalaska.com/wp-content/uploads//aurora-2.jpg?resize=1024%2C683&ssl=1");

    background-size: cover;

    // 核心代码:

    filter: blur(50px);

    transform: scale(3);

}

结果如下:

 web前端CSS学习之CSS 提取图片主题色功能探索

 

 

这样,我们就利用 CSS,拿到了图片的主色调,并且效果还是不错的!

 

完整的代码你可以戳这里:CodePen Demo -- Get the main color of the image by filter and scale[1]

 

不足之处

当然,该方案也是存在一定的小问题的:

 

只能是大致拿到图片的主色调,无法非常精确,并且 filter: blur(50px) 这个 50px 需要进行一定的调试

模糊滤镜本身是比较消耗性能的,如果一个页面存在多个这种方法获取到的背景,可能对性能会造成一定的影响,实际使用的时候需要进行一定的取舍

最后

好了,本文到此结束,介绍了一种利用 CSS 获取图片主题色的小技巧,希望对你有帮助 


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

web前端CSS学习之CSS 提取图片主题色功能探索

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程