编程 为什么你应该停止使用传统的 Margin 和 Padding

2024-11-18 14:34:19 +0800 CST views 465

为什么你应该停止使用传统的 Margin 和 Padding

随着网络用户数量的不断增加,确保网络体验对所有用户都具有可访问性变得更加重要。这不仅包括视觉上的无障碍,还涉及从不同方向或角度(如从右到左、从上到下)访问内容的用户。

当你使用传统的 marginpadding 时,你明确地定义了来自各个方向(上、下、左和右)的边距和填充。这种方式可能会在你自己的区域设置中创建一个看似不错的布局,但对于使用不同区域设置的用户来说,可能会因为布局的方向和角度不同而感到困惑。

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

这些新的 CSS 属性可以更好地适应不同方向的布局需求。让我们来看看这些属性是如何工作的,以及为什么我们要使用它们。

margin-inlinepadding-inline

margin-inlinepadding-inline 控制左右 margin / padding,但它们不是明确地定义左边距或右边距,而是定义起始边距(start)和结束边距(end)。虽然某个区域可能从左到右排列,但其他区域可能相反,因此,以这种方式定义可以确保无论区域设置如何,marginpadding 都会按预期显示。

margin-blockpadding-block

margin-blockpadding-block 控制上下 margin / padding,也遵循相同的 startend 模式,而不是明确地定义顶部或底部。

具体用法

  • 同时为多个方向定义 marginpadding

    • 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 结合使用

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

例如:

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

结论

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

复制全文 生成海报 前端开发 CSS 无障碍设计

推荐文章

Golang 随机公平库 satmihir/fair
2024-11-19 03:28:37 +0800 CST
Vue 3 中的 Fragments 是什么?
2024-11-17 17:05:46 +0800 CST
一个有趣的进度条
2024-11-19 09:56:04 +0800 CST
Vue3中如何处理路由和导航?
2024-11-18 16:56:14 +0800 CST
PHP如何进行MySQL数据备份?
2024-11-18 20:40:25 +0800 CST
动态渐变背景
2024-11-19 01:49:50 +0800 CST
CSS实现亚克力和磨砂玻璃效果
2024-11-18 01:21:20 +0800 CST
php内置函数除法取整和取余数
2024-11-19 10:11:51 +0800 CST
git使用笔记
2024-11-18 18:17:44 +0800 CST
Vue3 组件间通信的多种方式
2024-11-19 02:57:47 +0800 CST
一文详解回调地狱
2024-11-19 05:05:31 +0800 CST
Python中何时应该使用异常处理
2024-11-19 01:16:28 +0800 CST
MySQL 优化利剑 EXPLAIN
2024-11-19 00:43:21 +0800 CST
使用xshell上传和下载文件
2024-11-18 12:55:11 +0800 CST
介绍 Vue 3 中的新的 `emits` 选项
2024-11-17 04:45:50 +0800 CST
Vue3中如何处理状态管理?
2024-11-17 07:13:45 +0800 CST
Rust 中的所有权机制
2024-11-18 20:54:50 +0800 CST
PostgreSQL日常运维命令总结分享
2024-11-18 06:58:22 +0800 CST
前端如何优化资源加载
2024-11-18 13:35:45 +0800 CST
五个有趣且实用的Python实例
2024-11-19 07:32:35 +0800 CST
Vue3中怎样处理组件引用?
2024-11-18 23:17:15 +0800 CST
Boost.Asio: 一个美轮美奂的C++库
2024-11-18 23:09:42 +0800 CST
程序员茄子在线接单