不许放<p>
Last updated: July 16th, 2006 某君在<p>元素里放了一个有序列表元素<ol>,结果出现了预想外的状况…… 故事起源于div+css在国内发展的早期,在近乎盲崇的氛围下,大家开始把<div>捧上了天,<div>成了百试不爽的万用药。忽然人们又觉得这样不行,于是又提倡起<p>的作用。 这么做并没有坏处,起码有两点是正面的,一是避免<div>的滥用,二是<p>字节少。但是<p>有一段曲折的历史导致他与<div>的差异,是不可无视的。 追溯到HTML的历史,曾经<p>是不需要结束标签的,浏览器会推断你的段落在哪里终止,如果遇到了<table>或是<ul>这类块级元素,浏览器会聪明地闭合<p>元素。而该兼容性也一路延续至今,现在你可以思考下这样会发生什么意外的状况,<p>是不能包含块级元素的。 参考《HTML与XHTML权威指南(第五版)》 第四章第1节 4.1.2.6 Allowed paragraph content A paragraph may contain any element allowed in a text flow, including conventional words and punctuation, links (<a>), images (<img>), line breaks (<br>), font changes (<b>, <i>, <tt>, <u>, <strike>, <big>, <small>, <sup>, <sub>, and <font>), and content-based style changes (<acronym>, <cite>, <code>, <dfn>, <em>, <kbd>, <samp>, ...