news 2026/1/19 6:51:41

为什么你应该停止使用“传统“的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/1/12 22:42:09

Proteus 8.16下载安装教程:图文结合通俗解释全过程

从零开始搭建仿真环境:Proteus 8.16 安装实战全记录 你是不是也曾在做单片机实验时,因为没有开发板、元件缺货或者焊接出错而卡住? 有没有想过,在电脑上“搭电路”、“烧程序”,连一根杜邦线都不用,就能看…

作者头像 李华
网站建设 2026/1/19 2:27:08

科研经费申请辅助:立项依据撰写由TensorRT支持生成

科研经费申请辅助:立项依据撰写的推理加速实践 在高校和科研机构中,每年一度的科研项目申报总伴随着大量重复性文字工作。尤其是“立项依据”部分——既要体现学科前沿动态,又要突出创新价值,还得符合基金委的语言规范——往往让研…

作者头像 李华
网站建设 2026/1/18 8:54:00

有源蜂鸣器和无源区分:STM32控制逻辑深度剖析

蜂鸣器选型与STM32驱动实战:有源 vs 无源,到底怎么用?你有没有遇到过这种情况——明明代码写得没问题,蜂鸣器一通电却“嘶哑”地响了一声就停了?或者想做个双音报警,结果两个频率切换时声音断断续续、像是接…

作者头像 李华
网站建设 2026/1/18 15:45:06

在使用 Android Jetpack Compose的 App里创建 SurfaceView和Surface

基本方法是使用AndroidView创建surfaceview,在surfaceHolder的callback里取得surfaceComposable fun SurfaceViewScreen() {val context LocalContext.current// 用于保存 Surface 引用var surfaceHolder: SurfaceHolder? by remember { mutableStateOf(null) }An…

作者头像 李华
网站建设 2026/1/17 20:35:16

三句话,复盘我的2025年网安学习之路

前言一元复始,万象更新。转眼之间,2025 年已走到尾声,2026 年悄然临近。回望这一年,在网络安全技术的学习与实践过程中,我经历了从零散接触到系统梳理的转变,也逐渐意识到:学习这门技术&#xf…

作者头像 李华
网站建设 2026/1/16 3:27:32

市场营销策划AI:创意方案生成依托TensorRT快速迭代

市场营销策划AI:创意方案生成依托TensorRT快速迭代 在今天的智能营销战场,速度就是竞争力。当一个品牌需要为新品咖啡机在社交媒体上迅速推出一组富有感染力的推广文案时,用户不会愿意等待数秒甚至更久——他们期待的是“输入需求&#xff0c…

作者头像 李华