浏览器地址栏里敲出一串字符,网页回车,设计页面弹出来。代码那个瞬间,网页HTML已经默默完成了它九成的设计工作——把内容摆对位置,把图片挂上去,代码把链接接好。网页很多人觉得HTML是设计门语言,其实它更像一套乐高积木的代码说明书,每块积木叫什么、网页怎么拼,设计全写在那对尖括号里。代码
拿一个最基础的网页页面开刀。新建一个txt文件,设计改后缀为.html,代码敲下这五行:
<!DOCTYPE html> <html> <head><title>我的第一个页面</title></head> <body> <p>你好,世界。</p> </body> </html>
保存,双击。浏览器会老老实实把“你好,世界”四个字渲染在左上角。就这么简单。但别小看这五行——它定义了文档类型、包裹了所有内容、声明了标题区、划出了正文区。整个互联网的骨架,说白了就是这套结构的无限复制与变形。
真正让页面活起来的,是标签之间的嵌套关系。比如我想做一个带导航的页面:
<nav> <ul> <li><a href="#home">首页</a></li> <li><a href="#about">关于</a></li> <li><a href="#contact">联系</a></li> </ul> </nav>
这里有个细节:ul里面只能放li,li里面才能放a标签。这种严格的父子关系,就像现实中的楼层承重墙,乱拆会出问题。我见过不少新手把a标签直接塞进ul里,结果浏览器倒是宽容,能正常显示,但后续用CSS调整间距时就会抓狂——结构不清晰,样式就跟着乱。
HTML里最容易被忽略的是语义化标签。header、footer、article、aside这些词,比满屏的div更能告诉搜索引擎和屏幕阅读器“这里是什么”。举个实际例子。我帮朋友改过一个小型摄影作品集网站,原代码里全是<div class="box1">这种写法。改成<figure>包裹每张图片、<figcaption>写说明文字之后,不仅代码可读性提升,谷歌收录图片的速度也快了不少。搜索引擎的爬虫喜欢语义化的结构,就像图书管理员喜欢有目录的书籍。
表单是另一个值得琢磨的区域。一个简单的搜索框:
<form action="/search" method="get"> <input type="text" name="q" placeholder="输入关键词..."> <button type="submit">搜索</button> </form>
注意input标签的type属性。text是普通文本,email会在移动端弹出带@符号的键盘,password会把输入显示成圆点。这些细节决定了用户输入时的手指体验。我有个做电商的朋友,之前注册页的密码框用了type="text",结果用户输密码时全部明文显示,后台数据里一堆人骂骂咧咧地重启注册流程。改一行代码,投诉率直接降了七成。
最后聊聊图片和响应式。老写法是固定宽度:<img src="photo.jpg" width="800">。现在得加上srcset属性,让浏览器根据屏幕尺寸自己挑图:
<img src="photo-800.jpg" srcset="photo-400.jpg 400w, photo-800.jpg 800w, photo-1200.jpg 1200w" sizes="(max-width: 600px) 400px, 800px" alt="山间晨雾">
这段代码的意思是:手机屏用400像素宽的图,平板用800,大屏显示器用1200。省流量,也省内存。我见过太多设计师只给一张2MB的大图,然后靠CSS硬压——移动端用户每打开一次页面就烧掉2MB流量,加载慢得像爬坡的老爷车。srcset这招,是直接让服务器按需发货,比前端压缩聪明得多。
写HTML就像搭积木,但比积木更自由——你随时可以拆掉一块重新拼,浏览器不抱怨,刷新就完事。出错也不可怕,按F12打开开发者工具,红色的报错信息会告诉你哪块拼错了。多试几次,手就顺了。那些看起来炫酷的网站,剥开皮肤看骨骼,无非就是这些标签的排列组合。今天先写个带导航的页面,明天加个表单,后天再塞两张响应式图片。你会发现,网页这玩意儿,真没你想的那么神秘。