当前位置: 首页 > backend >正文

css怪异模式(Quirks Mode)和标准模式(Standards Mode)最明显的区别

文章目录

  • css怪异模式(Quirks Mode)和标准模式(Standards Mode)最明显的区别
      • 详细对比
      • 示例对比(盒模型)
        • 标准模式(Standards Mode)
        • 怪异模式(Quirks Mode)
      • 如何触发两种模式?
      • 其他区别
      • 为什么需要了解这个区别?

在这里插入图片描述

css怪异模式(Quirks Mode)和标准模式(Standards Mode)最明显的区别

最核心的区别
盒模型(Box Model)的计算方式不同,导致元素的 widthheight 是否包含 paddingborder


详细对比

特性标准模式(Standards Mode)怪异模式(Quirks Mode)
盒模型width = 内容宽度(不包含 paddingborderwidth = 内容 + padding + border
触发方式<!DOCTYPE html> 声明DOCTYPE 或使用旧版 DOCTYPE(如 HTML4 Transitional)
浏览器兼容性所有现代浏览器统一行为模拟旧版浏览器(如 IE5.5)的渲染方式
height: 100% 行为严格计算,需父元素有明确高度可能不准确,导致布局错乱
margin: auto 居中正常生效可能失效

示例对比(盒模型)

标准模式(Standards Mode)
.box {width: 100px;padding: 20px;border: 5px solid black;
}
  • 实际宽度 = 100px(仅内容)
  • 总占用宽度 = 100px + 40px (padding) + 10px (border) = 150px
怪异模式(Quirks Mode)
.box {width: 100px;padding: 20px;border: 5px solid black;
}
  • 实际宽度 = 100px(包含 paddingborder
  • 内容宽度 = 100px - 40px (padding) - 10px (border) = 50px

如何触发两种模式?

  • 标准模式:使用 <!DOCTYPE html>(HTML5 声明)。
  • 怪异模式:省略 DOCTYPE 或使用旧版 DOCTYPE(如 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">)。

其他区别

  1. 行内元素垂直对齐

    • 标准模式:vertical-align 按规范生效。
    • 怪异模式:行为可能不一致(如 img 底部默认间隙问题)。
  2. 表格单元格宽度

    • 标准模式:严格按内容计算。
    • 怪异模式:可能自动拉伸。
  3. JavaScript 获取窗口尺寸

    • 标准模式:document.documentElement.clientWidth
    • 怪异模式:document.body.clientWidth

为什么需要了解这个区别?

  • 避免布局错乱:确保 DOCTYPE 正确声明,避免意外进入怪异模式。
  • 兼容旧代码:维护老项目时可能需要处理怪异模式下的样式问题。
  • 面试常考点:前端基础核心知识之一。

总结:盒模型的计算方式是两者最明显的区别,始终使用 <!DOCTYPE html> 可强制浏览器使用标准模式! 🚀

http://www.xdnf.cn/news/17050.html

相关文章:

  • 【Java String】类深度解析:从原理到高效使用技巧
  • 软件架构:系统结构的顶层设计与战略约束
  • webrtc弱网-OveruseFrameDetector源码分析与算法原理
  • C++ 类和对象(1)
  • 【qt5_study】1.Hello world
  • SpringCloud学习------Hystrix详解
  • 奇偶校验码原理与FPGA实现
  • ubuntu自动重启BUG排查指南
  • Android 性能基准测试(Benchmark)完全指南:专业方法与最佳实践
  • 【RK3576】【Android14】Uboot下fastboot命令支持
  • 磁悬浮转子振动控制:主动电磁力如何成为高速旋转的“振动克星”
  • 基于Java AI(人工智能)生成末日题材的实践
  • 【docker】UnionFS联合操作系统
  • 《Linux编译器:gcc/g++食用指南》
  • 面试题:前端权限设计
  • # Kafka 消费堆积:从现象到解决的全链路分析
  • Spring小细节
  • lesson32:Pygame模块详解:从入门到实战的2D游戏开发指南
  • 关于为什么ctrl c退不出来SecureCRT命令行的原因及其解决方法:
  • 【25-cv-23395】宠物/婴儿玩具品牌BESTSKY商标维权!
  • MinIO02-Docker安装
  • STM32内部读写FLASH
  • “Why“比“How“更重要:层叠样式表CSS
  • 计算机网络:详解路由器如何转发子网数据包
  • MySQL 查询性能优化与索引失效问题全解析
  • 需求测试用例设计
  • 落霞归雁:从自然之道到“存内计算”——用算法思维在芯片里开一条“数据高速航道”
  • Vue3核心语法进阶(Props)
  • 【C# Winform】 Action事件驱动的多层数据传递
  • 8.5PPT总结各种攻击