Javascript 网页设计案例:进阶交互与动态效果

在掌握了 Javascript 网页设计的基础交互功能后,我们可以进一步探索更高级的应用,为网页添加更多的动态效果和复杂的交互逻辑,提升用户体验。今天,我们将在之前的用户登录页面案例基础上进行扩展,展示一些进阶的 Javascript 网页设计技巧。

一、案例扩展目标

我们将对之前的登录页面进行优化,使其在用户输入用户名和密码时,能够实时验证输入的合法性,并给出相应的提示。此外,当登录成功后,页面将跳转到一个欢迎页面,而不是仅仅弹出一个欢迎消息。同时,我们还将为页面添加一些动画效果,使页面的过渡更加平滑和美观。

二、实时输入验证

为了实现实时输入验证,我们需要为用户名和密码输入框分别添加 "input" 事件监听器。在事件处理函数中,我们可以使用正则表达式来验证输入是否符合要求。

// 为用户名输入框添加 input 事件监听器
usernameInput.addEventListener('input', function () {
  const username = usernameInput.value;
  // 简单的用户名验证,只允许字母和数字
  const usernamePattern = /^[a-zA-Z0-9]+$/;
  if (usernamePattern.test(username)) {
    // 如果符合要求,清除错误提示(如果有)
    usernameInput.nextElementSibling?.remove();
  } else {
    // 如果不符合要求,显示错误提示
    if (!usernameInput.nextElementSibling) {
      const errorSpan = document.createElement('span');
      errorSpan.textContent = 'Username should only contain letters and numbers.';
      errorSpan.style.color ='red';
      usernameInput.insertAdjacentElement('afterend', errorSpan);
    }
  }
});

// 为密码输入框添加 input 事件监听器
passwordInput.addEventListener('input', function () {
  const password = passwordInput.value;
  // 简单的密码验证,至少 6 位
  const passwordPattern = /^.{6,}$/;
  if (passwordPattern.test(password)) {
    // 如果符合要求,清除错误提示(如果有)
    passwordInput.nextElementSibling?.remove();
  } else {
    // 如果不符合要求,显示错误提示
    if (!passwordInput.nextElementSibling) {
      const errorSpan = document.createElement('span');
      errorSpan.textContent = 'Password should be at least 6 characters long.';
      errorSpan.style = 'color: red';
      passwordInput.insertAdjacentElement('afterend', errorSpan);
    }
  }
});

在上述代码中,我们为用户名输入框和密码输入框分别添加了 "input" 事件监听器。当用户在输入框中输入内容时,事件将被触发。在事件处理函数中,我们使用正则表达式对输入内容进行验证。如果输入符合要求,我们使用 "nextElementSibling" 属性检查并移除可能存在的错误提示元素;如果输入不符合要求,并且没有错误提示元素存在,我们创建一个新的 "span" 元素来显示错误提示,并将其插入到输入框的后面。

三、页面跳转与过渡效果

当登录成功后,我们希望页面能够平滑地跳转到欢迎页面。为此,我们可以使用 "window.location.href" 属性来实现页面跳转,并结合 CSS 动画来添加过渡效果。

首先,在 HTML 文件中添加一个欢迎页面的 div 元素,并设置其初始状态为隐藏:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Login Page</title>
  <style>
    /* 之前的样式省略 */

    /* 欢迎页面样式 */
  .welcome-page {
      display: none;
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: #f9f9f9;
      text-align: center;
      padding-top: 100px;
      animation: fadeIn 0.5s ease forwards;
    }

    @keyframes fadeIn {
      from {
        opacity: 0;
      }
      to {
        opacity: 1;
      }
    }
  </style>
</head>

<body>
  <form id="loginForm">
    <!-- 表单内容省略 -->
  </form>

  <div class="welcome-page">
    <h1>Welcome!</h1>
  </div>

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

</html>

然后,在 Javascript 代码中,当登录成功时,设置欢迎页面的显示,并触发动画效果:

// 登录成功时的处理函数
function handleLoginSuccess(username) {
  // 设置欢迎页面显示
  const welcomePage = document.querySelector('.welcome-page');
  welcomePage.style.display = 'block';

  // 等待一段时间后,跳转到新页面(这里只是模拟,实际可以跳转到真实的欢迎页面)
  setTimeout(() => {
    window.location.href = 'welcome.html';
  }, 1000);
}

// 在登录验证成功的地方调用 handleLoginSuccess 函数
if (username === correctUsername && password === correctPassword) {
  handleLoginSuccess(username);
}

在上述代码中,我们定义了一个 "handleLoginSuccess" 函数,当登录成功时,该函数将获取欢迎页面的元素,并设置其 "display" 属性为 "block",使其显示出来。同时,使用 "setTimeout" 函数设置了一个延迟,在延迟 1 秒后,使用 "window.location.href" 属性跳转到一个名为 "welcome.html" 的页面。在 CSS 中,我们为欢迎页面设置了一个 "fadeIn" 动画,使其从透明逐渐变为不透明,实现了平滑的过渡效果。

通过这个案例的进阶学习,我们掌握了如何使用 Javascript 实现实时输入验证、页面跳转以及添加动画效果等进阶交互与动态效果。这些技巧能够让我们设计出更加友好、美观和功能强大的网页。在实际的网页设计项目中,我们可以根据需求灵活运用这些技术,不断提升网页的质量和用户体验。

相关推荐
anyup_前端梦工厂6 分钟前
详解 ES6 Reflect
前端·javascript·es6
程序猿-瑞瑞11 分钟前
20 go语言(golang) - gin框架安装及使用(一)
开发语言·golang·gin
花间半盘棋25 分钟前
【echarts】数据过多时可以左右滑动查看(可鼠标可滚动条)
javascript·echarts
2401_8582861135 分钟前
111.【C语言】数据结构之二叉树的销毁函数
c语言·开发语言·数据结构·二叉树
Byron Loong1 小时前
Python+OpenCV系列:膨胀和腐蚀——图像形态学操作深度解析
开发语言·python·opencv
枫の准大一1 小时前
【C++游记】string的使用和模拟实现
c语言·开发语言·c++·算法
千千道1 小时前
Qt 实现 UDP 广播的详细教程
开发语言·qt·网络协议·udp
叫我菜菜就好1 小时前
【Flutter_Web】Flutter编译Web第一篇(插件篇):Flutter_web实现上传TOS上传资源,编写web插件
前端·javascript·flutter·dart
Matlab精灵1 小时前
MCW TDMA-MIMO雷达信号处理MATLAB仿真
开发语言·matlab·信号处理
布兰妮甜1 小时前
React组件最佳实践
前端·javascript·react.js·组件