JavaScript网页设计案例:互动式简历网站

news2024/11/18 3:44:18

JavaScript网页设计案例:互动式简历网站

在现代网页设计中,JavaScript 是实现交互和动态效果的关键技术。本文将通过一个完整的案例,展示如何使用 JavaScript 构建一个交互式的个人简历网页。本文不仅会涵盖 HTML 和 CSS 的使用,还会详细介绍如何利用 JavaScript 实现丰富的用户交互功能,如导航切换、动态加载内容、滚动动画等。
在这里插入图片描述

一、项目概述

本项目是一个互动式简历网站,它包含以下功能:

  1. 动态导航菜单:点击导航时页面会平滑滚动到对应的部分。
  2. 动态内容加载:点击按钮后,展示更多关于个人信息的详细内容。
  3. 动画效果:页面加载时内容淡入、滚动时元素渐入,增加用户体验。
    在这里插入图片描述

二、项目结构

首先,我们需要定义项目的基本结构。为了简洁,项目文件可以包括:

  • index.html:主页面文件,定义网页的结构。
  • style.css:CSS 文件,包含页面的样式和布局。
  • script.js:JavaScript 文件,实现交互效果。
    在这里插入图片描述

1. HTML 页面结构

以下是 HTML 页面结构的示例,包括头部、个人简介、技能展示、项目经验、联系信息等常见的简历部分。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Interactive Resume</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <!-- 导航栏 -->
  <nav id="navbar">
    <ul>
      <li><a href="#home">Home</a></li>
      <li><a href="#about">About</a></li>
      <li><a href="#skills">Skills</a></li>
      <li><a href="#projects">Projects</a></li>
      <li><a href="#contact">Contact</a></li>
    </ul>
  </nav>

  <!-- 首页部分 -->
  <section id="home">
    <h1>Welcome to My Resume</h1>
    <p>Hi, I'm a web developer with a passion for creating interactive web experiences.</p>
  </section>

  <!-- 关于我部分 -->
  <section id="about">
    <h2>About Me</h2>
    <p>I'm a web developer with over 5 years of experience...</p>
    <button id="more-info-btn">More Info</button>
    <div id="more-info" style="display: none;">
      <p>Here is some additional information about my background and experience...</p>
    </div>
  </section>

  <!-- 技能部分 -->
  <section id="skills">
    <h2>Skills</h2>
    <ul>
      <li>JavaScript</li>
      <li>HTML & CSS</li>
      <li>React.js</li>
      <li>Node.js</li>
    </ul>
  </section>

  <!-- 项目部分 -->
  <section id="projects">
    <h2>Projects</h2>
    <div class="project">
      <h3>Project 1: Interactive Webpage</h3>
      <p>Built a dynamic webpage using JavaScript, HTML, and CSS...</p>
    </div>
    <div class="project">
      <h3>Project 2: E-commerce Site</h3>
      <p>Developed a fully functional e-commerce site using React and Node.js...</p>
    </div>
  </section>

  <!-- 联系方式部分 -->
  <section id="contact">
    <h2>Contact Me</h2>
    <p>Email: example@example.com</p>
    <p>Phone: 123-456-7890</p>
  </section>

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

2. CSS 样式

接下来,我们来定义页面的样式。我们会使用基础的 CSS 来定义页面的布局,并为导航栏、各个部分添加样式。

/* 全局样式 */
body {
  font-family: Arial, sans-serif;
  line-height: 1.6;
  margin: 0;
  padding: 0;
  background-color: #f4f4f4;
}

/* 导航栏样式 */
#navbar {
  background-color: #333;
  color: #fff;
  padding: 1rem;
  position: fixed;
  top: 0;
  width: 100%;
  display: flex;
  justify-content: center;
  z-index: 1000;
}

#navbar ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
}

#navbar ul li {
  margin: 0 15px;
}

#navbar ul li a {
  color: #fff;
  text-decoration: none;
  padding: 10px 15px;
  display: inline-block;
}

#navbar ul li a:hover {
  background-color: #555;
  border-radius: 5px;
}

/* 部分样式 */
section {
  padding: 60px 20px;
  margin-top: 60px;
}

#home {
  background-color: #00aaff;
  color: #fff;
  text-align: center;
}

#about, #skills, #projects, #contact {
  background-color: #fff;
  margin: 20px 0;
}

button {
  padding: 10px 20px;
  background-color: #333;
  color: white;
  border: none;
  cursor: pointer;
  border-radius: 5px;
}

button:hover {
  background-color: #555;
}

/* 动画 */
.fade-in {
  opacity: 0;
  transition: opacity 1s ease-in;
}

.fade-in.show {
  opacity: 1;
}

3. JavaScript 动态效果

为了实现交互效果,我们将使用 JavaScript 来控制页面滚动、动态加载内容以及添加一些简单的动画效果。

// script.js

