JavaScript——跟随图片变化改变网页背景

news2024/12/25 9:04:07

目录

基础模板

引入ColorThief库

获取图片主要颜色

实现渐变效果


JavaScript效果——跟随图片变化改变网页背景,效果如下所示:

 

基础模板

首先我们准备基础模板,模板代码如下所示:

<script setup>
import { ref } from 'vue'
const images = ref([
  'https://t7.baidu.com/it/u=1956604245,3662848045&fm=193&f=GIF',
  'https://t7.baidu.com/it/u=825057118,3516313570&fm=193&f=GIF',
  'https://t7.baidu.com/it/u=1819248061,230866778&fm=193&f=GIF',
  'https://t7.baidu.com/it/u=1285847167,3193778276&fm=193&f=GIF'
])
const width = '200px'
const hoverIndex = ref(-1)
async function handleMouseEnter(img, i) {
  hoverIndex.value = i
}
function handleMouseLeave() {
  hoverIndex.value = -1
}
</script>
<template>
  <img
    v-for="(url, i) in images"
    crossorigin="anonymous"
    :src="url"
    :style="{
      width: width,
      opacity: hoverIndex === -1 ? 1 : i === hoverIndex ? 1 : 0.2
    }"
    @mouseenter="handleMouseEnter($event.target, i)"
    @mouseleave="handleMouseLeave"
  />
</template>

基础模板效果如下:

 

引入ColorThief库

要想实现跟随图片变化实现网页背景渐变效果,我们需要获取图片主要的三种颜色,这里我们使用ColorThief库中的getPalette方法,该方法语法格式如下:

const colorThief = new ColorThief()    // 创建ColorThief的实例对象
const colors = colorThief.getPalette(image,colorCount)

其中:

  • image:要提取颜色的图像对象或 URL;

  • colorCount:提取的颜色数量。默认值为 10;

该方法返回颜色谱。

获取图片主要颜色

简单了解了colorThief.getPalette方法后,接下来我们修改鼠标移入方法通过getPalette方法获取图片主要的三种颜色,示例代码如下:

import ColorThief from 'colorthief'    // 引入ColorThief库
const colorThief = new ColorThief()    // 创建ColorThief的实例对象  
async function handleMouseEnter(img, i) {
  hoverIndex.value = i
  const colors = colorThief.getPalette(img, 3)  // 获取颜色谱
  const [c1, c2, c3] = colors.map((c) => `rgb(${c[0]},${c[1]},${c[2]})`) // 解构出三组rgb
  console.log(c1, c2, c3)
}

当我们鼠标移入图片时,就会打印出图片的主要三种颜色。

实现渐变效果

获取图片的主要颜色后,接下来设置网页的渐变背景,CSS代码如下:

<style>
html {
  background-image: linear-gradient(to bottom, var(--c1), var(--c2), var(--c3)); // 背景图像
  background-repeat: no-repeat;   // 不重复
  height: 100%;
}
</style>

设置网页渐变背景后,接下来在鼠标移入事件中添加如下代码:

  html.style.setProperty('--c1', c1)
  html.style.setProperty('--c2', c2)
  html.style.setProperty('--c3', c3)

这样就这样就实现了鼠标移入时,背景发生改变,接下来修改鼠标移除事件,代码如下:

function handleMouseLeave() {
  hoverIndex.value = -1
  html.style.setProperty('--c1', '#fff')
  html.style.setProperty('--c2', '#fff')
  html.style.setProperty('--c3', '#fff')
}

好了,这样就实现了跟随图片变化改变网页背景了。

公众号:白巧克力LIN

该公众号发布Python、数据库、Linux、Flask、自动化测试、Git、算法、前端等相关文章!

- END -

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/669999.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Chat GPT提示词(prompt )入门指南

prompt 是什么 prompt 是“提示、引导”的意思。在 NLP &#xff08;自然语言处理&#xff09;领域&#xff0c;prompt 通常指的是向预训练模型输入的文本&#xff0c;用于引导生成模型生成指定的文本输出。 prompt 就像是一条指路路线&#xff0c;告诉计算机生成什么样的文本…

