如何使用HTML CSS和JavaScript创建图片灯箱画廊

创建图片灯箱画廊通常采用的技术包含了HTML、CSS和JavaScript三种语言。下面我们将详细讲解如何使用这三种语言来创建图片灯箱画廊。

创建HTML代码

我们先来创建HTML代码,在HTML中包含了整个网页的结构和内容信息。在创建HTML时,常规做法是先创建一个HTML模板,在模板中包含了网页的基本信息。代码示例如下:

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>图片灯箱画廊</title>
</head>
<body>
  <h1>图片灯箱画廊</h1>

  <div id="gallery">
    <img src="http://example.com/image1.jpg" alt="">
    <img src="http://example.com/image2.jpg" alt="">
    <img src="http://example.com/image3.jpg" alt="">
    <img src="http://example.com/image4.jpg" alt="">
  </div>

  <div id="lightbox">
    <img src="">
  </div>

  <script src="gallery.js"></script>
</body>
</html>

在这个模板中,我们使用了HTML5的语法,定义了网页的基本结构和内容。其中,<h1>标签定义了网页的标题,<div>标签用于定义画廊和灯箱的容器。在画廊的容器中,我们定义了4张图片,这里使用了示例图片的链接,读者可以自行替换为自己的图片链接。在灯箱的容器中,我们定义了一个空的<img>标签,用于显示选中的图片。

创建CSS样式

我们需要使用CSS样式来美化我们的图片灯箱画廊。在CSS中,我们要为画廊和灯箱容器、图片样式提供相关的样式代码。代码示例如下:

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html, body {
  height: 100%;
}

body {
  font-family: 'Helvetica Neue', 'Helvetica', Arial, sans-serif;
  background-color: #f1f1f1;
  text-align: center;
  padding-top: 50px;
}

#gallery {
  margin: 40px auto;
  max-width: 800px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  grid-gap: 20px;
  justify-items: center;
  align-items: center;
}

#gallery img {
  cursor: pointer;
  max-width: 100%;
  height: auto;
}

#lightbox {
  position: fixed;
  display: none;
  background: rgba(0, 0, 0, 0.8);
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: auto;
  z-index: 100;
}

#lightbox img {
  max-width: 100%;
  height: auto;
  margin-top: 10%;
  margin-bottom: 10%;
}

在上述代码中,我们先设置了全局样式,包括了盒模型样式、页面结构和背景颜色。接下来我们定义了画廊和灯箱容器的样式,包括了容器的位置、大小、显示方式和对齐方式等属性。在样式中我们也提供了图片的样式,包括图片样式、鼠标指针形状等属性。通过这些样式的定义可以使我们的画廊和灯箱更加美化。

创建JavaScript脚本

随着HTML和CSS的完成,我们现在需要编写与之关联的JavaScript代码,通过JavaScript实现灯箱的切换效果。具体的JavaScript示例代码可以如下:

var gallery = document.getElementById('gallery');
var items = gallery.getElementsByTagName('img');

var lightbox = document.getElementById('lightbox');
var close = lightbox.getElementsByTagName('img')[0];
var content = lightbox.getElementsByTagName('img')[1];

for (var i = 0; i < items.length; i++) {
  items[i].addEventListener('click', function() {
    var src = this.src;
    lightbox.style.display = 'block';
    content.src = src;
  });
}

close.addEventListener('click', function() {
  lightbox.style.display = 'none';
});

在上述代码中,我们首先获取了我们在HTML中定义的画廊和灯箱容器对象。接下来我们绑定了画廊容器中的每个图片的点击事件,并且将点击的图片赋值给灯箱中的展示图片对象,同时显示灯箱容器。最后我们绑定了灯箱关闭按钮的点击事件,当点击该按钮时,隐藏灯箱容器。

示例一

以上三段代码的整合文件的在线演示:https://codepen.io/pen/?editors=1010

示例二

在示例一上,我们进一步优化了灯箱的功能,增加了自动循环切换和手动关闭功能。代码示例如下:

var gallery = document.getElementById('gallery');
var items = gallery.getElementsByTagName('img');

var lightbox = document.getElementById('lightbox');
var prev = lightbox.querySelector('.prev');
var next = lightbox.querySelector('.next');
var close = lightbox.querySelector('.close');
var content = lightbox.querySelector('.content');

var currentIndex = 0, maxIndex = items.length - 1;

function showSlide(index) {
  var item = items[index];
  var src = item.src;
  content.src = src;
}

function nextSlide() {
  if (currentIndex === maxIndex) {
    currentIndex = 0;
  } else {
    currentIndex++;
  }
  showSlide(currentIndex);
}

function prevSlide() {
  if (currentIndex === 0) {
    currentIndex = maxIndex;
  } else {
    currentIndex--;
  }
  showSlide(currentIndex);
}

for (var i = 0; i < items.length; i++) {
  items[i].addEventListener('click', function() {
    var index = Array.prototype.indexOf.call(items, this);
    showSlide(index);
    lightbox.style.display = 'block';
    currentIndex = index;
  });
}

close.addEventListener('click', function() {
  lightbox.style.display = 'none';
});

