详细介绍:网站背景更换功能

目录

1. HTML 部分

2. JavaScript 部分

3. 完整流程

4. 总结

5. 适用场景


本文将介绍如何通过文件上传实现网站背景图片的更换。通过使用 JavaScriptAxios,我们可以允许用户上传图片文件并将其作为网站的背景图片。上传的图片 URL 会保存在浏览器的 localStorage 中,这样即使刷新页面,背景图片仍然可以保持不变。

下面是具体的实现过程以及完整的代码示例。


1. HTML 部分
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>更换背景图片</title></head><body><h1>选择一张图片更换背景</h1><!-- 上传图片选择框 --><input type="file" class="bg-ipt"><script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script>// JavaScript 部分代码见下文</script></body>
</html>

HTML 解析

  • input[type="file"]:这是一个文件选择框,用户可以通过该框选择本地图片文件。
  • class="bg-ipt":我们通过该类名在 JavaScript 中获取元素,以便给它绑定事件监听器。

2. JavaScript 部分
// 监听文件选择框的change事件
document.querySelector(".bg-ipt").addEventListener("change", (e) => {// 1. 选择图片上传,设置 body 背景console.log(e.target.files[0]);// 创建 FormData 对象,封装图片文件const fd = new FormData();fd.append("img", e.target.files[0]);// 发送 POST 请求到服务器,上传图片axios({url: "http://hmajax.itheima.net/api/uploadimg",  // 图片上传的 API 地址method: "post",data: fd,  // 上传的文件数据}).then((result) => {// 服务器返回结果console.log(result);// 从返回的数据中获取图片 URLconst imgUrl = result.data.data.url;// 设置页面背景图片为上传的图片document.body.style.backgroundImage = `url(${imgUrl})`;// 2. 上传成功时,"保存"图片 URL 到 localStorage 中localStorage.setItem("bgImg", imgUrl);}).catch((error) => {// 错误处理console.error('图片上传失败:', error);});
});// 3. 网页运行时,获取存储的背景图片 URL 并应用
const bgUrl = localStorage.getItem("bgImg");
if (bgUrl) {document.body.style.backgroundImage = `url(${bgUrl})`;
}