戴尔U盘重装系统Win10步骤和详细教程

戴尔电脑深受用户们的喜欢&#xff0c;那么如何使用U盘给戴尔电脑重装Win10系统呢&#xff0c;这让很多用户都犯难了&#xff0c;以下就是小编给大家分享的戴尔U盘重装系统Win10步骤和详细教程&#xff0c;按照这个教程操作&#xff0c;就能顺利完成戴尔U盘重装Win10系统的操作…

Ansys Zemax | 如何建模人体皮肤以及光学心率探测器

光电容积脉搏波法&#xff08;PPG&#xff09;是一种低成本&#xff0c;无创的光学技术&#xff0c;可在皮肤表面进行生理测量。其最广泛的应用之一是商用智能手表和运动手环中包含的可穿戴心率传感器&#xff0c;它在日常环境下可提供舒适和连续的脉搏监测。本文演示了如何在 …

如何做好城市内涝监测工作?

城市内涝是由于降雨量过大、排水设施不足等原因导致的城市地区积水现象&#xff0c;城市内涝是严重影响城市运行和居民生活的自然灾害之一。因此&#xff0c;建立有效的城市内涝监测系统&#xff0c;对于提前发现内涝风险、采取及时的防范和应急措施至关重要。那么如何做好城市…

鼎博梯控MF1卡UID卡修复

物业发了4张卡MF1卡&#xff0c;默认无法修改卡号的&#xff08;当时不知道&#xff09;&#xff1b; 需要交物业费更新日期&#xff0c;手里只有两张卡&#xff0c;另外两个家人拿走了&#xff0c;正好我有修改卡的设备PM6&#xff0c;就准备只升级手里的两张卡&#xff0c;然…

nowcoder--牛客题霸模板速刷101

目录 BM12 单链表的排序 描述 算法思想&#xff1a;归并排序&#xff08;递归&#xff09; 解题思路&#xff1a; BM13 判断一个链表是否为回文结构 描述 方法一 思路 具体步骤 方法二 思路 BM14 链表的奇偶重排 描述 BM15 删除有序链表中重复的元素 描述 BM12 单链表的排…

老游戏的新生:探究二十年前的经典游戏为何再次风靡

随着科技的不断进步和游戏产业的飞速发展&#xff0c;我们每年都能玩到各种新的、惊奇的游戏。但是&#xff0c;在这个繁华快速的行业中&#xff0c;却时常有一些老游戏顽强地生存下来&#xff0c;并且在很多人心中再次引起了巨大的追捧和热情。这些经典游戏往往诞生于20年前或…

数据结构--》深入了解栈和队列,让算法更加高效

本文将带你深入了解数据结构栈和队列&#xff0c;这两种基础的线性数据结构在算法中的重要性不言而喻。我们将会详细介绍栈和队列的概念、分类、实现以及应用场景&#xff0c;在理解栈和队列的基础上&#xff0c;还将探讨如何通过栈和队列来高效地解决算法问题。 无论你是初学者…

LTV-6341-ASEMI代理台湾光宝储能专用光耦LTV-6341

编辑&#xff1a;ll LTV-6341-ASEMI代理台湾光宝储能专用光耦LTV-6341 型号&#xff1a;LTV-6341 品牌&#xff1a;台湾光宝 封装&#xff1a;LSOP-6 工作温度&#xff1a;-40C~125C LTV-6341特性&#xff1a; 3.0A峰值输出电流驱动能力 轨对轨输出电压 200 ns最大传播…

D. Survey in Class(贪心 + 分类讨论)

Problem - D - Codeforces Zinaida Viktorovna 的历史课上有 n 名学生。今天的作业包括 m 个主题&#xff0c;但是学生们准备时间很短&#xff0c;所以第 i 个学生只学习了从 li 到 ri &#xff08;包括&#xff09;的主题。 在课开始时&#xff0c;每个学生都将手举在 0 处。…

