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

跟着 MDN 学CSS day_27:(处理不同方向的文本)

在传统的CSS学习中我们接触的属性和值大多与显示器的物理方向紧密相关。例如我们使用top、right、bottom、left来定位元素使用margin-top、padding-left来设置间距这些属性默认假设文本是从左到右、从上到下排列的。这种假设对于英文、法文等语言是成立的但对于阿拉伯语、希伯来语等从右向左书写的语言或者日文、蒙古文等可以纵向书写的语言传统的物理属性就无法很好地适应了。随着互联网的全球化发展CSS不断演进以更好地支持多语言环境。书写模式属性和逻辑属性的引入使得开发者能够创建适应不同文本方向的布局而不需要为每种语言单独编写样式。本文将深入讲解书写模式的概念、逻辑属性的使用方法以及它们对现代CSS布局的重要意义。一、书写模式的基本概念1.1writing-mode属性的三种取值书写模式指的是文本的排列方向是横向还是纵向。CSS中的writing-mode属性用于控制文本的流动方向它有三种主要取值取值文本排列块级元素堆叠适用语言horizontal-tb水平排列从上到下英文、中文等大多数语言默认值vertical-rl垂直排列从右到左传统日文、蒙古文等纵向书写语言vertical-lr垂直排列从左到右某些特定排版场景详细说明horizontal-tb—— 文本行从左向右排列段落从上向下排列vertical-rl—— 文本列从右向左排列每列内的字符从上向下阅读vertical-lr—— 与vertical-rl类似但块级元素是从左向右堆叠1.2 书写模式对布局的影响书写模式不仅仅改变文本的方向它从根本上改变了块级元素和行内元素的布局维度。维度转换模式块级方向行内方向块级对应物理维度行内对应物理维度horizontal-tb从上到下从左到右高度宽度vertical-rl从右到左从上到下宽度高度核心影响在horizontal-tb模式下块级元素从上到下堆叠块级方向是垂直的行内元素从左到右排列行内方向是水平的当切换到vertical-rl模式时整个坐标系发生了旋转块级方向变成了水平方向块级元素从右向左堆叠行内方向变成了垂直方向行内元素从上向下排列现代布局基础这意味着所有依赖于方向概念的CSS属性都会受到影响。现代CSS布局方法如弹性盒和网格布局都基于块级方向和行内方向的概念而不是基于物理的上下左右。当你掌握了书写模式的工作方式你就能够创建出真正适应任何文本方向的布局。二、块级布局与行级布局的维度转换这张图展示了在水平书写模式下的两种维度。这张图片展示了纵向书写模式下的两种维度。2.1 块级方向与行内方向的重新定义在CSS布局中块级方向和行内方向是两个核心概念。概念定义在horizontal-tb中在vertical-rl中块级方向块级元素的堆叠方向从上到下垂直从右到左水平行内方向文本行的排列方向从左到右水平从上到下垂直布局行为在horizontal-tb模式下块级元素独占一行并占据全部可用宽度行内元素并排排列在vertical-rl模式下块级元素水平堆叠行内元素垂直堆叠2.2 实际布局中的维度感知当你开始使用弹性盒或网格布局时理解书写模式对维度的影响变得尤为重要。弹性盒影响flex-direction: row默认值→ 主轴方向为行内方向horizontal-tb→ 主轴是水平方向vertical-rl→ 主轴变为垂直方向网格布局影响grid-template-columns→ 定义行内方向上的轨道grid-template-rows→ 定义块级方向上的轨道当书写模式改变时列和行的含义会互换设计优势这种设计使得布局系统具有了内在的灵活性。你不需要为不同的语言环境重新设计布局结构只需要改变书写模式整个布局会自动适应新的方向。这是CSS朝着真正国际化方向迈进的重要一步。三、逻辑属性的引入3.1 物理属性面临的困境传统的CSS物理属性如width、height、margin-top、padding-left等都与屏幕的物理方向绑定。这在单一书写模式下没有问题但当书写模式改变时这些物理属性就暴露出了缺陷。⚠️典型问题场景你有一个盒子设置了width: 100px希望它在垂直书写模式下能够自然地适应文本的垂直流动但实际情况是在vertical-rl模式下width仍然控制水平方向的尺寸导致盒子变得过窄文本被迫换行你真正想要的是控制文本流动方向的尺寸这应该是块级方向或行内方向的尺寸而不是固定的物理宽度边距困境更复杂的情况出现在边距和内边距上。当你设置了margin-top在vertical-rl模式下这个上边距变成了什么方向按照常理它应该仍然相对于物理顶部但文本是从右向左流动的物理顶部边距可能并不是你想要的效果。3.2 逻辑属性的核心概念为了解决物理属性在多样化书写模式下的局限性CSS引入了逻辑属性和逻辑值。逻辑属性不绑定物理方向而是绑定到书写模式的块级方向和行内方向。逻辑属性物理替代horizontal-tb中等同于vertical-rl中等同于inline-sizewidthwidthheightblock-sizeheightheightwidth核心优势inline-size—— 表示行内方向的尺寸。在horizontal-tb模式下等同于width在vertical-rl模式下等同于heightblock-size—— 表示块级方向的尺寸。在horizontal-tb模式下等同于height在vertical-rl模式下等同于width自适应行为无论书写模式如何变化inline-size始终控制文本流动方向的尺寸这正是我们期望的行为。四、逻辑边距、边框和内边距4.1 四个方向的逻辑映射物理边距属性都有对应的逻辑版本物理属性逻辑属性块级起始逻辑属性块级结束逻辑属性行内起始逻辑属性行内结束margin-topmargin-block-start———margin-bottom—margin-block-end——margin-left——margin-inline-start—margin-right———margin-inline-end完整映射体系类型块级起始块级结束行内起始行内结束边距margin-block-startmargin-block-endmargin-inline-startmargin-inline-end内边距padding-block-startpadding-block-endpadding-inline-startpadding-inline-end边框border-block-startborder-block-endborder-inline-startborder-inline-end体系优势这个体系的美妙之处在于你只需要理解块级方向和行内方向的概念就能预测在任何书写模式下边距、边框和内边距的应用位置。起始边总是文本开始的地方结束边总是文本结束的地方无论文本是水平还是垂直排列。4.2 对比示例说明属性类型物理属性写法逻辑属性写法边距margin-top: 10pxmargin-block-start: 10px边距margin-right: 20pxmargin-inline-end: 20px内边距padding-left: 15pxpadding-inline-start: 15px边框border-bottom: 2px solidborder-block-end: 2px solid行为差异当书写模式为horizontal-tb时物理属性和逻辑属性的表现几乎相同因为物理方向与逻辑方向重合当书写模式切换到vertical-rl时物理属性仍然固定在原来的物理方向上导致边距和边框出现在不期望的位置逻辑属性自动适应新的书写模式边距始终出现在文本流动的起始边边框始终围绕内容的相应边缘前瞻性建议这个对比清楚地表明对于需要支持多语言环境的项目使用逻辑属性是更好的选择。即使你目前只处理水平书写模式养成使用逻辑属性的习惯也能让你的代码在未来更具可移植性。五、逻辑值的应用5.1 物理值的逻辑替代除了属性名称的逻辑化CSS还引入了值的逻辑替代。传统的物理值也有对应的逻辑版本物理值逻辑值说明topblock-start块级方向起始侧bottomblock-end块级方向结束侧leftinline-start行内方向起始侧rightinline-end行内方向结束侧浮动示例float: left—— 元素向左浮动float: inline-start—— 元素浮动到行内方向的起始侧从左向右的语言中 →左浮动从右向左的语言中 →右浮动文本对齐示例text-align: start—— 文本对齐到行内方向的起始侧水平书写模式 → 等同于left从右向左的语言中 →自动变为right5.2 浮动与定位的逻辑值示例img{float:inline-start;margin-inline-end:20px;margin-block-end:10px;}效果对比书写模式float: inline-start表现间距表现horizontal-tb图片浮动到左侧margin-inline-end→右侧间距margin-block-end→底部间距vertical-rl图片浮动到顶部行内起始方向变为垂直方向的顶部margin-inline-end→右侧间距margin-block-end→底部间距镜像布局通过改变inline-start为inline-end你可以让图片浮动到行内方向的结束侧实现镜像布局。核心价值这种灵活性使得同一套样式代码可以适应各种语言环境的布局需求无需编写额外的条件样式。六、实际开发中的选择建议6.1 何时使用物理属性尽管逻辑属性提供了更好的国际化支持但在某些场景下物理属性仍然是合适的场景原因单一语言环境项目只服务于使用水平从左到右书写模式的单一语言物理定位需求需要相对于视口或屏幕进行定位如固定在屏幕底部的提示条优势物理属性更直观更容易理解和调试而且浏览器支持更早、更稳定。6.2 何时使用逻辑属性场景原因多语言支持项目需要支持多种语言特别是包含从右向左书写或垂直书写的语言前瞻性开发即使目前只处理水平从左到右的语言为未来可移植性做准备现代布局学习深入理解弹性盒、网格布局的底层逻辑趋势判断随着浏览器对逻辑属性的支持不断完善逻辑属性正在成为CSS开发的新标准。在新项目中优先使用逻辑属性在旧项目中逐步迁移关键部分的物理属性是比较合理的演进策略。七、总结书写模式和逻辑属性是CSS国际化能力的重要组成部分。核心概念要点writing-mode控制文本排列方向horizontal-tb、vertical-rl、vertical-lr块级方向块级元素的堆叠方向随书写模式变化行内方向文本行的排列方向随书写模式变化inline-size/block-size逻辑尺寸自动适应书写模式逻辑边距/内边距/边框*-block-start/end、*-inline-start/end始终相对于文本流动方向逻辑值block-start/end、inline-start/end用于浮动、定位、文本对齐通过writing-mode属性我们可以控制文本的排列方向从而支持从右向左和从上到下的各种语言。通过逻辑属性和逻辑值我们可以创建不依赖于物理方向的样式使布局能够自动适应任何书写模式。理解块级方向和行内方向的概念对于掌握现代CSS布局至关重要。弹性盒、网格布局、多列布局等高级布局方法都建立在这些概念之上。即使你永远不会直接使用vertical-rl书写模式学习这些概念也能帮助你更深刻地理解CSS布局的底层逻辑。随着互联网的全球化和CSS标准的持续演进书写模式和逻辑属性的重要性会越来越高。现在是学习并开始使用这些特性的最佳时机。还在纠结 CSS 样式写得杂乱无章、布局频频踩坑收藏此文持续跟进后续分享 CSS 高效简写、兼容适配方案、经典布局案例、样式避坑干货从基础样式到实战排版一站式学透快速提升前端页面编写能力
http://www.rkmt.cn/news/1413771.html

