照片库使用JavaScript

时间:2016-10-15 15:30:07

标签: javascript css

我正在尝试使用html css和javascript创建一个简单的照片库。在我的项目的顶部,我有5个缩略图,可容纳5张图像。在我的缩略图下面,我有一个与原始图像大小相当的div。我想要发生的是当用户点击任何缩略图照片以缩略图下方的div显示其原始大小的照片。我已经创建了项目的开始,但我不知道如何完成它。如果有人能帮助我完成我必须添加的代码(css和JS)以完成此操作,我将非常感激。

感谢。

HTML:

div id="img-thumbnails">
  <img src="assets/imgs/img-01.jpg">
  <img src="assets/imgs/img-02.jpg">
  <img src="assets/imgs/img-03.jpg">
  <img src="assets/imgs/img-04.jpg">
  <img src="assets/imgs/img-05.jpg">
</div>

 <div id="img-original">

 </div>

CSS:

#img-thumbnails {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
}

#img-thumbnails img {
    width:200px;
    height:100px;
    cursor: pointer;
    margin-left:20px;
}

#img-original {
    height:500px;
    width:800px;
    border:10px solid black;
    margin:30px auto;
}

1 个答案:

答案 0 :(得分:1)

以下是一个示例实现,您可以将其用作如何解决问题的指南。

我在这里使用div代替图像,因为我无法链接到。

var preview = document.getElementById('pretend_view');
var images = document.getElementById('pretend_images');
var thumbnails = document.querySelectorAll('#pretend_images > div');

thumbnails.forEach(function(elem){
	elem.onclick = onClick.bind(null, elem);
});

function onClick(elem, e){
	clearPreview();
  addToPreview(elem);
}

function clearPreview(){
	var elem = document.querySelector('.preview');
  
  if(elem){
    elem.className = elem.className.replace('preview', '');
    images.appendChild(elem);
  }
}

function addToPreview(elem){
	elem.className = 'preview';
  preview.appendChild(elem);
}
#pretend_images > div {
    display: inline-block;
    width:50px;
    height:50px;
    cursor: pointer;
    margin-left:20px;
}

#pretend_preview {
    height:200px;
    width:300px;
    border:10px solid black;
    margin:30px auto;
}

#a {
  background-color: black;
}

#b {
  background-color: blue;
}

#c {
  background-color: green;
}

#d {
  background-color: pink;
}

.preview {
    height:200px;
    width:300px;
}
<div id="pretend_images">
  <div id="a"></div>
  <div id="b"></div>
  <div id="c"></div>
  <div id="d"></div>
</div>

 <div id="pretend_view"></div>