图片画廊 day2 (可复制源码)

图片画廊和幻灯片效果

在现代网页设计中,图片画廊和幻灯片效果不仅是展示内容的工具,更是提升用户体验的关键元素。本文将对之前实现的图片画廊和幻灯片效果进行优化,使其更加美观和用户友好。我们将分析哪些地方进行了修改,并解释这些修改的原因。

优化设计思路

我们的目标依然是创建一个响应式的图片画廊,用户可以通过点击图片查看更大的版本。优化将集中在以下几个方面:

  • 改进图片布局和样式,使其更加吸引人。
  • 增强幻灯片的视觉效果和用户体验。
  • 增加可访问性和交互性。

1. 修改后的 HTML 结构

我们将保持 HTML 结构的基本形式,但可以考虑使用更语义化的标签。

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>图片画廊和幻灯片</title><link rel="stylesheet" href="styles.css">
</head>
<body><main class="gallery"><figure><img class="photo" src="https://via.placeholder.com/200" alt="图片1" /><figcaption>图片1</figcaption></figure><figure><img class="photo" src="https://via.placeholder.com/201" alt="图片2" /><figcaption>图片2</figcaption></figure><figure><img class="photo" src="https://via.placeholder.com/202" alt="图片3" /><figcaption>图片3</figcaption></figure><figure><img class="photo" src="https://via.placeholder.com/203" alt="图片4" /><figcaption>图片4</figcaption></figure></main><!-- 幻灯片 --><div id="lightbox" class="lightbox" role="dialog" aria-labelledby="caption" aria-hidden="true"><button class="close" aria-label="关闭">&times;</button><img class="lightbox-content" id="lightbox-img" /><div class="caption" id="caption"></div></div><script src="script.js"></script>
</body>
</html>
修改说明:
  • 使用 <figure><figcaption>:将每个图片和其描述包裹在 <figure> 标签中,使用 <figcaption> 显示描述。这种结构更具语义性,便于搜索引擎和屏幕阅读器理解内容。
  • 添加可访问性属性:在幻灯片中添加 rolearia 属性,提升可访问性,使得使用辅助技术的用户体验更佳。

2. 修改后的 CSS 样式

我们将对 CSS 进行一些关键修改,以提升视觉效果。

body {font-family: 'Arial', sans-serif;background-color: #eaeaea;margin: 0;padding: 20px;
}.gallery {display: grid;grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));gap: 15px;
}.photo {width: 100%;height: auto;border-radius: 8px;box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);cursor: pointer;transition: transform 0.3s, box-shadow 0.3s;
}.photo:hover {transform: scale(1.05);box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
}.lightbox {display: none;position: fixed;z-index: 999;left: 0;top: 0;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.9);justify-content: center;align-items: center;
}.lightbox-content {display: block;max-width: 90%;max-height: 80%;border-radius: 8px;
}.close {position: absolute;top: 20px;right: 40px;color: white;font-size: 40px;cursor: pointer;background: transparent;border: none;
}.caption {margin: auto;text-align: center;color: white;position: absolute;bottom: 20px;width: 100%;font-size: 18px;
}
修改说明:
  • 使用 CSS Grid 布局:将画廊布局从 Flexbox 改为 CSS Grid,使得图片在不同屏幕尺寸下更加灵活地排列。
  • 添加边框和阴影:为图片添加圆角和阴影效果,提升视觉层次感,使其更具吸引力。
  • 调整幻灯片背景:将幻灯片的背景颜色调整为更深的黑色,以增强放大图片的对比度。
  • 改善关闭按钮:将关闭按钮设置为透明背景,提升用户体验。

3. 修改后的 JavaScript 功能

JavaScript 部分的逻辑保持不变,但可以添加一些功能增强用户体验。

