你值得了解的一种CSS获取图片主题色的小技巧(分享)

本篇文章给大家分享一种利用 css 获取图片主题色的小技巧。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

你值得了解的一种CSS获取图片主题色的小技巧(分享)

背景

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

1.png

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

立即学习“前端免费学习笔记(深入)”;

2.jpg

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

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

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

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

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

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

3.png

登录后复制

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

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 进行裁剪。

4.png

接下来,我们需要去掉模糊的边边,以及通过 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);}

登录后复制

结果如下:

5.png

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

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

不足之处

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

只能是大致拿到图片的主色调,无法非常精确,并且 filter: blur(50px) 这个 50px 需要进行一定的调试模糊滤镜本身是比较消耗性能的,如果一个页面存在多个这种方法获取到的背景,可能对性能会造成一定的影响,实际使用的时候需要进行一定的取舍

最后

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

原文地址:https://segmentfault.com/a/1190000039979112作者:chokcoco

更多编程相关知识,请访问:CodePen Demo — Get  the main color of the image by filter and scale!!

以上就是你值得了解的一种CSS获取图片主题色的小技巧(分享)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2874065.html

(0)
上一篇 2025年3月10日 18:58:02
下一篇 2025年3月1日 08:09:21

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • css中如何清除float

    css中清除float的方法是,为父元素设置【overflow:auto】。设置之后,内容元素会被修剪,超出元素将不可见。我们还可以通过增加空标签,或者使用【:after】伪元素来清除float。 本文操作环境:windows10系统、cs…

    2025年3月10日
    200
  • css中怎么将div设置为居中

    css中将div设置为居中的方法是设置定位,例如【position:absolute;】或【margin:auto;】。当我们需要充分考虑浏览器的兼容性时,可以使用Flex布局方法。 本文操作环境:windows10系统、css 3、thi…

    2025年3月10日 编程技术
    200
  • css实现三角的原理

    css实现三角的原理:首先确定底边是哪个方向,并设置哪个方向有颜色值;然后将其相对的边直接去掉;接着设置其左右两边的宽度和为该三角形的底边长,其自身的宽度为该三角形的高即可。 本文操作环境:windows7系统、HTML5&&amp…

    2025年3月10日 编程技术
    200
  • 用css怎么实现实现宽高比

    实现方法:1、利用padding属性和“%”单位;2、利用padding和calc()属性;3、利用padding属性和CSS变量;4、利用padding属性和伪元素;5、直接利用视窗单位“vw”;6、使用视窗单位配合CSS Grid布局。…

    2025年3月10日
    200
  • css怎么去掉焦点框

    css去掉焦点框的方法是,给输入框添加样式【input{outline:none}】就可以了。此时我们即使在输入框中输入内容,外框也不会出现焦点。 本文操作环境:windows10系统、css 3、thinkpad t480电脑。 inpu…

    2025年3月10日
    200
  • css3怎么将滚动条隐藏

    css3将滚动条隐藏的方法是,自定义滚动条的伪对象选择器【::-webkit-scrollbar】,例如【.element::-webkit-scrollbar { width: 0 !important }】。 本文操作环境:window…

    2025年3月10日
    200
  • css中怎么设置table边框的颜色

    css中设置table边框颜色的方法是,给table边框添加border-color属性,并且根据需要设置table边框的颜色即可,例如【border-color:#ff0000 #0000ff;】。 本文操作环境:windows10系统、…

    2025年3月10日
    200
  • css怎么将文本框设置为只读

    css将文本框设置为只读的方法是,在input文本框中添加readonly属性即可。readonly属性是一个布尔属性,该属性用来规定输入字段是只读的。 本文操作环境:windows10系统、css 3、thinkpad t480电脑。 r…

    2025年3月10日
    200
  • css如何清除input默认样式

    css清除input默认样式的方法是,将input的各个属性的属性值设置为none即可,例如【background:none;outline:none;border:none;】。 本文操作环境:windows10系统、css 3、thin…

    2025年3月10日
    200
  • 你可能不了解的CSS容器查询!!

    在前端开发中经常需要按不同屏幕尺寸来进设计达到PC和移动端响应式。我们一般使用CSS媒体查询来检测视口宽度或高度,然后根据该模式改变设计。 这就是在过去10年中设计Web布局的方式。 CSS容器查询,一个长期以来被web开发者要求的特性,很…

    2025年3月10日 编程技术
    200

发表回复

登录后才能评论