css自学框架之图片灯箱展示

2023-10-30 15:59

本文主要是介绍css自学框架之图片灯箱展示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现的功能是页面中的图片单击,在灯箱中显示,单击按钮上下切换,单击灯箱退出展示,效果如下GIF展示。

实现步骤还是老样子,三方面工作一是CSS、二是JavaSxcript,三是HTML,下面开始一步一步实现,最后可以下载完整源码。
请添加图片描述

一、CSS部分,这部分主要是定义样式,也就是我们看到的外表,背景黑色60%透明,上下切换按钮、鼠标样式、载入图片等待等。主要代码:

[myth-image=active]{cursor: pointer;cursor: zoom-in;}		.myth-image{top: 0;left: 0;right: 0;bottom: 0;z-index: 66;position: fixed;user-select: none;animation: fade-in .3s both;-webkit-animation: fade-in .3s both;}.myth-image.loading{ cursor: wait }.myth-image.remove:before{animation: fade-off .3s both; -webkit-animation: fade-off .3s both;}		.myth-image:before{top: 0;left: 0;right: 0;bottom: 0;content: '';position: absolute;background: rgba(0, 0, 0, .6);}		.myth-image .myth-prev, .myth-image .myth-next{top: 0;bottom: 0;width: 10%;height: 5em;margin: auto;max-width: 5em;cursor: pointer;position: absolute;transition: opacity .3s, transform .3s;}.myth-image .myth-prev:hover{ transform: translateX(-.5em) }.myth-image .myth-next:hover{ transform: translateX(.5em)  }.myth-image .myth-prev{left: 0;background: center/60% no-repeat url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0icmdiYSgyNTUsMjU1LDI1NSwwLjkpIj48cGF0aCBkPSJNMzI0LjIxMTUxNyA1MTEuODA1NjMxIDc4Ny44ODk1OTQgNzMuMDgyNTgzYzE2LjE5NDIyLTE2LjYzMDM2NSAxNi4xOTQyMi00My45NzQ3MDQgMC02MC42MDUwNjgtMTYuMTk0MjItMTYuNjMwMzY1LTQyLjQ5NTYwNy0xNi42MzAzNjUtNTguNjEzOTc2IDBMMjM1Ljc1MDExMyA0NzkuMzYwMzAyYy04LjY0NzAzMSA4Ljk2OTM5OC0xMi4zNDQ3NzUgMjAuOTM0OTE3LTExLjcxOTAwMyAzMi40NDUzMjktMC42NDQ3MzUgMTEuOTA4NjMgMy4wNzE5NzIgMjMuODc0MTQ5IDExLjcxOTAwMyAzMi44MjQ1ODVsNDkzLjUwNjU0MiA0NjYuODgyNzg4YzE2LjExODM2OSAxNi42NDkzMjcgNDIuNDM4NzE4IDE2LjY0OTMyNyA1OC42MTM5NzYgMCAxNi4xOTQyMi0xNy4wODU0NzEgMTYuMTk0MjItNDMuOTc0NzA0IDAtNjAuNjA1MDY4TDMyNC4yMTE1MTcgNTExLjgwNTYzMSI+PC9wYXRoPjwvc3ZnPg==);}.myth-image .myth-next{right: 0;background: center/60% no-repeat url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAwIDIwMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9InJnYmEoMjU1LDI1NSwyNTUsMC45KSI+PHBhdGggZD0iTTEzNi43LDEwMGwtOTAuNiw4NS44Yy0zLjIsMy4yLTMuMiw4LjUsMCwxMS44YzMuMiwzLjMsOC4zLDMuMywxMS40LDBsOTYuNC05MS4yYzEuNy0xLjcsMi40LTQuMSwyLjMtNi40YzAuMS0yLjItMC42LTQuNi0yLjMtNi4zTDU3LjYsMi40Yy0zLjEtMy4yLTguMy0zLjItMTEuNCwwcy0zLjIsOC42LDAsMTEuOEwxMzYuNywxMDAiLz48L3N2Zz4NCg==);}		.myth-image .ended{opacity: .5;cursor: no-drop;}		.myth-image .myth-ball{top: 1em;right: 1em;width: 2em;height: 2em;opacity: 0;border-radius: 66%; position: absolute; pointer-events: none;transition: opacity .3s;border: .5em #fff solid;border-left-color: #3498db;border-left-color: var(--primary); animation: rotate .5s linear infinite paused;-webkit-animation: rotate .5s linear infinite paused;}.myth-image.loading .myth-ball{opacity: 1;animation-play-state: running;}		.myth-image img, .myth-image video{top: 0;left: 0;right: 0;bottom: 0;margin: auto;max-width: 80%;max-height: 90%;cursor: zoom-out;position: absolute;transition: transform .3s;animation: fade-small-large .3s backwards;-webkit-animation: fade-small-large .3s backwards;}.myth-image video{cursor: auto;}		.myth-image img:not([src]), .myth-image video:not([src]){display: none;}		.myth-image.remove img, .myth-image.remove video, .myth-image.remove .myth-prev, .myth-image.remove .myth-next{animation: fade-large-small .3s both;-webkit-animation: fade-large-small .3s both;}		.myth-image img[src$=".jpg"], .myth-image video{box-shadow: 0 5px 15px rgba(0, 0, 0, .5);}

二、JavaScript部分,这部分主要实现图片单击展开灯箱,实现切换等一些列展示效果。具体代码如下,这部分代码要放在我们以前写的Myth.js对应位置。

image:function(){var that = this;var image_box = {img: that.create("img"),prev: that.create("div", {class: "myth-prev"}),next: that.create("div", {class: "myth-next"}),ball: that.create("div", {class: "myth-ball"})};image_box.wrap = that.create("div", {class: "myth-image", child: [image_box.prev, image_box.img, image_box.next, image_box.ball]});image_box.wrap.onclick = function (e) {image_box.wrap.classList.add("remove");setTimeout(function () {try{document.body.removeChild(image_box.wrap);image_box.wrap.classList.remove("remove");}catch (err){}}, 300);};image_box.img.onload = function () {image_box.wrap.classList.remove("loading");};// 设置按钮image_box.prev.onclick = function (e) {e.stopPropagation();if(current - 1 >= 0) current--;actions.set();};image_box.next.onclick = function (e) {e.stopPropagation();if(current + 1 < that.dom.length) current++;actions.set();};var current = 0;			var actions = {ori: function (obj, num) {obj.setAttribute("myth-image", "active");	obj.onclick = function () {current = num;actions.set();document.body.appendChild(image_box.wrap);};},set: function () {var img = that.dom[current];current === 0 ? image_box.prev.classList.add("ended") : image_box.prev.classList.remove("ended");current === that.length - 1 ? image_box.next.classList.add("ended") : image_box.next.classList.remove("ended");		if(img.getAttribute("myth-original") !== null){image_box.img.src = img.getAttribute("myth-original");}else if(img.src){image_box.img.src = img.src;}else{console.error("This image has no valid tag!");}image_box.wrap.classList.add("loading");}};this.each(function(item){if(item.src ){actions.ori(item, item.index);}});}

三、HTML部分,该部分就是如何使用第一、二部分的代码。

<div class="mythBox mid"><p><img src="img/1.png" title="one" myth-image="active" class="myth-picbox" myth-original="img/1.png"></p><p><img src="img/2.png" title="one" myth-image="active" class="myth-picbox" myth-original="img/2.png"></p><p><img src="img/3.png" title="one" myth-image="active" class="myth-picbox" myth-original="img/3.png"></p><p><img src="img/4.png" title="one" myth-image="active" class="myth-picbox" myth-original="img/4.png"></p></div>	<script type="text/javascript">myth('.myth-picbox').image();			</script>

这部分代码分为两个部分,一是页面图片展示,二是JS调用实现灯箱效果。
源代码下载:请单击

这篇关于css自学框架之图片灯箱展示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/309036

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十