当前位置: 首页 > article >正文

Web网页制作之JavaScript的应用

 ---------------📡🔍K学啦 更多学习资料📕 免费获取---------------


实现的功能:1.通过登录界面跳转至主页面,用户名统一为“admin”,密码统一为“admin123”,密码可显示或隐藏输入错误有提示信息。可通过enter键,进行登录跳转。

                      2.登录界面的登录框为模态框,可通过鼠标拖拽移动。

                      3.主页面中包含横向或竖向导航菜单,可通过鼠标事件使选中菜单变色,并调出二级菜单。主页面内可实时显示当前时间;主页面可修改主页背景颜色或背景图片;主页面内使用轮播图滚动播放信息;在主页中实现tab栏的切换,不跳转页面控制内容的呈现。固定主页面导航栏。

目录

一、网页的基本结构 

二、登录页面的功能实现

三、主页的功能实现 

四、整体效果 

五、源码获取 


一、网页的基本结构 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="    " content="      ">
    <link rel="icon" href="../img/logo.jpg">-----//网页logo
    <title>猿来如此</title>--------//网页标题
    <style> ...
     ............//位置,大小,颜色,形状
    </style>
</head>-------------//头部
<body>-----------//主体
     <header>
        <nav class="    ">------//导航栏菜单
            <ul class="    ">
                <li class="menu-item" onclick="showSubMenu('menu1')">微信小程序</li>
                <li class="menu-item" onclick="showSubMenu('menu2')">搜</li>
                <li class="menu-item" onclick="showSubMenu('menu3')">K学啦</li>
            </ul>
            <div id="menu1" class="sub-menu">------//子菜单
                <a href="#">小程序</a>
                <a href="#">K学啦</a>
            </div>
            <div id="menu2" class="sub-menu">
                <a href="#">私信</a>
                <a href="#">评论区</a>
            </div>
            <div id="menu3" class="sub-menu">
                <a href="#">注销</a>
                <a href="#">退出</a>
            </div>
        </nav>
    </header>
    <div class=" " id=" "> ...
      .........
    </div>
    <div class=" " id=" "> ...
      .........
    </div>
    <script> ...
      ...........//js部分
    </script>
    <footer class=" ">
        <p>©版权信息</p>
    </footer>
</body>
</html>

二、登录页面的功能实现

<body>
   <div class="overlay" id="overlay">
       <div class="modal" id="modal">
            <div class="modal-header" id="modalHeader">
                <h2>Login</h2> ------//二级标题
            </div>
            <div class="modal-content">
                <input type="text" id="username" placeholder="Username" required>
                <input type="password" id="password" placeholder="Password" required>
                <button onclick="login()">登录</button>---//登录事件
                <input type="checkbox" id="showPassword" onclick="togglePassword()">展示密码
                <div class="error-message" id="errorMessage">用户名或密码不正确</div>
            </div>
       </div>
    </div>
    <div class="overlay" id="overlay">
        <div class="modal" id="modal">
            <div class="modal-header" id="modalHeader">
                <h2>Login</h2>
            </div>
            <div class="modal-content">
                <input type="text" id="username" placeholder="Username" required>
                <input type="password" id="password" placeholder="Password" required>
                <button onclick="login()">登录</button>
                <input type="checkbox" id="showPassword" onclick="togglePassword()">展示密码
                <div class="error-message" id="errorMessage">用户名或密码不正确</div>
            </div>
        </div>
    </div>

    <script>
        const username = 'admin';    ------固定用户名
        const password = 'admin123'; ------固定密码

        document.getElementById('password').addEventListener('keypress', function(e) {
            if (e.key === 'Enter') {
                login();
            }
        });  ----------------Enter触发登录事件

        function login() {
            const userInputUsername = document.getElementById('username').value;
            const userInputPassword = document.getElementById('password').value;

            if (userInputUsername === username && userInputPassword === password) {
                window.location.href = 'main.html'; ------//用户输入用户名密码和固定的相等时跳转到main.html
            } else {
                document.getElementById('errorMessage').style.display = 'block';
            }
        }   ---------------//否则触发errorMessage事件报错

        function togglePassword() {
            const passwordField = document.getElementById('password');
            const type = passwordField.getAttribute('type') === 'password' ? 'text' : 'password';
            passwordField.setAttribute('type', type);
        } ------------//展示密码功能

        //拖拽功能
        let modal = document.getElementById('modal');
        let modalHeader = document.getElementById('modalHeader');
        let isDragging = false;
        let offsetX, offsetY;

        modalHeader.onmousedown = dragMouseDown;

        function dragMouseDown(e) {
            isDragging = true;
            modal.style.cursor = 'grabbing';
            offsetX = e.clientX - modal.getBoundingClientRect().left;
            offsetY = e.clientY - modal.getBoundingClientRect().top;
            document.onmouseup = closeDragElement;
            document.onmousemove = elementDrag;
        }

        function elementDrag(e) {
            if (isDragging) {
                modal.style.left = `${e.clientX - offsetX}px`;
                modal.style.top = `${e.clientY - offsetY}px`;
            }
        }

        function closeDragElement() {
            isDragging = false;
            modal.style.cursor = 'grab';
            document.onmouseup = null;
            document.onmousemove = null;
        }
        document.getElementById('overlay').style.display = 'flex';
    </script>