const photos = document.querySelectorAll('.photo');
const lightbox = document.getElementById('lightbox');
const lightboxImg = document.getElementById('lightbox-img');
const caption = document.getElementById('caption');
const closeBtn = document.querySelector('.close');photos.forEach(photo => {photo.addEventListener('click', () => {lightbox.style.display = 'flex';lightboxImg.src = photo.src;caption.innerHTML = photo.alt;lightbox.setAttribute('aria-hidden', 'false'); // 更新可访问性属性});
});closeBtn.addEventListener('click', () => {lightbox.style.display = 'none';lightbox.setAttribute('aria-hidden', 'true'); // 更新可访问性属性
});// 点击光箱外部关闭
lightbox.addEventListener('click', () => {lightbox.style.display = 'none';lightbox.setAttribute('aria-hidden', 'true'); // 更新可访问性属性
});
修改说明:
  • 更新可访问性属性:在打开和关闭幻灯片时,更新 aria-hidden 属性,帮助屏幕阅读器用户理解当前状态。
  • 使用 Flexbox 进行居中:将幻灯片的 display 属性设置为 flex,使得图片在幻灯片中居中显示。

这个讲持续优化,请您多多关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/470734.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML之表单学习记录

如果一个页面仅仅供用户浏览&#xff0c;那就是静态页面。如果这个页面还能实现与服务器进行数据交互&#xff08;像注册登录、话费充值、评论交流&#xff09;​&#xff0c;那就是动态页面。表单是我们接触动态页面的第一步。其中表单最重要的作用就是&#xff1a;在浏览器端…

WPF学习之路,控件的只读、是否可以、是否可见属性控制

C#的控件学习之控件属性操作 控件的只读、是否可以、是否可见&#xff0c;是三个重要的参数&#xff0c;在很多表单、列表中都有用到&#xff0c;正常表单控制可以在父层主键控制参数是否可以编辑和可见&#xff0c;但是遇到个别字段需要单独控制时&#xff0c;可以在初始化wi…

three.js 杂记

clip&#xff1a; 1&#xff1a; 着色器 #ifdef USE_CLIP_DISTANCE vec4 worldPosition modelMatrix * vec4( position, 1.0 ); gl_ClipDistance[ 0 ] worldPosition.x - sin( time ) * ( 0.5 ); #endif gl_Position projectionMatrix * modelViewMatrix * vec4( positio…

基于混合配准策略的多模态医学图像配准方法研究

摘要&#xff1a; 提出了一种由“粗”到“细”的混合配准策略&#xff0c;该配准策略吸取了以往配准方法的优点&#xff0c;且在细配阶段将基于特征的配准方法和基于灰度的配准方法结合在一起&#xff0c;提出了基于轮廓特征点集最大互信息的配准方法&#xff0c;从而在速度和精…

贪心算法入门(二)

相关文章 贪心算法入门&#xff08;一&#xff09;-CSDN博客 1.什么是贪心算法&#xff1f; 贪心算法是一种解决问题的策略&#xff0c;它将复杂的问题分解为若干个步骤&#xff0c;并在每一步都选择当前最优的解决方案&#xff0c;最终希望能得到全局最优解。这种策略的核心…

Autosar CP 基于CAN的时间同步规范导读

Autosar CP 基于CAN的时间同步规范主要用途 实现精确时间同步 提供了一种在CAN总线上准确分发时间信息的机制&#xff0c;确保连接到CAN网络的各个电子控制单元&#xff08;ECU&#xff09;能够共享精确的公共时间基准&#xff0c;对于需要精确时间协调的汽车系统功能&#xff…

前端常用布局模板39套,纯CSS实现布局

前端常用布局模板39套&#xff0c;纯CSS实现布局 说明 写博客、官网、管理后台都可以参考以下布局模板&#xff0c;实现模板布局的方式包含&#xff1a;flex、CSS、HTML5、Layout。 不需要下载积分&#xff0c;没有特殊库引用&#xff0c;不用安装任何插件&#xff0c;打开资源…

jmeter常用配置元件介绍总结之后置处理器

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之后置处理器 8.后置处理器8.1.CSS/JQuery提取器8.2.JSON JMESPath Extractor8.3.JSON提取器8.4.正则表达式提取器8.5.边界提取器8.5.Debug PostProcessor8.6.XPath2 Extractor8.7.XPath提取器8.8.结果状态处理器 8.后置处理…

边缘计算在智能交通系统中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 边缘计算在智能交通系统中的应用 边缘计算在智能交通系统中的应用 边缘计算在智能交通系统中的应用 引言 边缘计算概述 定义与原…

Vue 项目打包后环境变量丢失问题(清除缓存),区分.env和.env.*文件

Vue 项目打包后环境变量丢失问题&#xff08;清除缓存&#xff09;&#xff0c;区分.env和.env.*文件 问题背景 今天在导报项目的时候遇到一个问题问题&#xff1a;在开发环境中一切正常&#xff0c;但在打包后的生产环境中&#xff0c;某些环境变量&#xff08;如 VUE_APP_B…

十三、注解配置SpringMVC

文章目录 1. 创建初始化类&#xff0c;代替web.xml2. 创建SpringConfig配置类&#xff0c;代替spring的配置文件3. 创建WebConfig配置类&#xff0c;代替SpringMVC的配置文件4. 测试功能 1. 创建初始化类&#xff0c;代替web.xml 2. 创建SpringConfig配置类&#xff0c;代替spr…

(干货)Jenkins使用kubernetes插件连接k8s的认证方式

#Kubernetes插件简介 Kubernetes 插件的目的是能够使用 Kubernetes 配合&#xff0c;实现动态配置 Jenkins 代理&#xff08;使用 Kubernetes 调度机制来优化负载&#xff09;&#xff0c;在执行 Jenkins Job 构建时&#xff0c;Jenkins Master 会在 kubernetes 中创建一个 Sla…

俏美韵从心出发,与女性一道为健康生活贡献力量

近期发布的《2025 全球食品与饮料》报告中显示&#xff0c;“回归本源”为2025年食品饮料赛道的趋势之一&#xff0c;消费者对于产品成分要求越来越严格&#xff0c;尤其是女性消费者&#xff0c;对成分是否自然&#xff0c;营养含量等方面越来越看重&#xff0c;俏美韵品牌从产…

区块链技术在慈善捐赠中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 区块链技术在慈善捐赠中的应用 区块链技术在慈善捐赠中的应用 区块链技术在慈善捐赠中的应用 引言 区块链技术概述 定义与原理 发…

mongoDB的安装及使用

mongodb的安装参考&#xff1a; Centos系统中mongodb的安装详解_centos安装mongodb-CSDN博客 不要下载最新的版本&#xff0c;新的版本中mongo命令无法使用&#xff0c;也就是安装后不能通过mongo命令登录&#xff0c;我这里使用5.0.30版本&#xff1b; mongodb客户端demo: …

DNS面临的4大类共计11小类安全风险及防御措施

DNS在设计之初&#xff0c;并未考虑网络安全限制&#xff0c;导致了许多问题。DNS安全扩展(DNSSEC)协议的开发旨在解决DNS的安全漏洞&#xff0c;但其部署并不广泛&#xff0c;DNS仍面临各种攻击。接下来我们一起看下DNS都存在哪些安全攻击及缓解措施&#xff0c;旨在对DNS安全…

MySql结合element-plus pagination的分页查询

实现效果如下&#xff1a; 重点&#xff1a;使用mysql查询的limit和offset 原生SQL写法&#xff1a; select c.id as deptid,c.name as department,position,a.name staffname,2024-11 as shijian ,CASE WHEN b.shijian IS NULL THEN no ELSE yes END AS submit from fa_wecom…

ubuntu20.04安装FLIR灰点相机BFS-PGE-16S2C-CS的ROS驱动

一、Spinnaker 安装 1.1Spinnaker 下载 下载地址为&#xff1a; https://www.teledynevisionsolutions.com/support/support-center/software-firmware-downloads/iis/spinnaker-sdk-download/spinnaker-sdk–download-files/?pnSpinnakerSDK&vnSpinnakerSDK 在上述地址中…

什么是数字图像?

点赞 关注 收藏 学会了 什么是数字图像&#xff1f; 本文可在公众号「德育处主任」免费阅读 弄懂数字图像的概念对学习计算机视觉很有帮助。 那么&#xff0c;什么是数字图像&#xff1f; 字面意思&#xff0c;数字图像就是有数字组成图像。通常由像素&#xff08;Pixel&…

2024年11月13日

1.创业法律指南 留置权和其他三个权 定金和订金 一般保证和连带保证 1.案例 物权编之担保法律制度案例一 冯系养鸡专业户&#xff0c;为改建鸡会和引进良种需资金20万元。冯向陈借款10万元&#xff0c;以自己的一套价值10万元的音响设备抵押&#xff0c;双方立有抵押字据&a…