个人主页:Guiat
归属专栏:HTML CSS JavaScript
文章目录
正文
1. HTML基础结构
HTML(超文本标记语言)是网页的基础结构。一个标准的HTML文档结构如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>网页标题</title>
</head>
<body>
<!-- 网页内容 -->
</body>
</html>
2. 语义化标签的应用
2.1 为什么使用语义化标签
语义化标签能提高代码可读性、可维护性,并对搜索引擎优化(SEO)有帮助。
2.2 常用语义化标签
<header>网页头部</header>
<nav>导航栏</nav>
<main>主要内容</main>
<article>独立内容</article>
<section>内容区块</section>
<aside>侧边栏</aside>
<footer>页脚</footer>
3. 响应式设计基础
3.1 视口设置
<meta name="viewport" content="width=device-width, initial-scale=1.0">
3.2 媒体查询
/* 移动设备 */
@media (max-width: 768px) {
.container {
width: 100%;
}
}
/* 平板设备 */
@media (min-width: 769px) and (max-width: 1024px) {
.container {
width: 90%;
}
}
/* 桌面设备 */
@media (min-width: 1025px) {
.container {
width: 80%;
max-width: 1200px;
}
}
4. 表单设计与验证
4.1 基础表单结构
<form action="/submit" method="post">
<div class="form-group">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
</div>
<div class="form-group">
<label for="email">邮箱:</label>
<input type="email" id="email" name="email" required>
</div>
<button type="submit">提交</button>
</form>
4.2 HTML5表单验证
属性 | 描述 |
---|---|
required | 必填字段 |
pattern | 正则表达式验证 |
min/max | 数值范围 |
minlength/maxlength | 文本长度范围 |
5. 性能优化技巧
5.1 图片优化
<!-- 响应式图片 -->
<picture>
<source srcset="large.jpg" media="(min-width: 1200px)">
<source srcset="medium.jpg" media="(min-width: 768px)">
<img src="small.jpg" alt="响应式图片">
</picture>
<!-- 懒加载 -->
<img src="placeholder.jpg" data-src="actual-image.jpg" alt="懒加载图片" class="lazy">
5.2 资源加载优化
<!-- 预加载关键资源 -->
<link rel="preload" href="critical.css" as="style">
<link rel="preload" href="important-font.woff2" as="font" crossorigin>
<!-- 异步加载非关键JavaScript -->
<script src="non-critical.js" async></script>
<script src="deferred.js" defer></script>
6. 可访问性(A11Y)最佳实践
6.1 ARIA属性应用
<button aria-label="关闭" aria-pressed="false">X</button>
<div role="alert" aria-live="assertive">
表单提交成功!
</div>
<nav aria-label="主导航">
<ul>
<li><a href="/">首页</a></li>
<li><a href="/about" aria-current="page">关于我们</a></li>
</ul>
</nav>
6.2 可访问性检查清单
- 所有图片都有alt属性
- 表单元素有关联的label
- 颜色对比度符合WCAG标准
- 键盘可导航
- 使用适当的标题层级
7. HTML与CSS/JavaScript的结合
7.1 CSS引入方式
<!-- 外部样式表 -->
<link rel="stylesheet" href="styles.css">
<!-- 内部样式表 -->
<style>
body {
font-family: Arial, sans-serif;
line-height: 1.6;
}
</style>
<!-- 内联样式 -->
<p style="color: blue; font-size: 16px;">内联样式示例</p>
7.2 JavaScript引入方式
<!-- 外部脚本 -->
<script src="main.js"></script>
<!-- 内部脚本 -->
<script>
document.addEventListener('DOMContentLoaded', function() {
console.log('页面已加载');
});
</script>
8. 实战案例:响应式导航栏
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>响应式导航栏</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Arial', sans-serif;
}
.navbar {
background-color: #333;
padding: 1rem;
}
.nav-container {
display: flex;
justify-content: space-between;
align-items: center;
max-width: 1200px;
margin: 0 auto;
}
.logo {
color: white;
font-size: 1.5rem;
font-weight: bold;
}
.nav-links {
display: flex;
list-style: none;
}
.nav-links li {
margin-left: 1.5rem;
}
.nav-links a {
color: white;
text-decoration: none;
transition: color 0.3s;
}
.nav-links a:hover {
color: #f8a100;
}
.burger {
display: none;
cursor: pointer;
}
.burger div {
width: 25px;
height: 3px;
background-color: white;
margin: 5px;
transition: all 0.3s ease;
}
@media screen and (max-width: 768px) {
.nav-links {
position: absolute;
right: 0;
height: 92vh;
top: 8vh;
background-color: #333;
display: flex;
flex-direction: column;
align-items: center;
width: 50%;
transform: translateX(100%);
transition: transform 0.5s ease-in;
z-index: 1;
}
.nav-links li {
margin: 1.5rem 0;
}
.burger {
display: block;
}
.nav-active {
transform: translateX(0%);
}
}
</style>
</head>
<body>
<nav class="navbar">
<div class="nav-container">
<div class="logo">网站名称</div>
<ul class="nav-links">
<li><a href="#">首页</a></li>
<li><a href="#">关于</a></li>
<li><a href="#">服务</a></li>
<li><a href="#">联系</a></li>
</ul>
<div class="burger">
<div class="line1"></div>
<div class="line2"></div>
<div class="line3"></div>
</div>
</div>
</nav>
<script>
const burger = document.querySelector('.burger');
const nav = document.querySelector('.nav-links');
burger.addEventListener('click', () => {
nav.classList.toggle('nav-active');
});
</script>
</body>
</html>
9. 跨浏览器兼容性
9.1 常见兼容性问题
问题 | 解决方案 |
---|---|
新HTML5元素不被识别 | 使用HTML5 Shiv或Modernizr |
CSS前缀差异 | 使用Autoprefixer或手动添加前缀 |
旧版IE不支持媒体查询 | 使用respond.js或提供备选样式 |
9.2 特性检测
// 检测是否支持localStorage
if (typeof(Storage) !== "undefined") {
// 支持localStorage
localStorage.setItem("name", "张三");
} else {
// 不支持localStorage,使用替代方案
console.log("浏览器不支持localStorage");
}
10. SEO优化技巧
10.1 元标签优化
<head>
<title>页面标题 - 网站名称</title>
<meta name="description" content="页面的简短描述,不超过160个字符">
<meta name="keywords" content="关键词1,关键词2,关键词3">
<meta name="author" content="作者名称">
<!-- Open Graph 标签(社交媒体分享优化) -->
<meta property="og:title" content="页面标题">
<meta property="og:description" content="页面描述">
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:url" content="https://example.com/page">
</head>
10.2 结构化数据
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "文章标题",
"author": {
"@type": "Person",
"name": "作者名称"
},
"datePublished": "2023-05-15T08:00:00+08:00",
"description": "文章摘要"
}
</script>
结语
感谢您的阅读!期待您的一键三连!欢迎指正!