使用js,实现:点击按钮,选择图片,网页随机生成不同的图片。
时间: 2024-05-02 07:20:17 浏览: 108
以下是一个简单的实现,包括HTML、CSS和JS代码:
HTML代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>随机图片生成器</title>
<style>
body {
margin: 0;
padding: 0;
background-color: #f5f5f5;
}
.container {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
height: 100vh;
}
.image {
margin: 10px;
border: 2px solid #ccc;
width: 200px;
height: 200px;
background-size: cover;
background-position: center center;
}
button {
padding: 10px 20px;
font-size: 16px;
background-color: #007aff;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
margin: 10px;
}
</style>
</head>
<body>
<div class="container"></div>
<button id="btn">随机生成图片</button>
<input type="file" id="input" style="display: none;">
<script src="script.js"></script>
</body>
</html>
```
CSS代码:
```css
body {
margin: 0;
padding: 0;
background-color: #f5f5f5;
}
.container {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
height: 100vh;
}
.image {
margin: 10px;
border: 2px solid #ccc;
width: 200px;
height: 200px;
background-size: cover;
background-position: center center;
}
button {
padding: 10px 20px;
font-size: 16px;
background-color: #007aff;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
margin: 10px;
}
```
JS代码:
```js
const container = document.querySelector('.container');
const button = document.querySelector('#btn');
const input = document.querySelector('#input');
button.addEventListener('click', function() {
input.click();
});
input.addEventListener('change', function() {
const files = input.files;
if (files.length === 0) return;
let images = [];
for (let i = 0; i < files.length; i++) {
const file = files[i];
const reader = new FileReader();
reader.onload = function(e) {
const image = document.createElement('div');
image.classList.add('image');
image.style.backgroundImage = `url(${e.target.result})`;
images.push(image);
}
reader.readAsDataURL(file);
}
setTimeout(function() {
container.innerHTML = '';
images = shuffleArray(images);
images.forEach(function(image) {
container.appendChild(image);
});
}, 500);
});
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
```
解释说明:
1. HTML代码中包括一个容器`div`,用于显示随机生成的图片;一个按钮`button`,用于触发选择图片的操作;一个文件输入框`input`,用于选择图片文件。同时还有一些基本的CSS样式。
2. JS代码中首先获取容器、按钮和文件输入框的DOM元素,并为按钮绑定点击事件和文件输入框绑定文件改变事件。
3. 当按钮被点击时,触发文件输入框的点击事件,弹出文件选择框,可以选择一张或多张图片文件。
4. 当文件输入框的文件改变时,获取选中的图片文件,使用`FileReader`对象读取文件数据,生成`div`元素作为图片的容器,并将图片数据设置为该容器的背景图片。同时将所有生成的图片容器保存在一个数组中。
5. 由于`FileReader`是异步操作,所以需要等待所有图片数据都读取完成后才能进行下一步操作。这里使用`setTimeout`函数延迟500毫秒后执行下一步操作,以确保所有图片数据都已经读取完成。
6. 下一步操作是将所有生成的图片容器随机打乱顺序,然后将它们依次添加到容器中进行显示。这里使用一个自定义的`shuffleArray`函数来实现数组随机打乱的功能。
7. 最终效果是点击按钮选择图片后,网页会随机生成不同的图片并显示在容器中。
阅读全文