极简个人主页(静态)
这是一个最基础的手机网站,包含了标题、简介、联系方式和一张图片,非常适合作为个人名片或展示页。

特点:
- 响应式设计,自动适应手机屏幕。
- 使用现代的
viewport- 布局简洁,易于修改。
源码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">我的个人主页</title>
<style>
/* 全局样式重置 */
body, h1, p {
margin: 0;
padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
/* 容器样式 */
.container {
max-width: 600px;
margin: 0 auto;
padding: 20px;
background-color: #f4f4f4;
min-height: 100vh;
box-sizing: border-box; /* 确保 padding 不会增加总宽度 */
}
/* 头像样式 */
.avatar {
width: 120px;
height: 120px;
border-radius: 50%;
display: block;
margin: 30px auto;
border: 5px solid #fff;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
/* 标题样式 */
h1 {
text-align: center;
color: #333;
margin-bottom: 10px;
}
/* 副标题/简介样式 */
.subtitle {
text-align: center;
color: #666;
margin-bottom: 30px;
}
/* 联系方式列表样式 */
.contact-list {
list-style: none; /* 去掉列表前的点 */
padding: 0;
}
.contact-list li {
background-color: #fff;
margin-bottom: 15px;
padding: 15px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
display: flex;
align-items: center;
}
.contact-list li a {
text-decoration: none;
color: #007bff;
font-weight: bold;
}
/* 底部样式 */
footer {
text-align: center;
margin-top: 40px;
color: #999;
font-size: 0.9em;
}
</style>
</head>
<body>
<div class="container">
<img src="https://via.placeholder.com/120" alt="我的头像" class="avatar">
<h1>张三</h1>
<p class="subtitle">一名热爱编程的前端开发工程师</p>
<ul class="contact-list">
<li>
<strong>邮箱:</strong>
<a href="mailto:zhangsan@example.com">zhangsan@example.com</a>
</li>
<li>
<strong>GitHub:</strong>
<a href="https://github.com/zhangsan" target="_blank">github.com/zhangsan</a>
</li>
<li>
<strong>微信:</strong>
<span>zhangsan_dev</span>
</li>
</ul>
<footer>
<p>© 2025 张三. All rights reserved.</p>
</footer>
</div>
</body>
</html>
带交互功能的待办事项列表(动态)
这个例子增加了一点 JavaScript 代码,实现了添加、删除待办事项的功能,让网站更具交互性。
特点:
- 在上一个例子的基础上增加了交互。
- 使用
localStorage保存数据,刷新页面后数据不会丢失。 - 完全响应式。
源码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">我的待办事项</title>
<style>
body, h1, ul, li {
margin: 0;
padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}
.container {
max-width: 600px;
margin: 0 auto;
padding: 20px;
background-color: #f0f2f5;
min-height: 100vh;
box-sizing: border-box;
}
h1 {
text-align: center;
color: #333;
margin-bottom: 20px;
}
/* 输入框和按钮容器 */
.input-container {
display: flex;
margin-bottom: 20px;
}
#todoInput {
flex-grow: 1;
padding: 12px;
border: 1px solid #ddd;
border-radius: 5px 0 0 5px;
font-size: 16px;
outline: none;
}
#addButton {
padding: 12px 20px;
border: none;
background-color: #007bff;
color: white;
cursor: pointer;
border-radius: 0 5px 5px 0;
font-size: 16px;
transition: background-color 0.3s;
}
#addButton:hover {
background-color: #0056b3;
}
/* 待办事项列表 */
#todoList {
list-style: none;
}
.todo-item {
background-color: #fff;
padding: 15px;
margin-bottom: 10px;
border-radius: 5px;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
display: flex;
justify-content: space-between;
align-items: center;
}
.todo-text {
flex-grow: 1;
}
.delete-btn {
background-color: #dc3545;
color: white;
border: none;
padding: 5px 10px;
border-radius: 3px;
cursor: pointer;
transition: background-color 0.3s;
}
.delete-btn:hover {
background-color: #c82333;
}
.empty-state {
text-align: center;
color: #999;
padding: 40px 0;
}
</style>
</head>
<body>
<div class="container">
<h1>我的待办事项</h1>
<div class="input-container">
<input type="text" id="todoInput" placeholder="输入新任务..." onkeydown="if(event.key==='Enter') addTodo()">
<button id="addButton" onclick="addTodo()">添加</button>
</div>
<ul id="todoList">
<!-- 待办事项将通过 JavaScript 动态添加到这里 -->
</ul>
<div id="emptyState" class="empty-state">
暂无待办事项,添加一个吧!
</div>
</div>
<script>
// 从 localStorage 获取待办事项
let todos = JSON.parse(localStorage.getItem('todos')) || [];
// 页面加载时渲染列表
window.onload = function() {
renderTodos();
};
// 添加待办事项
function addTodo() {
const input = document.getElementById('todoInput');
const todoText = input.value.trim();
if (todoText === '') {
alert('请输入任务内容!');
return;
}
const newTodo = {
id: Date.now(), // 使用时间戳作为唯一ID
text: todoText,
completed: false
};
todos.push(newTodo);
saveTodos();
renderTodos();
input.value = ''; // 清空输入框
}
// 删除待办事项
function deleteTodo(id) {
todos = todos.filter(todo => todo.id !== id);
saveTodos();
renderTodos();
}
// 保存到 localStorage
function saveTodos() {
localStorage.setItem('todos', JSON.stringify(todos));
}
// 渲染待办事项列表
function renderTodos() {
const todoList = document.getElementById('todoList');
const emptyState = document.getElementById('emptyState');
todoList.innerHTML = ''; // 清空列表
if (todos.length === 0) {
emptyState.style.display = 'block';
} else {
emptyState.style.display = 'none';
todos.forEach(todo => {
const li = document.createElement('li');
li.className = 'todo-item';
li.innerHTML = `
<span class="todo-text">${todo.text}</span>
<button class="delete-btn" onclick="deleteTodo(${todo.id})">删除</button>
`;
todoList.appendChild(li);
});
}
}
</script>
</body>
</html>
如何使用这些源码
- 创建文件:在你的电脑上创建一个新的文本文件。
- 复制粘贴:将上面任意一个示例的完整代码复制并粘贴到这个新文件中。
- 保存文件:将文件另存为
.html格式,index.html或todo.html。 - 打开预览:
- 最简单的方式:直接用 Chrome、Firefox、Edge 或 Safari 等现代浏览器双击打开这个
.html文件。 - 模拟手机:在浏览器中按
F12打开开发者工具,点击左上角的手机/平板图标,即可在模拟的手机环境中预览你的网站。
- 最简单的方式:直接用 Chrome、Firefox、Edge 或 Safari 等现代浏览器双击打开这个
如何进一步学习和修改?
- :直接在 HTML 文件中修改文本、图片链接(
src属性)等。 - 修改样式:在
<style>标签内修改 CSS 代码,可以改变颜色、字体、间距、布局等。 - 增加功能:参考第二个例子,学习如何使用 JavaScript 为你的网站添加动态效果,比如点击事件、数据存储等。
这两个例子涵盖了从静态展示到动态交互的基本流程,是学习手机网站开发的绝佳起点,祝你学习愉快!