// Smooth scroll for navigation links
document.querySelectorAll('#navbar a').forEach(link => {
  link.addEventListener('click', function(e) {
    e.preventDefault();
    const targetId = this.getAttribute('href').substring(1);
    const targetSection = document.getElementById(targetId);
    window.scrollTo({
      top: targetSection.offsetTop - 50, // Subtract height of navbar
      behavior: 'smooth'
    });
  });
});

// Toggle additional information in About section
const moreInfoBtn = document.getElementById('more-info-btn');
const moreInfoDiv = document.getElementById('more-info');

moreInfoBtn.addEventListener('click', function() {
  if (moreInfoDiv.style.display === 'none') {
    moreInfoDiv.style.display = 'block';
  } else {
    moreInfoDiv.style.display = 'none';
  }
});

// Fade-in effect when sections come into view
const sections = document.querySelectorAll('section');
const options = {
  threshold: 0.5
};

const observer = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      entry.target.classList.add('show');
    }
  });
}, options);

sections.forEach(section => {
  section.classList.add('fade-in');
  observer.observe(section);
});

三、项目讲解

1. 平滑滚动

在这个项目中,我们为导航栏中的链接添加了平滑滚动效果。通过 JavaScript 的 window.scrollTo 方法,我们可以控制页面在点击导航链接时平滑地滚动到对应的部分。此功能可以增强用户的导航体验,特别是在多段内容的页面中。

2. 动态内容加载

“关于我”部分中实现了动态内容加载的效果。通过控制 display 样式,我们可以在用户点击按钮时显示或隐藏额外的信息。这种功能在实际项目中非常常见,尤其是在展示简历或文章详情时,用户可以根据需要查看更多的内容。

3. 动画效果

为了增强网页的视觉体验,使用了 IntersectionObserver API 来检测用户何时滚动到页面的某个部分,并为这些部分添加渐入效果。这种效果可以让页面看起来更加动感,提升用户的使用体验。
在这里插入图片描述

四、总结

通过本案例,我们展示了如何使用 JavaScript、HTML 和 CSS 设计一个简洁而功能丰富的互动式简历网页。在这个过程中,我们实现了平滑滚动、动态加载内容以及滚动动画等常见的 Web 交互功能。

这些技术不仅适用于简历网站,在任何需要用户交互的 Web 项目中都可以使用。希望通过这篇博客,你可以学习到如何构建动态、互动的网页,并在实际项目中灵活运用。
在这里插入图片描述

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

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

相关文章

机器学习:探索未知边界,解锁智能潜力

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 在这个日新月异的科技时代&#xff0c;机器学习作为人工智能领域的核心驱动力&#xff0c;正以前所未有的速度改变着我们的世界。从智能家居的个性化推荐到自动驾驶汽车的精准导航&#xff0c;从医疗诊断的辅助…

【数据结构与算法】基本概念

数据结构与算法——绪论 文章目录 一.数据结构的研究内容1.1数值计算1.2非数值计算 二.基本概念和术语2.1数据&#xff0c;数据元素&#xff0c;数据项和数据对象2.2数据结构2.2.1逻辑结构2.2.2存储结构&#xff08;物理结构&#xff09;2.2.3运算和实现 三.抽象数据类型的表示…

安装管理K8S的开源项目KubeClipper介绍

安装管理K8S的开源项目KubeClipper介绍 1. 概述 KubeClipper是九州云开源的一个图形化界面 Kubernetes 多集群管理工具&#xff0c;旨在提供易使用、易运维、极轻量、生产级的 Kubernetes 多集群全生命周期管理服务。让运维工程师从繁复的配置和晦涩的命令行中解放出来&#…

VMware下的ubuntu显示文字太小的自适应显示调整

我的情况 我使用的是4K的32寸显示器&#xff0c;分辨率为 3840 x 2160&#xff0c;ubuntu版本为18.04&#xff0c;默认的情况下系统分辨率为 3466 x 1842。 ​ 此时&#xff0c;显示的文字很小&#xff0c;虽然可以看清&#xff0c;但也比较吃力&#xff0c;在VMware窗口…

深入探索机器学习中的目标分类算法

在当今数据驱动的世界中&#xff0c;机器学习&#xff08;Machine Learning, ML&#xff09;正逐渐成为解决问题的重要工具。在众多机器学习任务中&#xff0c;目标分类&#xff08;Classification&#xff09;算法尤其受到关注。本文将深入探讨目标分类算法的基本概念、常见类…

828华为云征文|部署开源超轻量中文OCR项目 TrWebOCR

828华为云征文&#xff5c;部署开源超轻量中文OCR项目 TrWebOCR 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 TrWebOCR3.1 TrWebOCR 介绍3.2 TrWebOCR 部署3.3 TrWebOCR…

解压视频素材下载网站推荐

在制作抖音小说推文或其他短视频时&#xff0c;找到合适的解压视频素材非常重要。以下是几个推荐的网站&#xff0c;可以帮助你轻松下载高质量的解压视频素材&#xff1a; 蛙学网 蛙学网是国内顶尖的短视频素材网站&#xff0c;提供大量4K高清无水印的解压视频素材&#xff0c;…

