news 2026/6/24 14:33:07

为什么你应该停止使用“传统“的margin和padding来设置CSS样式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
为什么你应该停止使用“传统“的margin和padding来设置CSS样式

随着使用网络的人比以往任何时候都多,确保网络体验对所有用户都可访问的需求变得更加迫切。这包括从从不同方向/角度((从右到左,从上到下等)。

当添加传统的marginpadding时,你明确地定义了来自各个方向(上、下、左和右)的边距和填充。这可能会在你的区域设置中创建一个看起来不错的布局,但当使用不同区域设置的用户以与你设计的方式不同的 方向/角度 和查看内容时,可能会感到困惑。

每个现代开发者都应该使用margin-inline/margin-blockpadding-inline/padding-block

我们来分析这些CSS属性是如何工作的,以及为什么我们要使用它们。

margin-inlinepadding-inline控制左右 margin/padding。我们不是明确定义与这些特定方向对应的边距,而是将它们定义为startend边距。虽然一个区域可能从左开始到右结束,但其他区域可能不是,所以以这种方式定义它们将确保无论区域设置如何,margin 和 padding 都会按预期显示。

同样,margin-blockpadding-block控制上下 margin/padding,使用相同的startend模式,而不是明确定义topbottom

要同时为多个方向定义 margin 或 padding,你可以使用:

  • margin-inline: [start值] [end值];用于左右边距
  • margin-block: [start值] [end值];用于上下边距
  • padding-inline: [start值] [end值];用于左右填充
  • padding-block: [start值] [end值];用于上下填充

要仅为一个方向定义边距或填充,你可以使用:

  • margin-inline-start(而不是margin-left
  • margin-inline-end(而不是margin-right
  • margin-block-start(而不是margin-top
  • margin-block-end(而不是margin-bottom
  • padding-inline-start(而不是padding-left
  • padding-inline-end(而不是padding-right
  • padding-block-start(而不是padding-top
  • padding-block-end(而不是padding-bottom

我们看一些例子:

// 传统 margin-left: 1.2em; // 等效 margin-inline-start: 1.2em; // 传统 padding-top: 5px; // 等效 padding-block-start: 5px;

或者当为多个方向定义填充时:

// 传统 padding: 5px 10px 20px 15px; // 等效 padding-block: 5px 20px; padding-inline: 15px 10px;

当与使用flexbox进行内容对齐而不是float结合使用时,这些现代margin/padding模式更加强大。Flexbox是一个与方向无关的布局模型。它不是明确地将元素对齐到leftrighttopbottom,而是允许将内容对齐到其父元素的垂直和水平startend

例如:

// 在从左到右查看时将子元素对齐到右侧,或在从右到左查看时对齐到左侧。 parent-element { display: flex; align-items: flex-end; }

即使您的应用程序或网站目前不支持根据地域以不同的方向/方位显示文本/内容,开发人员最终也应通过采用上述模式,努力使所有用户都能获得无障碍的网络体验。这是一个很容易实现的过渡,每个开发人员都应采用,以实现未来的无障碍访问。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 20:41:38

系统学习JLink接线第一步:硬件连接

从零开始搞懂JLink接线:不只是连根线那么简单你有没有遇到过这样的场景?新板子焊好了,兴冲冲地插上JLink,打开Keil或J-Flash,结果弹出一个无情的提示:“Cannot connect to target.”反复检查电源、换线、重…

作者头像 李华
网站建设 2026/6/23 6:04:26

利用STM32硬件I2C模拟SMBus协议:操作指南

如何让STM32的硬件I2C“变身”SMBus主控:实战全解析你有没有遇到过这种情况?项目里要接一个BQ系列电量计,手册上清清楚楚写着“支持SMBus”,可你的STM32F103只标着“IC”——不是一回事吗?能直接通信吗?为什…

作者头像 李华
网站建设 2026/6/22 7:57:24

疾病早期筛查工具:风险因素综合评估在TensorRT上实现

疾病早期筛查工具:风险因素综合评估在TensorRT上实现 在基层医疗机构进行大规模慢性病筛查时,一个常见的痛点是——模型明明在实验室里准确率高达92%,但一部署到实际系统中,响应时间却动辄几百毫秒,高峰期甚至超时。医…

作者头像 李华
网站建设 2026/6/18 9:39:00

【基于单片机人脸识别电子密码锁智能门禁指纹识别语音提醒防盗成品 系统设计(实物+程序+原理图+其他资料)】

指纹门禁密码锁是一种既可以通过密码输入,指纹识别来实现门禁的开启关闭功能。 在日常生活中它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。 现在应用较广的门禁密码锁是以芯片为核心,通过编程来实现的。 …

作者头像 李华
网站建设 2026/6/17 19:32:07

中医辨证论治辅助:证型判断模型通过TensorRT提供参考

中医辨证论治辅助:证型判断模型通过TensorRT提供参考 在现代医疗场景中,中医的“辨证施治”正面临一场静默的技术变革。传统上依赖医师经验完成的望闻问切与证型判断,正在被基于深度学习的智能系统逐步增强。尤其是在基层医疗机构和远程诊疗环…

作者头像 李华
网站建设 2026/6/20 13:27:29

hal_uartex_receivetoidle_dma工业级串口接收的完整指南

工业级串口接收的终极方案:用HAL_UARTEx_ReceiveToIdle_DMA彻底告别丢包与高CPU占用你有没有遇到过这样的场景?你的STM32正在跑Modbus RTU协议,突然某个读取指令没响应;传感器以115200波特率连续发数据,主控偶尔“吃掉…

作者头像 李华