HTMLCSS实现异环网站,期末web作业

   

本网站是我在学习前端时敲得,仅供学习使用。

 这段代码是一个完整的 HTML 网页项目,包含 HTML、CSS 和 JavaScript 部分,用于构建一个名为 “异环” 的网页。网页具备头部导航栏、主体视频展示、图片交互元素、音乐播放控制、视频弹窗播放以及底部信息展示等功能。

代码详细分析

1. HTML 部分
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>异环</title><!-- 谷歌字体链接 --><link rel="preconnect" href="https://fonts.googleapis.com" /><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /><link href="https://fonts.googleapis.com/css2?family=ZCOOL+QingKe+HuangYou&display=swap" rel="stylesheet" /><!-- CSS 链接 --><link rel="stylesheet" href="../css/index.css" />
</head><body><header><nav class="nav-wrapper"><section class="left"><img src="../png/NTE_logo.png" alt="NTE_logo" /></section><section class="middle"><ul><li><a href="./index.html" class="active">首页</a></li><li><a href="./charater1.html">角色介绍</a></li><li><a href="./city.html">都市映像</a></li><li><a href="./qingbao.html">情报速递</a></li><li><a href="./jiaru.html">加入我们</a></li></ul></section><section class="right"><div class="air"></div><div class="img" id="musicBtn"></div><audio id="music" src="../yh_gw_bgm.mp3" loop></audio></section></nav></header><main><div class="mainPartWrapper"><section class="mainVideo"><video src="../mp4/yh_bgv_20240704.mp4" loop autoplay muted></video></section><section class="left"><div class="NET"><img src="../png/indexNet.png" alt="NET" /></div></section><section class="middle"><div class="info1"></div><div class="img1"></div><div class="img2"></div></section><section class="video"><div><div class="img" id="videoTrigger"><video src="../mp4/3d3d139dbefb5bf8bc0fee2e1a2f5e06.mp4"></video></div></div></section><section class="taptap"><div class="img"><a href=""></a></div></section><section class="character"><div class="img"><a href="./charater1.html"><img src="../png/guide_role.png" alt="" /></a></div></section></div></main><!-- 视频覆盖层 --><div class="video-overlay" id="videoOverlay"><video id="centeredVideo" controls></video></div><footer><section class="wrapper"><div class="left"><ul><li class="item"><a href="#"></a></li><li class="item1"><a href="#"></a></li><li class="item2"><a href="#"></a></li><li class="item3"><a href="#"></a></li><li class="item4"><a href="#"></a></li><li class="item5"><a href="#"></a></li><li class="item6"><a href="#"></a></li><li class="item7"><a href="#"></a></li></ul></div><div class="middle"><img src="" alt="" /></div><div class="right"><div class="air"></div><div class="img"></div></div></section></footer><script>// 音乐控制const musicBtn = document.getElementById('musicBtn');const music = document.getElementById('music');// 初始状态设为暂停music.pause();musicBtn.addEventListener('click', function () {if (music.paused) {music.play();this.style.backgroundPosition = '0 -4.31rem'; // 切换到播放状态} else {music.pause();this.style.backgroundPosition = '0 0'; // 切换回暂停状态}});// 视频控制const videoTrigger = document.getElementById('videoTrigger');const videoOverlay = document.getElementById('videoOverlay');const centeredVideo = document.getElementById('centeredVideo');const smallVideo = videoTrigger.querySelector('video');videoTrigger.addEventListener('click', function () {centeredVideo.src = smallVideo.src;videoOverlay.style.display = 'flex';centeredVideo.play();});videoOverlay.addEventListener('click', function (e) {if (e.target === this) { // 只点击覆盖层时关闭centeredVideo.pause();videoOverlay.style.display = 'none';}});</script>
</body></html>
  • 头部(<head>

    • 设置字符编码为 UTF - 8,并配置视口以实现响应式设计。
    • 引入谷歌字体 ZCOOL QingKe HuangYou,为网页提供独特的字体样式。
    • 链接外部 CSS 文件 index.css,用于定义网页的样式。
  • 主体(<body>

    • 头部导航栏(<header>
      • 左侧展示网站 logo 图片。
      • 中间是导航菜单,包含首页、角色介绍、都市映像、情报速递和加入我们等链接。
      • 右侧有一个音乐播放控制按钮和一个音频元素,音频可循环播放。
    • 主体内容(<main>
      • 顶部有一个全屏循环播放的静音视频作为背景。
      • 包含多个部分,有图片展示区域、视频触发区域、角色引导图片等。
    • 视频覆盖层(.video - overlay:用于在点击视频触发区域时弹出视频播放窗口,视频可控制播放。
    • 底部(<footer>:分为左、中、右三个部分,左侧有多个图标链接,中间预留图片展示区域,右侧有一个占位元素和一个图片。
  • JavaScript 部分

    • 音乐控制:通过点击音乐按钮控制音乐的播放和暂停,同时切换按钮的背景位置以显示不同状态。
    • 视频控制:点击视频触发区域,将小视频的源复制到覆盖层的视频中,显示覆盖层并播放视频;点击覆盖层空白处可关闭视频。
    • 2. CSS 部分
    • * {margin: 0;padding: 0;box-sizing: border-box;font-family: "ZCOOL QingKe HuangYou", "Courier New", Courier, monospace;font-size: 1rem;font-weight: normal;
      }body {overflow: hidden;
      }body header {box-shadow: 2px 2px 2px 1px rgba(29, 29, 29, 0.5);
      }body header nav.nav-wrapper {width: 100%;display: flex;background-size: cover;background: #1d1d1d url(https://yh.wanmei.com/images/cover240718/header.png) no-repeat right top;height: 8.3vh;
      }body header nav.nav-wrapper section.left {display: flex;justify-content: space-around;flex: 2 1 100px;width: 20%;
      }body header nav.nav-wrapper section.left img {padding: 1rem;width: 40%;height: 110%;
      }body header nav.nav-wrapper section.middle {display: flex;flex: 7 1 700px;width: 70%;align-items: center;justify-content: center;
      }body header nav.nav-wrapper section.middle ul {width: 75%;display: flex;list-style-type: none;justify-content: space-around;
      }body header nav.nav-wrapper section.middle ul {position: relative;/* 为伪元素定位做准备 */z-index: 1;/* 确保内容在背景之上 */
      }/* 添加三个背景层作为伪元素 */
      body header nav.nav-wrapper section.middle ul::before,
      body header nav.nav-wrapper section.middle ul::after,
      body header nav.nav-wrapper section.middle ul li:first-child::before {content: "";position: absolute;top: 0;left: 0;width: 100%;height: 100%;pointer-events: none;/* 确保可以点击下面的链接 */
      }body header nav.nav-wrapper section.middle ul li a {text-decoration: none;color: #a7a7a7;font-size: 1.3rem;
      }body header nav.nav-wrapper section.middle ul li a.active {color: aqua;font-size: 1.1rem;text-decoration: none;
      }body header nav.nav-wrapper section.right {display: flex;flex: 1 1 100px;width: 20%;justify-content: space-around;align-items: center;
      }body header nav.nav-wrapper section.right div.air {width: 5rem;height: 5rem;
      }body header nav.nav-wrapper section.right div.img {margin-left: -2rem;width: 4.31rem;height: 4.31rem;background-size: cover;background-image: url(../png/bgMusicSwitch.png);background-position: 0 0;cursor: pointer;transition: background-position 0.3s ease;
      }body main {position: relative;
      }body main div.mainPartWrapper {width: 100%;height: 80vh;
      }body main div.mainPartWrapper section.mainVideo {width: 100%;height: 100%;
      }body main div.mainPartWrapper section.mainVideo video {width: 100%;height: 100%;object-fit: cover;
      }body main div.mainPartWrapper section.left div.NET {top: 690px;left: 42px;position: absolute;width: 13%;
      }body main div.mainPartWrapper section.left div.NET img {width: 70%;
      }body main div.mainPartWrapper section.middle {position: absolute;width: 40vw;height: 20vh;top: 425px;left: 500px;
      }body main div.mainPartWrapper section.middle div.img1 {position: absolute;top: 74px;left: 180px;width: 70%;height: 15vh;background-image: url(../png/indexYyBtn.png);background-repeat: no-repeat;background-position: 0 0;background-size: cover;
      }body main div.mainPartWrapper section.middle div.img1:hover {background-position: 0 -152px;
      }body main div.mainPartWrapper section.video {width: 10vw;height: 10vh;
      }body main div.mainPartWrapper section.video div {width: 100%;height: 100%;
      }body main div.mainPartWrapper section.video div div.img {position: absolute;top: 450px;left: 1210px;width: 9%;height: 14vh;background-position: 0 -123px;background-image: url(../png/pvBtn.png);background-size: cover;cursor: pointer;
      }body main div.mainPartWrapper section.video div div.img video {width: 100%;height: 100%;display: none;
      }body main div.mainPartWrapper section.taptap div.img {position: absolute;top: 280px;left: 1850px;width: 17.4vh;height: 32vh;background-image: url(../png/tapAside.png);background-repeat: no-repeat;background-position: -171px 0;
      }body main div.mainPartWrapper section.taptap div.img:hover {background-position: 0 0;
      }body main div.mainPartWrapper section.character div.img {top: 690px;left: 1750px;position: absolute;width: 20%;
      }body main div.mainPartWrapper section.character div.img img {width: 70%;
      }body footer {width: 100%;height: 11.7vh;
      }body footer section.wrapper {display: flex;width: 100%;height: 100%;background-color: #1d1d1d;
      }body footer section.wrapper div.left {flex: 2 1 200px;
      }body footer section.wrapper div.left ul {display: flex;list-style-type: none;justify-content: space-between;}body footer section.wrapper div.left ul {position: relative;/* 为绝对定位的子元素建立参照 */height: 55px;/* 设置与图标相同的高度 */margin-left: 50px;/* 初始左边距 */
      }body footer section.wrapper div.left ul li {position: absolute;top: 25px;width: 55px;height: 55px;background-image: url(../otherPlatform.png);background-size: 498px 110px;
      }/* 各个图标项的精确定位 */
      body footer section.wrapper div.left ul li.item {left: 0;background-position: -124px 0;
      }body footer section.wrapper div.left ul li.item:hover {background-position: -124px -55px;/* 修正悬停位置,应该是向下移动55px */
      }body footer section.wrapper div.left ul li.item1 {left: 70px;background-position: -58px 0;
      }body footer section.wrapper div.left ul li.item1:hover {background-position: -58px -55px;
      }body footer section.wrapper div.left ul li.item2 {left: 134px;background-position: 0 0;
      }body footer section.wrapper div.left ul li.item2:hover {background-position: 0 -55px;
      }body footer section.wrapper div.left ul li.item3 {left: 198px;background-position: -188px 0;
      }body footer section.wrapper div.left ul li.item3:hover {background-position: -188px -55px;
      }body footer section.wrapper div.left ul li.item4 {left: 262px;background-position: -252px 0;
      }body footer section.wrapper div.left ul li.item4:hover {background-position: -252px -55px;
      }body footer section.wrapper div.left ul li.item5 {left: 326px;background-position: -317px 0;
      }body footer section.wrapper div.left ul li.item5:hover {background-position: -317px -55px;
      }body footer section.wrapper div.left ul li.item6 {left: 390px;background-position: -380px 0;
      }body footer section.wrapper div.left ul li.item6:hover {background-position: -380px -55px;
      }body footer section.wrapper div.left ul li.item7 {left: 454px;background-position: -442px 0;
      }body footer section.wrapper div.left ul li.item7:hover {background-position: -442px -55px;
      }body footer section.wrapper div.middle {flex: 4 1 200px;background-image: url(../png/indexFoot.png);background-size: contain;margin-left: 100px;scale: 1.2;
      }body footer section.wrapper div.right {display: flex;flex: 2 1 200px;justify-content: space-around;align-items: center;
      }body footer section.wrapper div.right div.air {width: 10%;
      }body footer section.wrapper div.right div.img {width: 54%;height: 58%;background-image: url(../png/neverness.png);background-size: contain;
      }/* 视频覆盖层样式 */
      .video-overlay {display: none;position: fixed;top: 0;left: 0;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.8);justify-content: center;align-items: center;z-index: 1000;
      }.video-overlay video {max-width: 80%;max-height: 80%;outline: none;
      }

总结

这个网页项目通过 HTML 构建页面结构,CSS 实现页面样式和交互效果,JavaScript 实现音乐和视频的控制功能。整体布局合理,交互丰富,能够为用户提供较好的浏览体验。在实际使用时,需要确保图片和音视频文件的路径正确,以保证网页的正常显示和功能实现。

效果如图

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

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

相关文章

Oracle表的别名不能用as,列的别名可以用as

在 Oracle 数据库中&#xff0c;‌表的别名‌和‌列的别名‌在使用 AS 关键字时确实有不同规则&#xff0c;以下是详细说明&#xff1a; 1. 表的别名&#xff08;Table Alias&#xff09;‌ ‌不支持 AS 关键字‌&#xff0c;直接跟在表名后即可。‌语法示例‌&#xff1a; S…

【SAP ME 44】在 HANA DB中报废SFC时的SHOP_ORDER表记录锁定

症状 SELECT…FROM SHOP_ORDER FOR UPDATE 在 SFC 报废期间持有锁,当同时调用数量较大时,可能会导致 HANA 数据库出现大量锁积压。这有时会导致因等待 HANA 数据库释放“选择更新”锁而导致报废 SFC 花费数分钟。 HANA 数据库日志中的示例: # begin PreparedStatement_ex…

Vscode开发Vue项目NodeJs启动报错处理

文章目录 背景一、npm启动报错报错信息定位原因处理方案第一步、下载安装高版本 二、node 无法识别报错信息处理方案定位原因第一步、检测环境变量第二步、重新开启界面 背景 使用Vscode开发Vue项目&#xff0c;使用到NodeJs&#xff0c;记录出现的问题及处理方案&#xff0c;…

破局遗留系统!AI自动化重构:从静态方法到Spring Bean注入实战

在当今快速发展的软件行业中,许多企业都面临着 Java 遗留系统的维护和升级难题。这些老旧系统往往采用了大量静态方法,随着业务的不断发展,其局限性日益凸显。而飞算 JavaAI 作为一款强大的 AI 工具,为 Java 遗留系统的重构提供了全新的解决方案,能够实现从静态方法到 Spring B…

2025妈妈杯数学建模C题完整分析论文(共36页)(含模型建立、可运行代码、数据)

2025 年第十五届 MathorCup 数学建模C题完整分析论文 目录 摘 要 一、问题分析 二、问题重述 三、模型假设 四、 模型建立与求解 4.1问题1 4.1.1问题1思路分析 4.1.2问题1模型建立 4.1.3问题1代码&#xff08;仅供参考&#xff09; 4.1.4问题1求解结果&#xff08;仅…

【Python爬虫详解】第一篇:Python爬虫入门指南

什么是网络爬虫&#xff1f; 网络爬虫&#xff08;Web Crawler&#xff09;是一种自动获取网页内容的程序。它可以访问网站&#xff0c;抓取页面内容&#xff0c;并从中提取有价值的数据。在信息爆炸的时代&#xff0c;爬虫技术可以帮助我们高效地收集、整理和分析互联网上的海…

【JavaWeb后端开发02】SpringBootWeb + Https协议

课程内容&#xff1a; SpringBootWeb 入门 Http协议 SpringBootWeb案例 分层解耦 文章目录 1. SpringBootWeb入门1.1 概述1.2 入门程序1.2.1 需求1.2.2 开发步骤1.2.3 常见问题 1.3 入门解析 2. HTTP协议2.1 HTTP概述2.1.1 介绍2.1.2 特点 2.2 HTTP请求协议2.2.1 介绍2.2.2…

MATLAB 控制系统设计与仿真 - 37

范数鲁棒控制器的设计 鲁棒控制器的设计 根据双端子状态方程对象模型结构&#xff0c;控制器设计的目标是找到一个控制器K(s),它能保证闭环系统的范数限制在一个给定的小整数下&#xff0c;即 这时控制器的状态方程为&#xff1a; 其中X与Y分别为下面两个代数Riccati方程的解…

依赖冲突,缺失插件导致无法启动项目 强制安装命令(npm install --legacy-peer-deps)

小白终成大白 文章目录 小白终成大白前言总结 前言 运维工程师说搞一个自动化打包流程 在服务器装了hbuilder 找前端来启动项目 我没启动起来 … 启动报错 failed to load config from D:\zhuque-uniapp\vite.config.js 16:17:31.601 error when starting dev server: 16:17:3…

数据战略新范式:从中台沉淀到服务觉醒,SQL2API 如何重塑数据价值链条?

一、数据中台退烧&#xff1a;从 “战略神话” 到 “现实拷问” 曾几何时&#xff0c;数据中台被视为企业数字化转型的 “万能解药”&#xff0c;承载着统一数据资产、打破业务壁垒的厚望。然而&#xff0c;大量实践暴露出其固有缺陷&#xff1a;某零售企业投入 500 万元建设中…

警惕阿里云中的yum update操作不当导致:/sbin/init被清空导致Linux无法正常启动

由于使用阿里云进行部署测试&#xff0c;因而会对yum update进行操作&#xff0c;这两天更新了systemd-239-82.0.3.4.al8.2.x86_64&#xff0c;但存在报错&#xff0c;然后进行yum history undo和清空yum cache&#xff0c;但出现操作Linux命令行无效。具体来说&#xff0c;几个…

论文阅读:2023 ICLR Safe RLHF: Safe Reinforcement Learning from Human Feedback

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Safe RLHF: Safe Reinforcement Learning from Human Feedback 安全 RLHF:通过人类反馈进行安全强化学习 https://arxiv.org/pdf/2310.12773 https://github.com/PKU-Alignment/safe…

android rom打包解包工具,Android ROM定制:boot.img、recovery解包打包

安卓boot.img和recovery.img解析与修改指南 安卓映像文件结构解析 大家都知道安卓的核心更换是在boot.img里面&#xff0c;那么如何在Windows下解开它呢&#xff1f;这里介绍一个实用的方法。 首先需要获取bootimg.exe工具&#xff0c;这个工具最初是为华为设备开发的&#…

cdp-(Chrome DevTools Protocol) browserscan检测原理逆向分析

https://www.browserscan.net/zh/bot-detection 首先,打开devtools后访问网址,检测结果网页显示红色Robot,标签插入位置,确定断点位置可以hook该方法,也可以使用插件等方式找到这个位置,本篇不讨论. Robot标签是通过insertBefore插入的. 再往上追栈可以发现一个32长度数组,里面…

PostgreSQL 通过 copy 命令导入几何数据 及 通过 CopyManager.copyIn() 导入几何数据

COPY命令介绍 copy是postgresql提供的一个专门用于快速导入导出数据的命令,通常用于从文件(TXT、CSV等)或标准输入输出中读取或写入数据。适合批量导入导出数据,速度快。 默认情况下,如果在处理过程中遇到错误,COPY将失败。 COPY只能用于表,不能用于视图!!! COPY…

常用的几种 Vue 父子组件传值方式

1. 父组件向子组件传值(props) 父组件代码:Parent.vue <template><div><h2>父组件</h2><Child :parent-msg="parentMsg" /></div> </template><script> import Child from ./Child.vue;export default {componen…

【1】云原生,kubernetes 与 Docker 的关系

Kubernetes&#xff1f;K8s&#xff1f; Kubernetes经常被写作K8s。其中的数字8替代了K和s中的8个字母——这一点倒是方便了发推&#xff0c;也方便了像我这样懒惰的人。 什么是云原生&#xff1f; 云原生&#xff1a; 它是一种构建和运行应用程序的方法&#xff0c;它包含&am…

Eureka搭建

1.注册中心server端 1.1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency><groupId>org.springframework.cloud</…

2025年最新版动漫短剧系统开发小程序app教程,源码部署上线

以下是动漫短剧系统开发上线的详细教程&#xff0c;包含从0到1的全流程&#xff1a; 一、需求分析&#xff08;关键&#xff1a;明确核心功能&#xff09; 核心功能清单&#xff1a; 用户端&#xff1a;短视频浏览、弹幕评论、收藏/点赞、创作者关注、付费订阅。创作者端&am…

集成学习基础应用实践

集成学习简介 学习目标&#xff1a; 1.知道集成学习是什么&#xff1f; 2.了解集成学习的分类 3.理解bagging集成的思想 4.理解boosting集成的思想 知道】集成学习是什么&#xff1f; 集成学习是机器学习中的一种思想&#xff0c;它通过多个模型的组合形成一个精度更高的…