后IE时代移除HTML中的<!DOCTYPE>声明是否安全?
后IE时代移除
<!DOCTYPE ...>是否安全? 结论先行:完全不安全,哪怕你不需要兼容任何IE或老旧浏览器,也绝对不应该移除DOCTYPE声明。
别觉得DOCTYPE是IE时代遗留的没用历史包袱,现在所有主流现代浏览器(Chrome、Firefox、Safari、基于Chromium的Edge等近年发布的正式版本),解析HTML的时候依然保留了两套渲染模式的判定逻辑,这个逻辑是写在现行HTML标准里的,和兼不兼容IE没有任何关系:
- 只要在文档最开头检测到合法的DOCTYPE声明,浏览器就会切换到标准模式,严格按照现行Web标准计算布局、渲染元素,你写的HTML、CSS表现会和你预期的逻辑一致。
- 如果开头没找到DOCTYPE,浏览器会直接切到怪异模式(Quirks Mode),这个模式下的渲染规则和标准模式有大量差异,几个现在开发中仍会踩的实坑,全是现代浏览器里真实存在的表现:
- 盒模型计算逻辑默认变更:元素设置的
width、height会直接包含内边距padding和边框border,相当于全局默认强制开了box-sizing: border-box,如果你代码里本来是按content-box写的样式,布局直接全乱。 - 基础布局规则偏差:比如行内替换元素(典型的就是图片)的垂直对齐规则、表格单元格的高度计算逻辑、根元素的默认边距、滚动条的占位计算都会变,写全屏布局的时候很容易出现莫名其妙的双滚动条、内容被裁切、元素错位的问题,甚至部分较新的CSS特性在怪异模式下会直接失效。
- 这个逻辑短期内根本不会变:互联网上现在还存着海量十几年前没写DOCTYPE的老页面,浏览器为了保证这些存量页面能正常打开,不可能随便移除无DOCTYPE触发怪异模式的逻辑,这和IE退不退出市场没有关系。
- 盒模型计算逻辑默认变更:元素设置的
你在兼容性查询站点搜不到相关内容很正常:DOCTYPE触发渲染模式是HTML解析流程里的核心基础规则,从HTML5标准落地到现在就没改动过,不属于需要单独标注兼容性的独立API或CSS属性,本来就不会被这类站点收录。
说白了,写全<!DOCTYPE html>也就十几个字符,零成本,加上就能保证页面始终走标准渲染逻辑,完全没必要为了省这点微不足道的代码,冒全页面渲染错乱的风险。
内容的提问来源于stack exchange,提问作者guettli
相关产品推荐
相关产品推荐

