HTML中不为人知的强大新功能介绍
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
1. 原生懒加载的威力
实现原理:
注意事项:
2. 隐藏的折叠组件: |
<meta name="theme-color" content="#2196f3">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
HTML5新增的输入类型常被忽视:
<!-- 颜色选择器 -->
<input type="color" value="#ff0000">
<!-- 日期选择 -->
<input type="date" min="2023-01-01" max="2024-12-31">
<!-- 范围滑块 -->
<input type="range" list="tickmarks">
<datalist id="tickmarks">
<option value="0" label="0%"></option>
<option value="50"></option>
<option value="100" label="100%"></option>
</datalist>
验证技巧:
// 自定义验证消息
input.oninvalid = function(e) {
e.target.setCustomValidity('请填写有效日期');
};
data-*
属性的高级应用:
<div data-user-info='{"id":123, "name":"John"}'></div>
CSS联动:
[data-status="error"] {
border-color: red;
}
JavaScript操作:
const userData = JSON.parse(element.dataset.userInfo);
element.dataset.loading = "true";
<img src="small.jpg"
srcset="medium.jpg 1000w, large.jpg 2000w"
sizes="(max-width: 600px) 100vw, 50vw"
alt="响应式图片">
<img src="huge-image.jpg" decoding="async" alt="大图">
<template>
标签原生HTML模板解决方案:
<template id="cardTemplate">
<div class="card">
<h3 class="title"></h3>
<p class="content"></p>
</div>
</template>
<script>
const template = document.getElementById('cardTemplate');
const clone = template.content.cloneNode(true);
clone.querySelector('.title').textContent = '新卡片';
document.body.appendChild(clone);
</script>
优势:
正确的隐藏方式对比:
/* 视觉隐藏但可被屏幕阅读器识别 */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
错误做法:
.hidden {
display: none; /* 完全隐藏 */
visibility: hidden; /* 保留布局空间 */
}
  | ||
‌ | ||
‎ | ||
‏ | ||
℗ |
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; script-src 'unsafe-inline'">
<link rel="preload" href="font.woff2" as="font" type="font/woff2" crossorigin>
<script defer src="app.js"></script>
<link rel="modulepreload" href="module.js">
<button onclick="navigator.geolocation.getCurrentPosition(showPosition)">
获取位置
</button>
<progress value="75" max="100"></progress>
本文介绍的HTML特性在提升用户体验、优化性能和增强可访问性方面具有重要作用。建议开发者根据项目需求选择适用方案,并通过CanIUse等工具检查浏览器兼容性。掌握这些"隐藏"功能,可以大幅减少对JavaScript的依赖,写出更高效、更语义化的HTML代码。
阅读原文:原文链接