JavaScript 解析

  1. 监听文件选择框的变化

    • document.querySelector(".bg-ipt").addEventListener("change", (e) => { ... }):当用户选择文件时,触发 change 事件。
    • e.target.files[0] 获取用户选择的文件。
  2. 创建 FormData 对象

    • const fd = new FormData();:通过 FormData 对象,封装要上传的文件。
    • fd.append("img", e.target.files[0]);:将文件添加到 FormData 中,键名为 'img',对应服务器上传接口的字段名。
  3. 发送 POST 请求上传图片

    • 使用 axios 发送 POST 请求,上传图片至指定 API(本示例中为 http://hmajax.itheima.net/api/uploadimg)。
    • 请求成功后,服务器返回图片的 URL,我们将其用作页面的背景图片:document.body.style.backgroundImage = url(${imgUrl})`。
  4. 保存图片 URL 到 localStorage

    • 上传成功后,使用 localStorage.setItem("bgImg", imgUrl) 将图片的 URL 存储在本地存储中,以便页面刷新时仍能使用相同的背景图片。
  5. 获取并应用背景图片

    • 页面加载时,通过 localStorage.getItem("bgImg") 获取存储的背景图片 URL,并将其应用到页面背景:document.body.style.backgroundImage = url(${bgUrl})`。
    • 这样即使刷新页面,背景图片仍然不会丢失。

3. 完整流程
  1. 用户点击文件选择框并选择一张图片。
  2. JavaScript 通过 FormData 创建上传请求,使用 Axios 向服务器发送图片文件。
  3. 服务器返回图片的 URL,JavaScript 将此 URL 设置为页面的背景。
  4. 图片 URL 会被保存到 localStorage 中,确保页面刷新后背景图片依然存在。
  5. 当页面加载时,JavaScript 会从 localStorage 中读取背景图片的 URL 并重新应用。

4. 总结

这个示例展示了如何使用 JavaScriptAxios 实现动态背景更换功能,并且在用户刷新页面时保持背景不变。通过 localStorage 我们能保存用户的选择,使得背景图片可以在会话中持续有效。这个功能适用于个人网站、博客、或者任何需要自定义页面外观的应用。

5. 适用场景
  • 个人网站:允许用户自定义背景图片,使其更加个性化。
  • 博客平台:用户可以上传并设置背景图片,提升视觉体验。
  • 管理后台:管理员可以根据需求上传和更改系统背景,提升管理界面的可视化效果。

通过上面的代码,你可以很容易地在你的网站上实现动态背景更换功能。

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

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

相关文章

嵌入原则:数据特征如何 融入 模型的 损失地形

嵌入原则&#xff1a;数据特征如何 融入 模型的 损失地形 第一节&#xff1a;嵌入原则的基本概念与公式解释 机器学习中的嵌入原则&#xff0c;就像 “雕刻师” 将 “石块的纹理” 逐渐融入到 “雕塑的造型” 中。数据特征不再是独立的输入&#xff0c;而是被模型 “吸收” 和…

FPGA|例化生成的PLL功能IP核

1、例化上一篇文章中调用的IP核&#xff0c;新建文件PLL_test.v 2、代码如图 timescale 1ns / 1ps module PLL_test(input clk,input rst_n,output clkout0,output clkout1,output clkout2,output clkout3,output clkout4);wire locked;PLL pll_inst(.inclk0(clk),.c0(clkout0)…

【C++】P5734 【深基6.例6】文字处理软件

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;题目描述输入格式输出格式示例输入与输出输入&#xff1a;输出&#xff1a; &#x1f4af;我的做法操作1&#xff1a;在文档末尾插入字符串操作2&…

后盾人JS -- 原型

没有原型的对象 也有没有原型的对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

洛谷 P1130 红牌 C语言

题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌。获得红牌的过程是相当复杂&#xff0c;一共包括 N 个步骤。每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件。为了加快进程&#xff0c;每一步政府都派了 M 个工作人员来检查材料。不幸的是&…

【线程】基于环形队列的生产者消费者模型

1 环形队列 环形队列采用数组来模拟&#xff0c;用取模运算来模拟环状特性。 1.如何判断环形队列为空或者为满? 当环形队列为空时&#xff0c;头和尾都指向同一个位置。当环形队列为满时&#xff0c;头和尾也都指向同一个位置。 因此&#xff0c; 可以通过加计数器或者标记…

二分/双指针/单调栈队列专题

1.4924. 矩阵 - AcWing题库 一开始打表找规律以为是右上角向左下角递增,但当n很大的时候就不对了,因此我们得去观察 i * i 100000 * (i - j) j * j i * j 这个式子,我们关心的是这个式子的单调性因此我们可以分别将i和j看作常数来对式子进行求导,可以得到 f(i) 2 * i 10…

Shell $0

个人博客地址&#xff1a;Shell $0 | 一张假钞的真实世界 我们已经知道在Shell中$0表示Shell脚本的文件名&#xff0c;但在有脚本调用的情形中&#xff0c;子脚本中的$0会是什么值呢&#xff1f;我们通过下面的实例来看。 已测试系统列表&#xff1a; Mac OS X EI Capitan 1…

商品列表及商品详情展示

前言 本文将展示一段结合 HTML、CSS 和 JavaScript 的代码&#xff0c;实现了一个简单的商品展示页面及商品详情&#xff0c;涵盖数据获取、渲染、搜索及排序等功能。 效果展示 点击不同的商品会展示对应的商品详情。 代码部分 代码总体实现 <!DOCTYPE html> <htm…

[ VS Code 插件开发 ] 使用 Task ( 任务 ) 代替 createTerminal (终端) 来执行命令

VSCode 官方自己的插件就是这样执行命令的. 使用体验 比 默认的终端 好太多了. 重用终端, Shell 集成 , 按任意键关闭, 任务是否成功, 左侧命令操作 (菜单中功能很多) 等 import * as vscode from vscode; // 执行的命令 let command_str "npm run dev" // 工作目…

大模型综述一镜到底(全文八万字) ——《Large Language Models: A Survey》

论文链接&#xff1a;https://arxiv.org/abs/2402.06196 摘要&#xff1a;自2022年11月ChatGPT发布以来&#xff0c;大语言模型&#xff08;LLMs&#xff09;因其在广泛的自然语言任务上的强大性能而备受关注。正如缩放定律所预测的那样&#xff0c;大语言模型通过在大量文本数…

Python处理数据库:MySQL与SQLite详解

Python处理数据库&#xff1a;MySQL与SQLite详解 在数据处理和存储方面&#xff0c;数据库扮演着至关重要的角色。Python提供了多种与数据库交互的方式&#xff0c;其中pymysql库用于连接和操作MySQL数据库&#xff0c;而SQLite则是一种轻量级的嵌入式数据库&#xff0c;Pytho…

【C++】B2124 判断字符串是否为回文

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述输入格式&#xff1a;输出格式&#xff1a;样例&#xff1a; &#x1f4af;方法一&#xff1a;我的第一种做法思路代码实现解析 &#x1f4af;方法二&#xff1a;我…

ubuntuCUDA安装

系列文章目录 移动硬盘制作Ubuntu系统盘 前言 根据前篇“移动硬盘制作Ubuntu系统盘”安装系统后&#xff0c;还不能够使用显卡。 如果需要使用显卡&#xff0c;还需要进行相关驱动的安装&#xff08;如使用的为Nvidia显卡&#xff0c;就需要安装相关的Nvidia显卡驱动&#xff…

Selenium 使用指南:从入门到精通

Selenium 使用指南&#xff1a;从入门到精通 Selenium 是一个用于自动化 Web 浏览器操作的强大工具&#xff0c;广泛应用于自动化测试和 Web 数据爬取中。本文将带你从入门到精通地掌握 Selenium&#xff0c;涵盖其基本操作、常用用法以及一个完整的图片爬取示例。 1. 环境配…

Sqoop导入MySQL中含有回车换行符的数据

个人博客地址&#xff1a;Sqoop导入MySQL中含有回车换行符的数据 MySQL中的数据如下图&#xff1a; 检查HDFS上的目标文件内容可以看出&#xff0c;回车换行符位置的数据被截断了&#xff0c;导致数据列错位。 Sqoop提供了配置参数&#xff0c;在导入时丢弃掉数据的分隔符&…

利用matlab寻找矩阵中最大值及其位置

目录 一、问题描述1.1 max函数用法1.2 MATLAB中 : : :的作用1.3 ind2sub函数用法 二、实现方法2.1 方法一&#xff1a;max和find2.2 方法二&#xff1a;max和ind2sub2.3 方法对比 三、参考文献 一、问题描述 matlab中求最大值可使用函数max&#xff0c;对于一维向量&#xff0…

PyTorch数据建模

回归分析 import torch import numpy as np import pandas as pd from torch.utils.data import DataLoader,TensorDataset import time strat = time.perf_counter()

机试题——字符匹配

题目描述 给你一个字符串数组&#xff08;每个字符串均由小写字母组成&#xff09;和一个字符规律&#xff08;由小写字母和 . 和 * 组成&#xff09;&#xff0c;识别数组中哪些字符串可以匹配到字符规律上。 . 匹配任意单个字符。* 匹配零个或多个前面的那一个元素。 所谓…

《 C++ 点滴漫谈: 二十五 》空指针,隐秘而危险的杀手:程序崩溃的真凶就在你眼前!

摘要 本博客全面解析了 C 中指针与空值的相关知识&#xff0c;从基础概念到现代 C 的改进展开&#xff0c;涵盖了空指针的定义、表示方式、使用场景以及常见注意事项。同时&#xff0c;深入探讨了 nullptr 的引入及智能指针在提升代码安全性和简化内存管理方面的优势。通过实际…