虚幻引擎程序化资源生成框架PCG(Procedural Content Generation Framework) 之一 PCG基础

可以和Houdini说拜拜了 文章目录 0. 概述1. 启动插件2. 工作逻辑2.1 添加PCGVolume2.2 创建PCGGraph2.3 编写PCGGraph逻辑 小结 0. 概述 Unreal Engine 5.2全新推出了程序化资源生成框架即Procedural Content Generation Framework下文简称PCG&#xff0c; 开发者可以通过PCG程…

CSDN 每日一练及周赛介绍

CSDN 每日一练及周赛介绍 每日一练每日一练入口 CSDN 周赛CSDN 周赛入口 相关社区每日一练社区入口CSDN 竞赛专区社区入口 每日一练题库每日一练速查每日一练题目题解速查入口 每日一练题解自行接管输入 根据题号进入题目预习提交新题目CSDN 编程比赛出题规范 吐槽 每日一练 C…

JavaWeb项目乱码问题

设置编码格式有三个地方&#xff0c; 一,用于设置网页发出到服务器上的编码格式为UTF-8&#xff0c;一般该代码会自动创建。 <% page contentType"text/html;charsetUTF-8" language"java" %> 二&#xff0c;服务器响应后发送的文件的编码格式为U…

从BNO055传感器获取IMU数据-1

最近学习惯导相关知识&#xff0c;BNO055是博世的绝对方向传感器&#xff0c;它结合了传感器数据和微处理器来过滤和组合数据&#xff0c;为用户提供空间中的绝对方向。 关于BNO055传感器 BNO055使用三个三轴传感器同时测量切向加速度&#xff08;通过加速度计&#xff09;&a…

【认知提升思维篇】之心灵之力的自我认可模式

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;普本…

深入浅出vite(一)--vite的优点及原理、性能优化

Vite 需要 Node.js 版本 14.18&#xff0c;16。然而&#xff0c;有些模板需要依赖更高的 Node 版本才能正常运行&#xff0c;当你的包管理器发出警告时&#xff0c;请注意升级你的 Node 版本。 背景 webpack支持多种模块化&#xff0c;将不同模块的依赖关系构建成依赖图来进行…

DevExpress WinForms功能区组件,让业务应用创建更轻松!(下)

DevExpress WinForms的Ribbon&#xff08;功能区&#xff09;组件灵感来自于Microsoft Office&#xff0c;并针对WinForms开发人员进行了优化&#xff0c;它可以帮助开发者轻松地模拟当今最流行的商业生产应用程序。 在上文中&#xff08;点击这里回顾>>&#xff09;&am…

Axure教程—中继器菜单

本文将教大家如何用AXURE中的中继器制作菜单&#xff08;不自动折叠其他菜单&#xff09; 一、效果 预览地址&#xff1a;https://8ao8gl.axshare.com 二、功能 1、点击菜单出现相应的子菜单 2、子菜单如果想折叠&#xff0c;点击相应的菜单 三、制作 &#xff08;1&#xff…

Java-@Transactional注解超详细

本文已收录于专栏 《Java》 目录 本文前言概念说明使用说明底层实现注意事项注解扩展总结提升 本文前言 Transactional注解是Spring框架中用于声明式事务管理的关键注解。本文将深入探讨Transactional注解的作用、使用方式和常见属性&#xff0c;并结合代码实例演示其在实际项目…

Adobe PS 2023、Adobe Photoshop 2023下载教程、安装教程

最后附下载地址 Adobe Photoshop 简介&#xff1a; Adobe Photoshop是一款广泛使用的图像处理软件&#xff0c;由Adobe公司开发。它提供了许多强大的工具和功能&#xff0c;可以用于图像编辑、合成、修饰、设计等各个领域。用户可以使用Photoshop来调整图像的亮度、对比度、色…