css:dir =“rtl”VS style =“direction:rtl”

问题描述 投票:0回答:4

我知道当方向内联时如何设计样式

<div dir="rtl">foo</div>

div[dir="rtl"]
{
 ....;
}

但是如何设计

<div style="direction:rtl">foo</div> ?

两者的行为都符合预期(文本的正确“对齐”),但我需要对内部的某些元素(浮动、文本对齐...)进行更精细的调整,并且在第二种情况下我无法正确设置我的规则。

我无法编辑html。我必须使用 style="direction:rtl"。

css direction
4个回答
31
投票

在表单和插入文本上使用 dir="auto" 以便自动检测运行时提供的内容的方向

<div dir="auto">Hello, world!</div>
<br/>
<div dir="auto">لا إله إلا الله محمد رسول الله</div>
<br/>
<input type="text" dir="auto" value="Hello, world!" > 
<br/><br/>
<input type="text" dir="auto" value="لا إله إلا الله محمد رسول الله" >

JSFIDDLE 演示 https://jsfiddle.net/80k0drsf/


9
投票

由于您无法修改 HTML,所以一个非常非常 hacky 的选择器将是:

div[style*="direction:rtl"] {
    ...
}

JSFiddle 演示

请注意,我使用的是

style*=
而不是仅使用
style=
,因为这还将匹配在元素的
direction:rtl
属性中声明的不仅仅是
style
的元素。

为了增强选择器的强度,您还可以使用

[style*="direction: rtl"]
来处理
style
属性,这些属性用空格将值与属性分开:

[style*="direction:rtl"], [style*="direction: rtl"] { ... }

或者在这种情况下,您可以只匹配包含“rtl”的

style
属性,因为我很确定这种字符组合不会在任何其他属性中使用(忽略背景图像文件名等外部资源):

[style*="rtl"] { ... }

更新了 JSFiddle 演示


0
投票
1. 2. 2. 2. 3. 4. 4. 4. ”.3. ” 4. 4. 4. 4. 4. 4. 5. 发送短信“发送短信”。阿尔及利亚 阿尔及利亚 和 阿尔及利亚

-4
投票

只需将“rtl”类添加到 html 标签

<html dir="rtl" class="rtl">
 <head>
   <style>
      html[class*="rtl"] body {
         background-color:blue;
      }
      html[class*="rtl"] div{
         background-color:green;
      }
   </style>
 </haed>

 <body>

 <div>
 </div>

 </body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.