C++:STL(四)之vector的基本介绍与使用方式|容器接口

✨ Blog’s 主页: 白乐天_ξ( ✿&#xff1e;◡❛) &#x1f308; 个人Motto&#xff1a;他强任他强&#xff0c;清风拂山冈&#xff01; &#x1f525; 所属专栏&#xff1a;C深入学习笔记 &#x1f4ab; 欢迎来到我的学习笔记&#xff01; 一、C/C中的字符串 1.1. C语言中的…

【机器学习】——决策树以及随机森林

文章目录 1. 决策树的基本概念与结构1.1 决策树的构建过程 2. 决策树的划分标准2.1 信息增益&#xff08;Information Gain&#xff09;2.2 信息增益比&#xff08;Information Gain Ratio&#xff09;2.3 基尼指数&#xff08;Gini Index&#xff09;2.4 均方误差&#xff08;…

极限基本类型小结

极限基本类型小结 在之前的文章中已经看过了极限的多种基本类型&#xff0c;下面展示一些各种基本类型的代表性的图像&#xff0c;通过观察下面的图像可以帮助我们回顾函数在趋近于某一点时函数值的行为&#xff08;这也叫极限值&#xff09;&#xff0c;也生动的描述了各种极…

老古董Lisp实用主义入门教程(12):白日梦先生的白日梦

白日梦先生的白日梦 白日梦先生已经跟着大家一起学Lisp长达两个月零五天&#xff01; 001 粗鲁先生Lisp再出发002 懒惰先生的Lisp开发流程003 颠倒先生的数学表达式004 完美先生的完美Lisp005 好奇先生用Lisp来探索Lisp006 好奇先生在Lisp的花园里挖呀挖呀挖007 挑剔先生给出…

关于工作虚拟组的一些思考

这是学习笔记的第 2493篇文章 因为各种工作协作&#xff0c;势必要打破组织边界&#xff0c;可能会存在各种形态的虚拟组。 近期沉淀了一些虚拟组的管理方式&#xff0c;在一定时间范围内也有了一些起色&#xff0c;所以在不断沉淀的过程中&#xff0c;也在不断思考。 这三个虚…

企业级版本管理工具(1)----Git

目录 1.Git是什么 2.Git的安装和使用 在Ubuntu下安装命令如下&#xff1a; 使用git --version查看已安装git的版本&#xff1a; 使用git init初始化仓库&#xff1a; 使用tree .git列出目录&#xff1a; 使用git config命令设置姓名和邮箱&#xff1a; 加入--global选项…

WPF MVVM入门系列教程(一、MVVM模式介绍)

前言 还记得早些年刚工作的那会&#xff0c;公司的产品从Delphi转成了WPF&#xff08;再早些年是mfc&#xff09;。当时大家也是处于一个对WPF探索的阶段&#xff0c;所以有很多概念都不是非常清楚。 但是大家都想堆技术&#xff0c;就提出使用MVVM&#xff0c;我那会是第一次…

想做个WPS的自动化代码,参考如下:

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…

水仙花数求解-C语言

1.问题&#xff1a; 输出100-1000之间所有的“水仙花数”。 2.解答&#xff1a; “水仙花数”是指一个3位数&#xff0c;其各位数字立方和等于该数本身&#xff0c;逐个位数判断即可&#xff0c;写代码的时候要考虑到每一位。 3.代码&#xff1a; #include<stdio.h>//…

9.28QT基础

widget.cpp widegt.h .pro main.cpp 一个仿QQ登录界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {this->setFixedSize(350,500);this->setStyleSheet("background-color:#e5f0ff;");QLineEdit *edit1 new QLine…

1.2.3 HuggingFists安装说明-MacOS安装

MacOS版安装说明 下载地址 【GitHub】GitHub - Datayoo/HuggingFists4Mac 【百度网盘】https://pan.baidu.com/s/12WxZ-2GgMtbQeP7AcmsyHg?pwd2024 安装说明 环境要求 操作系统&#xff1a;MacOS 硬件环境&#xff1a;至少4核8G 安装步骤 1. 安装Docker环境。若已安装Do…

kali linux 终端复用和界面移动

kali linux 终端复用和界面移动 经验和操作 渗透测试的工具选择考虑 01 能用命令行就不用图形ui 图形ui 容易对细节隐藏&#xff0c;命令行工具的在终端输出的日志相对透明&#xff0c;容易观察和调整 wireshark – tcpdump burpsuit – curl( web 访问相关), wfuzz(模糊测…

带你0到1之QT编程:十七、Http协议实战,实现一个简单服务器和一个客户端进行http协议通信

此为QT编程的第十七谈&#xff01;关注我&#xff0c;带你快速学习QT编程的学习路线&#xff01; 每一篇的技术点都是很很重要&#xff01;很重要&#xff01;很重要&#xff01;但不冗余&#xff01; 我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点&#xff01; …