prev.addEventListener('click', function() {
  prevSlide();
});

next.addEventListener('click', function() {
  nextSlide();
});

setInterval(function() {
  nextSlide();
}, 5000);

在这个示例中,我们在灯箱中增加了向前和向后切换按钮,并且增加了自动切换效果。我们定义了一个当前显示图片的索引,增加了展示方法和切换方法。我们在画廊图片的点击事件中增加了当前索引的记录,并且显示第一张图片。在关闭按钮的点击事件中我们只需要关闭灯箱容器即可。在切换按钮的点击事件中,我们使用前一张和后一张切换效果方法,并且超出图片索引的范围进行处理。最后在自动循环切换定时器中,我们调用了后一张切换效果方法,实现了自动循环切换的效果。

附上一个多图轮播展示的在线链接:http://mygoshop.info/demo/photo/1353.htm

通过上述示例,我们了解了如何使用HTML、CSS和JavaScript技术实现图片灯箱画廊的功能,能够让用户更好地进行图片的浏览和展示,具备较高的使用价值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用HTML CSS和JavaScript创建图片灯箱画廊 - Python技术站

(0)
上一篇 2023年5月12日
下一篇 2023年5月12日

相关文章

  • Easy UI jQuery介绍

    EasyUI jQuery介绍 EasyUI是一个基于jQuery的开源UI库,提供了一系列易用的UI组件,能够帮助开发者更快捷地构建互联网应用程序。EasyUI包含了常见的UI组件,如:对话框,表格,树形菜单,下拉框,日期选择器等等。 EasyUI特点 丰富的组件:EasyUI提供了多种常用的UI控件,用于构建各种形式的web应用。 简单易用:EasyUI…

    jquery 2023年5月13日
    00
  • jquery $.each 和for怎么跳出循环终止本次循环

    对于jquery中的 $.each 和原生的for循环,跳出循环或者终止本次循环的方法略有不同。 1. jquery $.each $.each 是jquery中用于遍历数组和对象的方法,它的基本用法如下: $.each(arrayOrObject, function(index, value){ // 条目处理逻辑 }); 其中,arrayOrObject…

    jquery 2023年5月28日
    00
  • 如何在jQuery中使用aria-hidden属性来显示/隐藏函数

    如何在jQuery中使用aria-hidden属性来显示/隐藏函数: 基本概念 在介绍jQuery如何使用aria-hidden属性来显示/隐藏函数之前,我们需要对一些概念进行了解。aria-hidden属性是用于辅助功能的属性,在Web内容标记(HTML、SVG、MathML等)中指定该元素是否为辅助技术隐藏。当该属性值为”true”时,该元素将保持不可视…

    jquery 2023年5月12日
    00
  • jQWidgets jqxDataTable aggregatesHeight属性

    以下是关于“jQWidgets jqxDataTable aggregatesHeight属性”的完整攻略,包含两个示例说明: 简介 jqxDataTable 控件是一个数据表控件,可以用于和编辑数据。aggregatesHeight 属性是 jqxDataTable 控件的属性,用于设置聚合行的高度。 攻略 以下 jqx 控件的 aggregatesHei…

    jquery 2023年5月11日
    00
  • 在jQuery中,哪些方法是用来设置选定元素的样式

    在jQuery中,有多种方法可以用来设置选定元素的样式。以下是其中的三种方法: .css()方法 .css()方法用于或获取选定元素的CSS属性。该方法可以接受一个或多个CSS属性和值作为参数,也可以接受一个对象作为参数,该对象包含要设置的CSS属性和值。以下是.css()方法的基语法: $(selector).css(property, value) 在这…

    jquery 2023年5月9日
    00
  • jQWidgets jqxCalendar val() 方法

    jQWidgets 的 jqxCalendar 组件提供了 val() 方法,用于获取或设置日历的值。本文将详细介绍 val() 方法的使用方法,包括概述、示例以及注意事项。 val() 方法概述 val() 方法用于获取或设置日历的值。如果不传递参数,则该方法返回当前选中日期的 Date 对象。如果传递参数,则该方法将日历的值设置为指定的日期。 val()…

    jquery 2023年5月11日
    00
  • 基于jquery的气泡提示效果

    关于“基于jquery的气泡提示效果”,我向您介绍下面的攻略: 理解气泡提示的基本概念 气泡提示是指在网页制作中,常常出现的一种使用方式,是一种非常自然的交互形式。通常也被称为Popover,Tooltip等。基本特点是通过鼠标悬停或点击等操作,弹出包含标文、图片或网页元素等内容的气泡提示框,以达到更好的用户体验和更精确的交互提示信息。 思路与实现 在进行“…

    jquery 2023年5月28日
    00
  • jQWidgets jqxGrid scrollmode属性

    jQWidgets jqxGrid scrollmode属性详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件工具包。jqxGrid是其中之一,本文将细介绍jqxGrid的scrollmode属性,包括定义、语法和示例。 scrollmode属性的定义 jqxGrid的scrollmode属性用于设置网格的滚动模式。当网格的内容超…

    jquery 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部