js小练习(五):简易电子相册的制作
(一)核心思想:
(1)写一个占位模块作为展板,通过getattribute和setattribute来获取点击内容。a标签设置onclick事件return false,获取但不跳转。
(2)考虑到平稳退化,尽可能的不使用内嵌函数。
(3)布局基本使用flex盒子模型。
(二)实现代码:
(1)html部分:
<!--照片列表-->
<div>
<ul id="imageGallery">
<li><a href="../../images/albumImgs/1.jpg" title="tree" >图片1</a></li>
<li><a href="../../images/albumImgs/2.jpg" title="clerk" > 图片2</a></li>
<li><a href="../../images/albumImgs/3.jpg" title="waterlemon" >图片3</a></li>
<li><a href="../../images/albumImgs/4.jpg" title="book">图片4</a></li>
</ul>
</div>
<!--展示板-->
<div class="box">
<img id="placeHolder" src="../../images/albumImgs/3.jpg" alt="my album" >
<p id="description"> 显示描述</div>
</div>
(2)js部分:
window.onload = function(){
gallery();
}
function showPic(whichPic){
var source = whichPic.getAttribute("href");
var placehoder = document.getElementById("placeHolder");
placehoder.setAttribute("src",source);
var text =whichPic.getAttribute("title");
var description = document.getElementById("description");
description.firstChild.nodeValue = text;
}
function gallery(){
var gallery = document.getElementById("imageGallery");
var arr = document.getElementsByTagName("a");
for(var i=0; i<arr.length; i++){
arr[i].onclick = function(){
showPic(this);
return false;
}
}
}
(3)css部分:
.title{
display: flex;
justify-content: center;
color: red;
font-size: 50px;
}
ul{
overflow: hidden;
display: flex;
flex-direction: row;
justify-content: center;
}
li{
list-style: none;
margin:50px;
}
.box{
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
}
#placeHolder{
width:600px;
height:400px;
border: 2px black;
box-shadow: 2px 2px 1px grey;
animation: anim 1s linear;
}
@keyframes anim{
0%{transform: scale(0);}
50%{transform: scale(0.5);}
100%{transform: scale(1);}
}
注意:
css这部分本来是设置了一个点击逐渐扩大的出现效果,但是后来用js控制onclick事件的时候发现改变样式后return false不生效了,也就是说a标签组织跳转功能失效。 暂时还没想到好的解决办法,有点头疼。
(三)实现效果:
(四)参考资料:
JavaScript DOM 编程艺术(顺路一说,js的红皮书确实太枯燥了,我个人是比较喜欢这种带有实例训练的书籍)
(五)源码下载:
https://download.****.net/download/qq_36680300/10707081