相关文章:

  • 别再乱接线了!Arduino Nano + HC-05蓝牙 + DHT11传感器,保姆级避坑指南(附完整代码)
  • 别再死记公式了!用三维动画和几何直觉理解MUSIC/ESPRIT算法的子空间核心
  • 基于ElevenLabs API的AI助手语音合成集成实践
  • 核电厂外来人员无感定位技术方案解析
  • 扬州元点智创GEO联系方式 合作电话 官方网站 官网地址 - 元点智创
  • 上海大模型应用开发公司怎么选:技术路线、费用结构与能力评估全解析
  • 3PEAK思瑞浦 TPA6062-SO1R SOP8 运算放大器
  • Smithbox终极指南:从零掌握魂系列游戏参数与地图编辑
  • Java RPG Maker MV/MZ 解密工具:高效专业的一站式解决方案
  • 长期项目使用Taotoken聚合调用在模型更新与切换上的便利性
  • RPG Maker Decrypter:解锁加密游戏资源的终极免费工具
  • 从忘记压缩包密码到护网演练:一个网络安全爱好者的三年工具进化史
  • Unity 2022 LTS 实战:从零手搓一个带缩放、瞬移和副本地图的完整小地图系统
  • 如何用PrusaSlicer提升3D打印质量:7个实用技巧
  • 深耕垂直赛道工程化落地 集之互动开创AI短剧出海运营新模式
  • 避坑指南:EXT151(QRC)安装后OA库路径报错?看这篇就够了
  • Unity 2D游戏地图效率翻倍:Tilemap高阶技巧与常见坑点全解析(2024版)
  • Epcoritamab 艾可瑞妥单抗治疗复发难治性弥漫大 B 细胞淋巴瘤:皮下给药的疗效数据
  • Taotoken Token Plan套餐如何为高频用户带来显著成本节省
  • 用LeapMotion SDK在Unity里玩点花的:手势识别实现隔空抓取与物体吸附
  • 解决Phytec LPC2294开发板与ULINK2调试器兼容性问题
  • 为什么你的Gemini应用在曼谷/吉隆坡/雅加达集体“失语”?——东南亚语言Tokenization陷阱、文化适配断层与3步修复清单
  • are you close to your cousins
  • 高精度分布式无线微震监测系统:从原理到矿山压裂监测实战
  • 绍兴黄金上门回收哪家好?福运来黄金回收透明靠谱免费收 - 黄金回收
  • 别再满盘找nvidia-smi了!Win10下快速定位并一键直达GPU监控(附CUDA 11+路径)
  • NCMconverter深度解析:如何轻松解锁网易云音乐加密格式的3个关键步骤
  • UE4SS完整指南:解决DLL加载异常的7个实用技巧与深度解析
  • D2RML:如何3步实现暗黑2重制版多开,告别繁琐登录流程
  • Steam游戏自动破解终极指南:三步实现DRM自由,让游戏备份不再受限