JavaScript事件大全补充-制作一个属于自己的单机版网页相册

只需要小小改动哦,就拥有一个属于自己的单机版网页相册啦。

修改成自己的相册--修改data.js中的数据

查看图片--只有一点点特效

分类图片--选取类型

搜索图片--输入关键字,快速找到你要看的图片

献给不懂编程,但是又充满好奇心,动手能力较强的小伙伴们。(无需比较哈...)

可以通过电脑打开点击体验一下(手机端打开有bug哦,也不美观,主要是功能不能体现出来)

也可以复制网址后打开 https://www.cuckoo-cn.com

由于服务器只有一兆带宽,可能第一次访问时比较卡,单机运行还是流畅的哦。

百度网盘源文件 提取码:9p2x

源码附在底部,代码写完可能注释或console.log()都在,别介意。

一个框子搭出来了,后续可能会补充、美化。

1.首先将文件下载到到电脑上,解压。

2.运行index.html,打开方式最好选择Microsoft Edge或者Google Chrome,如果你的文件没有后缀.html也没有关系的哈,也照样可以使用(关于怎样显示文件扩展名,百度一下你就知道啦)。

3.打开后网页效果 博客底部图片,可以选择一个分类,或点击一个;也可以在搜索框输入,图片名字包含的关键字。

然后点击,下面对应图片的按钮,就可以展示图片了。

4.先介绍重点,修改成自己的相册。修改data.js中的参数(很简单的啦)。选择data.js,打开方式使用记事本,或者Notepad++(挺好的文本编辑器),没有的记事本就可以了,看下面的步骤。

imageData 中 “person”:[] 中括号中可以自己将图片名字写进去,名字在双引号中,可以添加自己的分类

imageData 需要对应到sectionData中

5.将相片复制到image文件夹里面去(这里统一的格式是.jpg),没关系,如果能看到文件后缀,直接改就可以了,将.png或其它改成.jpg

 

结合网页中的操作,找一下对应规则,很快就知道怎么改啦。。。

 

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <link rel="stylesheet" href="./index.css">
</head>
<style>

</style>

<body onload="come()">
  <div class="container">
    <div class="v-aside">
      <div class="v-form">
        <select id="v-select" class="v-form-item" name="v-select" onchange="getCategory(this)">
        </select>
        <input class="v-form-item" type="text" id="v-input" onkeyup="getSuited(this)"  placeholder="图片名称">
      </div>
      <div id="v-list" class="v-list">
        
      </div>
    </div>
    <div class="box" id="box">

    </div>
  </div>
  <script src="./data.js"></script>
  <script src="./index.js"></script>
</body>

</html>
const imageData = {
  "person": ["李若彤", "张檬", "景甜", "范冰冰", "刘亦菲", "王丽坤", "赵丽颖", "刘诗诗"],
  "car": ["宝马", "宝马跑车", "奔驰越野", "奔驰跑车", "英菲尼迪"],
  "fruiter":["橄榄树","火龙果树","桔子树","苹果树","山楂树"]
};
const sectionData = {
  "default":"全部",
  "person": "人物图片",
  "car": "汽车图片",
  "fruiter":"果树图片"
};
let imgResult;
let itemData="";
let concatData = [];

function come() {
  let optionResult = "";
  for (let key in sectionData) {
    optionResult += `<option value="${key}">------${sectionData[key]}------</option>`;
  }
  for (let key in imageData) {
    for (let j in imageData[key]) {
      concatData = concatData.concat(imageData[key][j]);
    }
  }
  itemData = "";
  concatData.forEach((dataVal) => {
    itemData += `<div class="v-list-item"  onclick="see(this)">${dataVal}</div>`;
  })
  document.querySelector("#v-select").innerHTML = optionResult;
  document.querySelector("#v-list").innerHTML = itemData;
}
function getCategory(res) {
  console.log(itemData);
  imgResult = "";
  let itemDataTip = "";
  if (res.value === "default") {
    document.querySelector("#v-list").innerHTML = itemData;
    return;
  }
  imageData[res.value].forEach((dataVal) => {
      imgResult += `<img src="./image/${dataVal}.jpg" alt="" />`;
      itemDataTip += `<div class="v-list-item"  onclick="see(this)">${dataVal}</div>`;

  })
  document.querySelector("#v-list").innerHTML = itemDataTip;
  document.querySelector("#box").innerHTML = imgResult;
}

