This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the specification changes.
:dir CSS pseudo-class matches elements based on the directionality of the text contained in it. In HTML, the direction is determined by the
dir attribute. For other document types there may be other document methods for determining the language.
Note that the usage of the pseudo-class
:dir() is not equivalent of using the
[dir=…] attribute selectors. The latter matches a value of the
dir and doesn't match when no attribute is set, even if in that case the element inherits the value of its parent; similarly
[dir=ltr] won't match the
auto value that can be used on the
dir attribute. In the opposite,
:dir() will match the value calculated by the UA, being inherited or the
:dir() considers only the semantic value of the directionality, the one defined in the document, most of the time in HTML. It won't consider styling directionality, the one set by CSS properties like
direction which are purely stylistic.
<div dir="rtl"> <span>test1</span> <div dir="ltr">test2 <div dir="auto">עִבְרִית</div> </div> </div>
In this example
:dir(rtl) will match the top level div, span containing
test1, and the div with the hebrew characters.
:dir(ltr) will match the div containing
|WHATWG HTML Living Standard
The definition of ':dir(ltr)' in that specification.
|Living Standard||No changes.|
|Selectors Level 4
The definition of ':dir()' in that specification.
|Working Draft||Initial definition|
|Feature||Chrome||Firefox (Gecko)||Internet Explorer||Edge||Opera||Safari|
|Basic support||No support ||17 (17) -moz
|No support||No support ||No support||No support |
|Feature||Android||Firefox Mobile (Gecko)||IE Mobile||Opera Mobile||Safari Mobile|
|Basic support||No support ||17.0 (17) -moz
|No support||No support||No support |
: WebKit bug #64861
: Chrome issue #576815