html、css和js代码分离

一、代码分离

网页主要由结构、表现和行为三部分组成。结构用于描述网页的框架,对应语言有HTML,HTML使用标签的形式来标识网页中的不同组成部分;表现用于控制页面元素的样式,对应语言有CSS;行为用于相应用户的操作,对应语言有JavaScript。

当我们开发项目,功能设计常常遵循以下几个原则: 

1、避免重复原则,编程的最基本原则是避免重复,换句话说叫提高代码复用率。

2、简单原则,简单是用户最佳体验之一,而且简单的代码占用时间少,漏洞少,且易于修改。

3、低耦合原则,即这部分代码的使用和修改影响到其他部分的代码尽可能少,否则牵一发而动全身。

4、单一责任原则,某个代码的功能,应该保证只有单一的明确的执行任务,否则一旦修改会增加关联测试的繁琐程度。

因此代码分离是现代Web开发中的一个常见实践,可以提高代码的可维护性和重用性。html、css和js实现代码分离可以将其分别保存在不同的文件中,然后在 HTML 文件中通过<link>和<script>标签引入。

以下是一个简单例子:

index.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="stylesheet" href="styles.css">
</head>
<body>
    <h1>Hello,World!</h1>
    <script src="script.js"></script>
</body>
</html>

styles.css

body{
    font-family:Arial,sans-serif;
    background-color: #f8f8f8;
}
h1{
    color: #000;
}

script.js

document.addEventListener("DOMContentLoaded",(Event)=>{
    console.log('Page is loaded and DOM is ready!');
});
<think>好的,用户让我用HTMLCSSJavaScript写一个登录页面,并且实现用户名密码的本地存储。我需要先理清楚需求,然后分步骤实现。 首先,用户需要的是一个登录界面,包含用户名密码的输入框,以及登录按钮。然后,输入的数据要保存在本地,也就是使用localStorage或者cookie。考虑到本地存储的安全性,一般不会明文存储密码,但这里用户可能只是练习,所以先按需求实现,但需要提醒用户实际应用中不安全。 接下来,结构部分,用HTML创建表单,包含两个输入框一个按钮。CSS用来美化页面,可能需要居中布局,样式调整。JavaScript处理表单提交事件,获取输入值,存储到localStorage。 需要注意的是,表单提交时防止页面刷新,可以用event.preventDefault()。另外,密码存储是否要加密?虽然用户没提,但最好提到明文存储的风险,即使示例代码中可能直接存储。 然后,代码结构大致如下: HTML部分: - 一个表单,id为loginForm,包含用户名密码的input,类型分别为textpassword,还有一个submit按钮。 CSS部分: - 页面布局,flex或者绝对定位居中,背景色,输入框样式,按钮样式等。 JavaScript部分: - 监听表单的submit事件,获取输入的值,存入localStorage,然后提示登录成功,可能跳转页面。 测试的时候,输入用户名密码,点击登录,检查localStorage是否有对应的键值对。之后可能需要验证,比如下次自动填充,但用户的需求可能只是存储,所以暂时不需要做自动填充功能。 另外,是否需要验证输入是否为空?可以添加简单的验证,比如判断用户名密码是否为空,弹出提示。 然后,代码的完整性,确保所有部分都写出来,包括HTML结构,CSS样式,JS代码。可能需要将JS写在HTML文件内部,或者分开,但用户要求完整代码,所以内联更合适。 最后,提醒用户本地存储密码的风险,建议在实际应用中使用服务器端验证加密存储,比如使用HTTPS、哈希加盐等。 现在,按照这些思路写出完整的代码,并解释每个部分的作用。然后相关问题可能涉及localStorage的方法,安全性,表单处理,CSS布局等。</think><< Here's a complete implementation of a login page with local storage using HTML/CSS/JS: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Login Page</title> <style> body { font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background-color: #f0f2f5; } .login-container { background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); width: 300px; } h2 { text-align: center; color: #1a73e8; margin-bottom: 1.5rem; } .form-group { margin-bottom: 1rem; } label { display: block; margin-bottom: 0.5rem; color: #5f6368; } input { width: 100%; padding: 0.8rem; border: 1px solid #dadce0; border-radius: 4px; box-sizing: border-box; } button { width: 100%; padding: 0.8rem; background-color: #1a73e8; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 1rem; } button:hover { background-color: #1557b0; } </style> </head> <body> <div class="login-container"> <h2>用户登录</h2> <form id="loginForm"> <div class="form-group"> <label for="username">用户名:</label> <input type="text" id="username" required> </div> <div class="form-group"> <label for="password">密码:</label> <input type="password" id="password" required> </div> <button type="submit">登录</button> </form> </div> <script> document.getElementById('loginForm').addEventListener('submit', function(e) { e.preventDefault(); const username = document.getElementById('username').value; const password = document.getElementById('password').value; // 本地存储 localStorage.setItem('username', username); localStorage.setItem('password', password); alert('登录成功!凭证已保存'); // 这里可以添加页面跳转逻辑 // window.location.href = 'dashboard.html'; }); </script> </body> </html> ``` 实现原理: 1. HTML结构:使用表单包含用户名密码输入框,设置required属性进行基础验证 2. CSS样式:采用Flex布局实现居中显示,使用现代设计风格的阴影颜色 3. JavaScript: - 监听表单的submit事件 - 使用preventDefault()阻止表单默认提交行为 - 通过localStorage.setItem()存储用户凭证 - 提供简单的成功反馈 安全说明(重要): 1. 实际项目中不应明文存储密码,应使用加密方案 2. 本地存储存在安全风险,正式环境应使用服务器端验证 3. 建议使用Session Storage替代Local Storage(会话级存储) 4. 应增加CSRF保护HTTPS传输
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值