</body>

三、主页的功能实现 

 ①主页面中包含横向或竖向导航菜单,可通过鼠标事件使选中菜单变色,并调出二级菜单,并显示当前时间。

HTML代码: 

<header>
        <nav class="navbar">
            <ul class="menu">
                <li class="menu-item" onclick="showSubMenu('menu1')">微信</li>
                <li class="menu-item" onclick="showSubMenu('menu2')">源码获取</li>
                <li class="menu-item" onclick="showSubMenu('menu3')">退出</li>
            </ul>
            <div id="menu1" class="sub-menu">
                <a href="#">小程序</a>------//如,href="1.html",跳转到1.html
                <a href="#">K学啦</a>
            </div>
            <div id="menu2" class="sub-menu">
                <a href="#">私信</a>
                <a href="#">评论区</a>
            </div>
            <div id="menu3" class="sub-menu">
                <a href="#">注销</a>
                <a href="#">退出</a>
            </div>
        </nav>
        <div class="time-display" id="timeDisplay"></div>
    </header>

JavaScript代码: 

document.addEventListener('DOMContentLoaded', () => {
    const timeDisplay = document.getElementById('timeDisplay');
    setInterval(() => {
        const now = new Date();
        timeDisplay.textContent = now.toLocaleTimeString();
    }, 1000);

    const carouselImages = document.querySelector('.carousel-images');
    let carouselIndex = 0;
    const images = document.querySelectorAll('.carousel-images img');
    const totalImages = images.length;

    setInterval(() => {
        carouselIndex = (carouselIndex + 1) % totalImages;
        const offset = -carouselIndex * 100 + '%';
        carouselImages.style.transform = `translateX(${offset})`;
    }, 3000);
});---------//显示当时时间

function showSubMenu(menuId) {
    const menus = document.querySelectorAll('.sub-menu');
    menus.forEach(menu => menu.style.display = 'none');
    document.getElementById(menuId).style.display = 'block'; -----//鼠标活动变色
    const menuItems = document.querySelectorAll('.menu-item');
    menuItems.forEach(item => item.classList.remove('active'));
    document.querySelector(`.menu-item[onclick="showSubMenu('${menuId}')"]`).classList.add('active');
}-------//活动菜单栏

 

 ②主页面可修改主页背景颜色或背景图片;主页面内使用轮播图滚动播放信息。

HTML代码: 

    <div class="background-controls">
        <label for="bgColor">背景颜色:</label>
        <input type="color" id="bgColor" onchange="changeBackgroundColor(this.value)">
        <label for="bgImage">背景图片:</label>
        <input type="file" id="bgImage" accept="image/*" onchange="changeBackgroundImage(this.files[0])">------//选择本地图片
    </div>
    <div class="    ">-------//轮播图
        <div class="    ">
            <img src="1.jpg" alt="Image 1">
            <img src="2.png" alt="Image 2">
            <img src="5.jpg" alt="Image 3">
        </div>
    </div>

