CSS-rtl元素中的方向ltr

CSS-rtl元素中的方向ltr,css,Css,标记如下所示: <html dir="rtl"> <head> <style> p {direction: rtl;} code{direction: ltr !important;} </style> </head> <body> <p>متن به زبان فارسی<code>

标记如下所示:

<html dir="rtl">
    <head>
        <style>
            p {direction: rtl;}
            code{direction: ltr !important;}
        </style>
    </head>
    <body>
        <p>متن به زبان فارسی<code>some:code;</code>متن به زبان فارسی</p>
    </body>
</html>

some word to reach quality of content, ah rules...
但是
direction:ltr
属性不起作用,有没有办法让它起作用

请注意,我们不能从html标记中删除
dir=“rtl”
,也不能删除
float:left
销毁所有内容


代码更新:它不适用于波斯语

您的代码工作正常,请看这个

HTML代码

<p>some text <code>some:code;</code></p>
some word to reach quality of content, ah rules...
html,body{direction: rtl;}
p {direction: rtl;}
code{direction: ltr !important;}
CSS代码

<p>some text <code>some:code;</code></p>
some word to reach quality of content, ah rules...
html,body{direction: rtl;}
p {direction: rtl;}
code{direction: ltr !important;}

您可以添加格式控制字符来解决此双向(Bidi)问题

添加
&lrm从左到右标记-类似于:

<p>متن فارسی<code>some:code;&lrm;</code>متن فارسی</p> /* added &lrm; char here */


有关更多信息,请查看

问题似乎是在从右到左的上下文中,
some:code
显示为
;some:code
(即分号显示在左侧,而不是右侧),即使
元素上的
方向
设置为
ltr

三个备选方案,按优先顺序排列:

1) 对
code
元素(以及在从右到左的环境中包含从左到右文本的其他元素)使用HTML中的
dir
属性:

3) 在
code
元素内容的开头使用U+202A从左到右嵌入,在结尾使用U+202C POP定向格式,例如

<code dir=ltr>&#202a;some:code;&#202c;</code>
和#202a;一些:代码Êc
这个问题是由Unicode双向性规则引起的。考虑示例
一些:代码
(字面意思),设置
方向:ltr
是不够的。在从右到左的整体上下文中,“;”字符在方向上是中性的,遵循封闭内容的方向性,因此它被放置在左侧。在某种意义上,由于处于LTR和RTL文本之间的连接点,它被自己的元素和父元素撕裂到不同的方向,Unicode规则说父元素获胜

解决方案1解决了这个问题,因为HTML
dir
属性和CSS
direction
属性之间存在差异,如HTML5 CR第10.3.5条所示。该属性导致“双向嵌入”,这意味着元素内容在方向性嵌套的新级别上呈现

解决方案2在CSS中使用属性执行相同的操作。注意HTML5 CR强调:“强烈建议作者使用dir属性来指示文本方向,而不是使用CSS,因为这样即使在没有CSS的情况下,他们的文档也会继续正确呈现。”


解决方案3是在角色级别做同样事情的另一种方法。在大多数情况下,您也可以从左到右标记字符(在开头和结尾),但此处使用的字符是CSS 2.1建议的与
unicode bidi:embed
对应的字符。HTML 4.01提到了方向性控制字符,但补充道:“标记方法可以更好地保证文档结构的完整性,并在使用简单的文本编辑器编辑双向HTML文本时缓解一些问题,但某些软件可能更适合使用[UNICODE]字符。如果使用这两种方法,则应特别小心,以确保标记的正确嵌套和定向嵌入或覆盖,否则,呈现结果未定义。“

您的HTML是错误的。什么是
?您可能需要
-也不要忘记关闭它
。这只是一个小错误,我会修复它,它不是原始的html标记,仍然不起作用…您能解释一下什么不起作用吗?波斯语角色有什么不同?我遗漏了一些东西…“不工作”不是一个问题描述。你应该明确地说出你认为的问题所在。你们想因为我糟糕的英语用法惩罚我吗?英语不是我的第一语言,“stackoverflow”也不是你指挥人们做什么、说什么或怎么说的迷你独裁!波斯语脚本是如何引起问题的?@MarcAudet-事实上,我没有为波斯语更改任何内容。我的解决方案没有变。我刚刚用他的波斯语标记更新了答案。这让人放心,我想我错过了显而易见的东西!感谢您的澄清。使用控制字符方法时,应在元素内容的开头和结尾使用控制字符。例如,
:foo
呈现为
foo:
,而
:foo&lrm