function getSuited(me) {
  let suitedVal = me.value;//document.querySelector("#v-input").value;
  //console.log(suitedVal);
  let items = "";
  if ("" !== suitedVal) {
    objFilter(suitedVal).forEach((dataVal) => {
      items+=`<div class="v-list-item" onclick="see(this)">${dataVal}</div>`;
    })
  }
  document.querySelector("#v-list").innerHTML = items;
}
function objFilter(res) {
  let objData = concatData.filter(function (val, index, self) {
    return val.indexOf(res) !== -1;
  });
  return objData;
};
function see(me){
  console.log(me.innerText);
  let imgStyle = `
	width: 62%;
	height: 60vh;
	left: 18%;
	top: 20vh;
	z-index: 2;
	box-shadow: 5px 5px 5px #ddd;
	transform: rotate(0deg) scale(1.5);
  `;
  document.querySelector("#box").innerHTML = `<img style="${imgStyle}" src="./image/${me.innerText}.jpg" alt="" />`;
}
body{
		padding: 0;
		margin: 0;
		border: 0;
		box-sizing: border-box;
    overflow: hidden;
}
.container{
	display: flex;
	width:100vw;
	height: 100vh;
	/* overflow: hidden; */
	background-color: #f7f7f7;
}
.v-aside{
	min-width: 20vw;
	height: 100%;
	border: #ddd 3px solid;
}
.v-form{
	width: 96%;
	min-height:10vh;
	margin: 0 auto;
	margin-top: 5px;
	font-size: 16px;
}
.v-form-item{
	width: 96%;
	height:60px;
	margin: 0 auto;
}
#v-input{
	margin-top: 15px;
	width: 93%
}
.v-list{
	display: flex;
	flex-direction: column;
	list-style: none;
	width: 95%;
	margin: 0 auto;
	max-height: 85vh;
	overflow-y: auto;
	overflow-x: hidden;
}
.v-list::-webkit-scrollbar{
	width: 0;
	height: 0;
}
.v-list-item:first-of-type{
	margin-top: 10px;
}
.v-list-item:last-of-type{
	margin-bottom: 70px;
}
.v-list-item{
	width: 95%;
	height: 50px;
	line-height: 50px;
	margin-top: 15px;
	border: #ddd 1px solid;
	align-items: center;
	box-shadow: 3px 3px 6px rgba(0, 0, 0, 0.74);
}
.v-list-item:hover{
	background-color: #ddd;
	color: aquamarine;
	border-radius: 6px;
}
.container .box {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	min-width: 80vw;
	/* margin: 200px auto; */
	margin: 0 auto;
	position: relative;
	border: #ddd 3px solid;
}
div img:nth-child(even) {
	width: 200px;
}

div img:nth-child(odd) {
	width: 300px;
}
.box img {
	border: 1px solid #ddd;
	padding: 10px;
	position: absolute;
	background: #fff;
	z-index: 1;
	/*过渡动画*/
	transition: all 0.6s ease-in-out;
	-webkit-transition: all 0.6s ease-in-out;
	-moz-transition: all 0.6s ease-in-out;
	-o-transition: all 0.6s ease-in-out;
}

#box img:hover {
	width: 62%;
	height: 60vh;
	left: 18%;
	top: 20vh;
	z-index: 2; /*提高层级 */
	box-shadow: 5px 5px 5px #ddd;
	transform: rotate(0deg) scale(1.5);

}

.box img:nth-child(1) {
	top: 20vh;
	left: 20%;
	transform: rotate(-15deg);
}

.box img:nth-child(2) {
	top: 20vh;
	left: 30%;
	transform: rotate(-20deg);
}

.box img:nth-child(3) {
	top: 20vh;
	left: 40%;
	transform: rotate(15deg);
}

.box img:nth-child(4) {
	top: 20vh;
	left: 50%;
	transform: rotate(-20deg);
}

.box img:nth-child(5) {
	top: 20vh;
	left: 60%;
	transform: rotate(-30deg);
}

.box img:nth-child(6) {
	top: 50vh;
	left: 20%;
	transform: rotate(20deg);
}

.box img:nth-child(7) {
	top: 50vh;
	left: 30%;
	transform: rotate(20deg);
}

.box img:nth-child(8) {
	top: 50vh;
	left: 40%;
	transform: rotate(30deg);
}

.box img:nth-child(9) {
	top: 50vh;
	left: 50%;
	transform: rotate(15deg);
}

.box img:nth-child(10) {
	top: 50vh;
	left: 60%;
	transform: rotate(-10deg);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值