欢迎访问宙启技术站
智能推送

js如何实现点击上传图片并设为模糊背景

发布时间:2023-05-17 03:36:33

实现点击上传图片并设置为模糊背景需要用到HTML、CSS和JavaScript。

1. HTML 部分

首先需要创建一个包含上传按钮和显示图片的 HTML 元素。这可以通过以下代码实现:

<div class="upload-button">
  <input type="file" id="img-upload">
  <label for="img-upload">Upload Image</label>
  <img id="bg-image">
</div>

这个代码片段包含了一个类名为 “upload-button” 的 div 元素,其中包括一个 input 元素和一个 label 元素。当用户点击标签时,浏览器会触发 input 元素的点击事件。在 label 元素中,我们可以设置一个自制图标来取代原生的 input 按钮。最后在 div 中添加一个空 img 元素,以供后续使用上传的图片显示为背景。

2. CSS 部分

为了使上传按钮看起来更好看,我们需要对其进行一些 CSS 样式设置。以下是一个简单的 CSS 样式表:

.upload-button {
  display: inline-block;
}

#img-upload {
  display: none;
}

label[for="img-upload"] {
  display: block;
  width: 150px;
  height: 40px;
  margin: 10px auto;
  background-color: #222;
  color: #fff;
  line-height: 40px;
  text-align: center;
  cursor: pointer;
  border-radius: 5px;
}

label[for="img-upload"]:hover {
  background-color: #555;
}

#bg-image {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  filter: blur(5px);
  z-index: -1;
}

这里我们给 .upload-button 元素设置了 display: inline-block; 的样式,因为这个元素默认是 block 元素,会独占一行。在#img-upload 元素上设置了 display: none; 样式,为了隐藏其默认显示的文件选择框。接着设置了 label[for="img-upload"] 元素的样式。这个样式会在上传图标上添加一个黑色背景和平移的样式。当用户将鼠标移到按钮上时,将会产生一个hover ,看起来更好看。

3. JavaScript 部分

实现点击上传图片并设为模糊背景,我们需要使用 JavaScript 将上传文件的URL解析为图像URL,稍微处理一下后,将其添加到 <img> 元素的 src 属性上。我们还要重置上传文件的选择,以便下次可以上传不同的文件。

在获得图像 URL 后,我们需要将其设置为背景。这可以通过将 src attribute 的值设置为 CSS 的 background-image 样式来实现。

以下是 JavaScript 部分的代码:

function handleFileSelect(event) {
  const uploadFile = event.target.files[0];
  const reader = new FileReader();
  reader.readAsDataURL(uploadFile);
  reader.onload = function(event) {
    const dataUri = event.target.result;
    const bgImage = document.getElementById('bg-image');
    bgImage.style.backgroundImage = url(${dataUri});
  };
}

const imgUpload = document.getElementById('img-upload');
imgUpload.addEventListener('change', handleFileSelect);

这里定义了一个名为 handleFileSelect() 的事件处理函数,用于将文件转换为 URL,并将其设置为背景图像。 imgUpload 是一个 input 元素,当用户选择文件时,会触发 change 事件,并调用 handleFileSelect() 函数。

最后,我们可以在 CSS 选择器中添加filter: blur(5px); ,使背景图片模糊化。