JavaScript代码: 

function changeBackgroundColor(color) {
    document.body.style.backgroundColor = color;
}

function changeBackgroundImage(file) {
    const reader = new FileReader();
    reader.onload = function(e) {
        document.body.style.backgroundImage = `url(${e.target.result})`;
        document.body.style.backgroundSize = 'cover';
        document.body.style.backgroundPosition = 'center';
    };
    reader.readAsDataURL(file);
}
修改背景颜色

 

 

修改背景图片

 ③在主页中实现tab栏的切换,不跳转页面控制内容的呈现。固定主页面导航栏。

HTML代码:

<div class="tabs">
        <div class="tab-buttons">
            <button class="tab-button" onclick="showTab('tab1')">C语言</button>
            <button class="tab-button" onclick="showTab('tab2')">python语言</button>
            <button class="tab-button" onclick="showTab('tab3')">JAVA语言</button>
        </div>
        <div id="tab1" class="tab-content">
            <p>C语言是一种较早的程序设计语言,诞生于1972年的贝尔实验室。
                1972 年,Dennis Ritchie 设计了C语言,它继承了B语言的许多思想,并加入了数据类型的概念及其他特性。
                 尽管C 语言是与 UNIX 操作系统一起被开发出来的,但它不只支持UNIX。C是一种通用(广泛可用)的编程语言。</p>
        </div>
        <div id="tab2" class="tab-content">
            <p>Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计,
                作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面
                向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,
                随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。</p>
        </div>
        <div id="tab3" class="tab-content">
            <p>Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难
                以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面
                向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。</p>
        </div>
</div>

JavaScript代码:

function showTab(tabId) {
    const tabs = document.querySelectorAll('.tab-content');
    tabs.forEach(tab => tab.classList.remove('active')); // 移除所有标签的 'active' 类
    document.getElementById(tabId).classList.add('active'); // 为指定的标签添加 'active' 类
}

四、整体效果 

五、源码获取 

  看到这里你是否受益了呢?你的支持就是我创作的动力,点赞+收藏+关注,学习不迷路,评论区留下你的疑问,可私信获取源码。


http://www.kler.cn/a/469878.html

相关文章:

  • css中的部分文字特性
  • 苹果系统MacOS下ObjectC建立的App程序访问opencv加载图片程序
  • RedisTemplate执行lua脚本及Lua 脚本语言详解
  • 解决ESP32 wifi scan:1. 获取WIFI扫描列表个数为0 的问题 2.扫描WIFI列表时导致程序崩溃问题。
  • ChatGPT在数据分析与处理中的使用详解
  • 提升自闭症教育:探索寄宿学校的创新实践
  • 解决在VS2019/2022中编译c++项目报错fatal error C1189: #error : “No Target Architecture“
  • python 操作xml文件
  • 5G工业路由器品牌,5G赋能,重塑工业路由器新标杆
  • LabVIEW项目如何选择数据库
  • 【shell编程】报错信息:Redirection Error(包含7种解决方法)
  • 【记录】Angr|Angr 的 call_state 是怎么保证不同架构的函数的参数正常传递进去的?
  • 古玩玉器交易系统|Java|SSM|VUE| 前后端分离
  • 云服务器+docker配置Java程序运行环境
  • VUE3组合式——响应式数据ref、reactive
  • Javascript算法——贪心算法(一)
  • jupyter出现“.ipynb appears to have died. It will restart automatically.”解决方法
  • 函数指针的用法
  • 反射能做什么
  • php Yii2 Excel导出图片资源到表格
  • WebAssembly(WASM) + Python: 构建高性能跨平台Web应用
  • 自定义校验注解
  • 文件上传漏洞 (网络安全)
  • Pytest 接口关联
  • 肘部法则确定聚类数
  • nginx: [emerg] host not found in upstream “host.docker.internal“