如何创建仅在HTML/body的dir属性为rtl时生效的CSS规则?
如何创建仅在HTML/body的dir属性为rtl时生效的CSS规则?
当然可以!这其实是处理RTL(从右到左)布局非常实用的技巧,完美解决你不想为每种RTL语言单独写规则的问题。
你只需要使用CSS属性选择器,针对html标签中dir属性值为rtl的情况来编写样式规则就可以了。具体用法如下:
基础全局规则
如果要给整个页面设置RTL相关的全局样式,可以直接针对html[dir="rtl"]写规则:
html[dir="rtl"] { direction: rtl; text-align: right; }
针对特定元素的RTL规则
要是需要给某个具体组件或元素单独调整样式,只需要把属性选择器作为父级前缀,比如:
/* 调整段落的对齐和边距 */ html[dir="rtl"] p { text-align: right; margin-left: 0; margin-right: 1.5em; } /* 让导航栏元素反向排列 */ html[dir="rtl"] .main-navigation { flex-direction: row-reverse; justify-content: flex-start; } /* 调整列表项的符号位置 */ html[dir="rtl"] ul { padding-right: 2em; padding-left: 0; }
这种方法的好处在于:不管你的网站支持阿拉伯语、希伯来语还是其他任何RTL语言,只要GTranslate(或者其他多语言工具)给html标签加上了dir="rtl"属性,这些样式就会自动生效,不用为每种语言单独写:lang()规则,维护起来省心很多。
而且你完全不需要替换现有的style.css,只需要把这些RTL专属规则追加到现有样式文件里,或者单独新建一个小的样式文件引入即可,不会影响英文(LTR)版本的正常显示。
备注:内容来源于stack exchange,提问作者alancc




