CSS深度学习 - 文本方向 direction 和 dir

2 篇文章 0 订阅
订阅专栏

dir 与 direction

在 HTML 中,指示元素中文本方向有如下几种方式。

第一种是直接使用 dir 属性去描述,详情 - dir

<div dir="rtl">
  <span>test1</span>
  <div dir="ltr">test2
    <div dir="auto">test3</div>
  </div>
</div>

第二种方式是使用 style 内联样式去实现,属性为 direction,常用的值有 ltrrtl,详情 - direction

<div style="direction: rtl;">
  <span>test1</span>
  <div style="direction: ltr;">test2
    <div>test3</div>
  </div>
</div>

还有一种方法是使用 writing-mode 去修改,这里不讨论这种情况,感兴趣的可以去了解
张鑫旭 - 改变CSS世界纵横规则的writing-mode属性
【CSS深入】设置不同块级流方向时的属性百分比计算

我们这里讨论前两种情况
上面代码的效果如下
在这里插入图片描述

dir 的取值有如下几种

  • ltr, 指从左到右,用于那种从左向右书写的语言(比如英语)。
  • rtl, 指从右到左,用于那种从右向左书写的语言(比如阿拉伯语)。
  • auto, 指由用户代理决定方向。它在解析元素中字符时会运用一个基本算法,直到发现一个具有强方向性的字符,然后将这一方向应用于整个元素。

这个属性可以被 CSS 属性 directionunicode-bidi 覆盖,如果 CSS 网页有效且该元素支持这些属性的话。

direction 则是一个 CSS 属性,用来设置文本、表列水平溢出的方向,与 dir 功能类似。
unicode-bididirection 是仅有的两个不受 all 简写影响的属性。unicode-bidi 是用来描述双书写方向文本的,如果一块内容同时包含有从左到右书写和从右到左书写的文本,那么用户代理(the user-agent)会使用复杂的 Unicode 算法来决定如何显示文本。unicode-bidi 属性会覆盖此算法,允许开发人员控制文本嵌入(text embedding)。

与 HTML 中的 dir 属性不同,direction 属性不会从表列继承到表单元格, 因为 CSS 继承遵从文档流, 而表单元格位于行内部, 但不在列内部。

二者的另一个区别体现在选择器的匹配上,相应的选择器有两种,类选择器 :dir() 和属性选择器 [dir=ltr]

  • [dir=ltr] 只能匹配有 dir 属性的元素,如果是用内联样式去实现的话就匹配不到。
  • :dir() 用来匹配特定书写方向的元素,他可以匹配使用样式实现后的元素。详情 :dir()。

例如给上面的代码加上如下样式

[dir=ltr] {
  color: blueviolet;
}

在这里插入图片描述
这里只有使用了 dir 属性的元素会被匹配,匹配简单元素就需要使用类选择器
添加如下代码

div:dir(rtl) {
  color: red;
}
div:dir(ltr) {
  color: orange;
}
[dir=ltr] {
  color: blueviolet;
}

这里需要注意的是,类选择器只有火狐实现了支持,其他浏览器都是不支持的。
在这里插入图片描述
下面为 chrome 和 firefox 中的效果图
在这里插入图片描述
在这里插入图片描述

基本显示规则

我们看如下代码,其中一个 div 包含纯文本,一个 div 包含一个 span 包裹的文本

<h2>example 2</h2>
<hr>
<div dir="rtl">hello CSS test</div>
<div dir="rtl">
  hello 
  <span>CSS </span>
  <span>test</span>
</div>

他们的显示效果是一致的
在这里插入图片描述
因为这里会改变的只是内联元素块的左右顺序,所有的内联内容,都被算作一个同质内联盒子,是当作一个整体处理的,因此,只有近似右对齐效果,而具体每个文字都没有左右顺序的变化。

内联元素块,包括替换元素(replaced element),如 imgbuttoninputvideoobject等。因此,上面的例子,而当里面的 inline 元素设置 display: inline-block;,则会看到左右顺序的变化。如下

<h2>example 2</h2>
<hr>
<div dir="rtl">hello CSS test</div>
<div dir="rtl">
  hello 
  <span style="display: inline-block;">CSS </span>
  <span style="display: inline-block;">test</span>
</div>
<div dir="rtl">
  hello 
  <p style="display: inline-block;">CSS </p>
  <p style="display: inline-block;">test</p>
</div>

在这里插入图片描述
对块级元素,只有类似 text-align: right; 的效果。

<div dir="rtl">
  hello 
  <p>CSS </p>
  <p>test</p>
</div>
<div style="text-align: right;">
  hello 
  <p>CSS </p>
  <p>test</p>
</div>

在这里插入图片描述

扩展

到这里,基本的用法都已经介绍完了,但是看下面这些示例

<h2>example 3</h2>
 <hr>
 <div style="direction: rtl;">
   <span>1</span>
   <span>2</span>
   <span>
     4555
     <span>432</span>
   </span>
 </div>

 <p style="direction: rtl;">
   <span>span1</span>
   <span>span2</span>
   <span>span3</span>
 </p>

 <div style="direction: rtl;">
   <span>,</span>
   <span>。</span>
   <span>
     !
     <span>~!@</span>
   </span>
 </div>

在这里插入图片描述
what? 有没有一种,明明代码一毛一样,就是显示不一样的既视感。显示结果让你怀疑人生,粘贴复制不相信自己。
然并卵,不管在什么浏览器,怎么粘贴复制,显示结果还是这样。
数字、符号、字母 的显示结果完全不一样。

可以看在其他浏览器中的显示结果

firefox
在这里插入图片描述
IE
在这里插入图片描述
这说明,他们的显示是按照一定规则去显示的。

划重点!这里涉及到一个概念 Unicode 双向算法

我们要知道的是,字符在内存中存放的逻辑顺序,和在页面显示的顺序是不一样的。最常用来处理双向文字的算法是 Unicode 双向算法Unicode 定义了它其中每个字符的方向属性,浏览器应用的一组规则(通过这个来进行自动判断文本 Unicode方向属性应该使用哪种方向)在显示时产生正确的顺序由 Unicode 双向算法进行描述,也可以简称为 bidi算法

Unicode 方向属性包含三种类型:强字符弱字符中性字符
首先,文字方向分为 Left To right,例如,英文、汉字等。Right To Left,例如,阿拉伯文字、希伯来文字等。

字符方向显示包含
强字符Left or Right方向性确定,Left or Right,和上下文无关,且可能影响其前后字符的方向性英文、汉字、阿拉伯文字等
弱字符Left or Right方向性确定,但是不会影响前后字符的方向性数字、数字相关的字符
中性字符Neutral方向性不确定,由上下文环境决定其方向大部分标点符号、空格

看到这里,相信很多人已经大致可以猜到为什么会有上面的显示结果了。

页面上有一个文本显示的基础方向(全局方向),定义的是一个区域的总体方向。他决定从哪个位置开始书写文字。例如 HTML 的 dir 就可以控制一个区域的文本方向。

而一段文本中具有相同方向性的连续字符,称为方向串,例如一段文本中,有多个字符,包含阿拉伯文字和英文字符,这里英文字符和阿拉伯字符就属于不同的方向串

例如下面这段文字

ولدت (+86)176-1234-0000

对他进行删除,移动光标等操作,就会发现位置变换和你的预期是不一样的,因为这段文本包含了不同的方向串

他的方向如下,分为 7 个方向串
数字是弱字符,有自己的方向性,向右
阿拉伯文字为强字符,向左
符号为中性字符,受到强字符的影响,向左

ولدت (+86)176-1234-0000
0000       | >
-          | <
1234       | >
-          | <
176        | >
(          | <
86         | >
+)  ولدت   | <

而我们把其中的阿拉伯文字删掉后,自动会变为我们熟悉的样子。

(+86)176-1234-0000

我们还可以强制转换字符的方向性,使用如下的编码
第一类是隐式双向控制字符,使用他们可以影响被包裹起来的中性字符方向

名称Unicode CodeHTML Code描述
LEFT-TO-RIGHT MARK (LRM)U+200E&#8206;&lrm;左到右
Right-To-Left Mark(RLM)U+200F&#8207;&rlm;右到左
<!-- 使用隐式实体 -->
<p>ولدت &lrm;(+&lrm;86&lrm;)&lrm;176&lrm;-&lrm;1234&lrm;-&lrm;0000</p>
<p>ولدت &lrm;(+86)176-1234-0000&lrm;</p>

<!-- 使用一个内联元素区分开强字符并设置中性字符的方向 -->
<p>ولدت <span dir="ltr">(+86)176-1234-0000</span></p>
<p><span dir="ltr">ولدت</span> (+86)176-1234-0000</p>

<!-- bdi标签能隔离外面的方向,默认值为auto,自动判断文本应该使用哪种方向 -->
<p>ولدت <bdi dir="auto">(+86)176-1234-0000</bdi></p>
<p><bdi dir="auto">ولدت</bdi> (+86)176-1234-0000</p>

在这里插入图片描述

显示标记如下,需成对使用,使用一个开始标记和结束标记包裹

LEFT-TO-RIGHT EMBEDDING (LRE) | U+202A | &#8234; or dir="ltr"
RIGHT-TO-LEFT EMBEDDING (RLE) | U+202B | &#8235; or dir="rtl"
LEFT-TO-RIGHT OVERRIDE (LRO) | U+202D | &#8237; or <bdo dir="ltr">
RIGHT-TO-LEFT OVERRIDE (RLO) | U+202E | &#8238; or <bdo dir="rtl">
POP DIRECTIONAL FORMATTING (PDF) | U+202C | &#8236; or </bdo>

例如这样去使用
在这里插入图片描述
就会发现后面的电话号码是正常显示的,符号方向也正常。

CSS direction 属性
shengyin714959的博客
09-11 191
direction属性指定文本方向/书写方向。默认值:ltr继承:yes版本:CSS2object。
css direction属性
梦殇的博客
08-06 374
csss direction属性用来控制元素内文本方向,有ltr和rtl两个常用值 //classname为a的元素内问本内容方向从左往右 .a{ direction:ltr } //classname为b的元素内文本内容方向从右往左 .b{ direction:rtl } ...
【Web前端】CSS文本处理方向
最新发布
一条晒干的咸鱼的博客
08-25 812
处理不同方向文本是一个重要且复杂的任务,尤其是在多语言支持和跨文化网站设计中尤为重要。CSS(层叠样式表)为我们提供了强大的工具来处理不同的书写模式和布局方向。接下来我们来继续探讨关于 CSS 中的书写模式、块级布局和内联布局、方向、逻辑属性和逻辑值,以及如何使用这些工具来有效地管理文本的显示。
深度学习文本领域的应用
一个有情怀的程序猿博客
06-25 2154
背景 近几年以深度学习技术为核心的人工智能得到广泛的关注,无论是学术界还是工业界,它们都把深度学习作为研究应用的焦点。而深度学习技术突飞猛进的发展离不开海量数据的积累、计算能力的提升和算法模型的改进。本文主要介绍深度学习技术在文本领域的应用,文本领域大致可分为4个维度:词、句子、篇章、系统级应用。 词。分词方面,从最经典的前后向匹配到条件随机场(Conditional Random Field,CRF)序列标注,到现在Bi-LSTM+CRF模型,已经不需要设计特征,从字粒度就能做到最好的序列标注效果..
CSS 文本方向 direction属性
歪脖先生的博客
02-13 4694
文本方向对于英文或中文等语言,默认是从左到右、从上到下进行阅读。然而,并非所有语言都是如此,还有许多从右向左阅读的语言,如阿拉伯语和希伯来语等。于是,CSS2.1引入了 direction属性,用来定义文本流的书写方向,可选值有 ltr | rtl,默认值为 ltr。ltr(left-to-right)表示文本流从左到右书写,rtl(right-to-left)表示文本流从右到左书写。direct...
每天CSS学习之direction
dietisi8980的博客
08-21 220
directionCSS2的属性,它的作用是规定文字书写的方向。 1、ltr:从左到右,即left to right。该值为默认值。如下所示: div{   border:1px solid red;   direction:ltr; } 2、rtl:从右到左,即right to left。如下所示: div{   bor...
Hexo-Next 博客搭建
热门推荐
qq_37828104的博客
05-16 9万+
整理网上的 Next 优化方法,外加写一份文章 感觉博客还行,不再羡慕别人的主题了 特效全开,跟开了吃鸡一样,电脑呼呼的 看了下建站时间,花了 23 天整,为了一个工具,感觉血亏
web页面开发,CSS的三种基础选择器,最全指南
m0_57205780的博客
06-10 250
前言 过完年了,准备实习的你是已经在实习了,还是已经辞职回家过年,准备年后重新找工作呢,又或者是准备2021年春招? 那么还没没踏出校门或者是刚出校门没多久的同学们该如何准备前端校招的面试呢? 02 目录 下面是这篇文章的目录结构,一般比较简单的问题我就一笔带过了,主要是分享一下比较有难度的知识点,答案来自网上,如果有版权问题我会删除。还有本文只是给出一个大概的知识点,如果想要深入学习还要靠自己去查一下哦! 如果答案有错误,欢迎指正! 计算机基础 前端基础(HTML/CSS) JavaScript 前端
记录遇到的web前端开发面试题(八股文)
qq_41347964的博客
04-20 1万+
文章目录前言一、javascript相关1.js的八个基本数据类型(高频)2.this的五种指向方式3.Function的call,apply和bind方法的区别?4.Promise,手写promise5.闭包6.原型链,作用域链与原型链的区别?7.继承与继承的五种实现方式8.深拷贝与浅拷贝的区别?(高频)9.事件委托10.var,const和let对比(高频)11.宏任务与微任务12.bind的实现方式13.eventloop,事件循环(超高频)14.new的过程,手动实现一个new方法15.0.1+0.
vue_2.0_fyf
Cat_Boom1999的博客
04-01 712
vue2.0 学习笔记 vue框架的两大核心: 一、前端开发历史 1994年可以看做前端历史的起点(但是没有前端的叫法) 1995年网景推出了JavaScript 1996年微软推出了iframe标签, 实现了异步的局部加载 1999年W3C发布第四代HTML标准,微软推出用于异步数据传输的 ActiveX(ActiveXObject),各大浏览器厂商模仿实现了 XMLHttpRequest(这是前端的真正的起始) 2006年,XMLHttpRequest被W3C正式纳入标准(这是前端正式的起始) 2006
你不能错过的【Python爬虫】测试3(爬取所有内容 + 完整源代码 + 架构 + 结果)| 人工智能 面试题:什么是卷积神经网络(CNN)?它在计算机视觉中的作用是什么?
追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光
11-26 559
你不能错过的【Python爬虫】测试3(爬取所有内容 + 完整源代码 + 架构 + 结果)| 人工智能 面试题:什么是卷积神经网络(CNN)?它在计算机视觉中的作用是什么?
深度学习NLP方向
Major_S的博客
07-30 794
深度学习NLP方向深度学习NLP方向深度学习NLP方向 有效的文本分类技巧包 小孩都看得懂的循环神经网络 ALBERT一作蓝振忠:预训练模型应用已成熟,ChineseGLUE要对标GLUE基准 哈工大车万翔教授:NLPer的核心竞争力是什么? 知识图谱简史:从1950到2019 科大讯飞移动反欺诈 ...
css控制文本渲染的方向
『程序员·小李』的博客
12-31 326
使用text-direction可以控制文本的渲染方式。 示例 <div class="ex1">left to right</div> <div class="ex2">right to left but word in order </div> <div class="ex3">right to left but word reversed</div> <div class="ex4">text align: ri
css direction 属性简介与实际应用。
weixin_30609331的博客
05-30 312
目前正在用vue构建组件库。写到弹框的时候没想到按钮的顺序问题,但是在应用中,确实会有选项按钮顺序不同的情况发生,但是又想共用一个组件。那么问题就出现了。后来看到了这篇文章,才茅塞顿开。 direction 属性规定文本方向 / 书写方向。 该属性指定了块的基本书写方向,以及针对 Unicode 双向算法的嵌入和覆盖方向。不支持双向文本的用户代理可以忽略这个属性。 1.基本上,大家只...
CSS进阶(终章)—— CSS世界流向的掌控者direction和writing-mode
我不是水哥
01-11 729
  人往高处走,水往低处流,CSS世界亦是如此吗?至今为止,我们讨论的CSS似乎一直遵循不知从什么时候就印在脑子里的“从左往右,从上往下”原则。这可能和我们日常的读写顺序相关,我们看文章的时候习惯从左往右,从上往下进行阅读。然而CSS世界的流向并不是固定的,只需要几条声明,就可以改变CSS世界的水平垂直流向。 1.改变水平流向的direction   direction属性的兼容性非常好却鲜有...
CSS direction 属性:设置文本方向存在的bug
weixin_47043592的博客
09-16 325
【代码】CSS direction 属性:设置文本方向存在的bug。
HTML 中bdo标签的dir属性和CSSdirection属性的区别与用法
单枪匹码
12-16 2085
一、<bdo>标签: 1、bdo充当英文是:覆盖,而在html中<bdo>标签也是覆盖之意。 2、<bdo>标签的定义与用法:在html中,<bdo>标签通常是用来把一些文本内容的方向(即:文字的内容)规定为与周围文本内容方向的自然方向相反。 3、<bdo>标签很少使用,一般是在多语言网页中使用,因为在多语言网页中,可能有不同于自然阅读方...
html改变文字方向,css文字方向怎么设置?
weixin_42363315的博客
06-08 4229
一般地,正常网页文本方向都是从上到下,从左到右。实际上,有多种设置文本方向的属性,置文本方向CSS样式有direction、unicode-bidi等方法。本文将详细介绍网页文本方向的设置方法。css设置文字方向的方法如下:1、使用direction属性设置文字方向direction是设置文本方向CSS样式值: ltr | rtl | inherit初始值: ltr应用于: 所有元素继承性: ...
CSS的:dir()伪类:根据文本方向定制样式的指南
2401_85439108的博客
08-18 506
在全球化的今天,网页设计需要考虑到不同语言和文化背景下的用户。文本方向是其中的一个重要因素,因为不同的语言可能有不同的阅读习惯,如从左到右(LTR)或从右到左(RTL)。CSS3引入了:dir()伪类选择器,它允许开发者根据元素的文本方向来应用特定的样式规则。本文将详细介绍:dir()伪类的使用方法,并结合代码示例展示其在实际开发中的应用。
写文章

热门文章

  • Canvas 使用 toDataUrl 导出图片的各类错误 19128
  • Docker-compose 多容器冲突解决方法 18983
  • Webpack4 升级全教程 16740
  • 你真的知道怎么创建一个长度为n的有序数组吗? 13191
  • Axios Post 请求后端接收不到数据 12356

分类专栏

  • 其他 7篇
  • 服务端 9篇
  • 可视化 5篇
  • JavaScript 9篇
  • JS 库 10篇
  • CSS、HTML 2篇
  • 后端 2篇

最新评论

  • Webpack4 升级全教程

    青岑lw: 先升级 webpack 和 cli,然后遇到问题单独升级包解决。不要全部包一起升级,问题太多

  • Webpack4 升级全教程

    女码农01: 具体怎么升级啊

  • 视频铺满页面解决方案

    lpl_L: 大佬很有效,不过移动端上怎么弄呢,这个方法好像不支持移动端,特别是安卓

  • docker-compose 配置 nginx + node + mysql 网站环境

    康康来了: 看不懂这个配置什么意思 [code=javascript] volumes: certbot-etc: certbot-var: web-root: driver: local driver_opts: type: none device: /home/wjw/www/blog/views/ o: bind [/code]

  • docker-compose 配置 nginx + node + mysql 网站环境

    diandaoyi6500: 跟我一样呀,这个最后怎么解决??

最新文章

  • git大小写不敏感
  • GitHub Actions 部署个人博客
  • Centos7 环境变量
2021年1篇
2020年8篇
2019年12篇
2018年16篇
2017年9篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家沈阳多彩玻璃钢雕塑青岛市玻璃钢人物雕塑供应商世界最好的商场美陈 比利时仿古玻璃钢雕塑造型锦州小区玻璃钢雕塑安装广州玻璃钢花盆花器东冲完安逸玻璃钢雕塑厂南通玻璃钢花盆生产厂家溧水美陈商场布置各种玻璃钢雕塑濮阳玻璃钢人物雕塑定制玻璃钢雕塑有什么优势组合式玻璃钢花盆开发铜陵大型户外玻璃钢雕塑价格防城港玻璃钢商场美陈玻璃钢橘子雕塑白银人物玻璃钢雕塑安装山东季节性商场美陈市场价洛阳镂空玻璃钢彩绘雕塑公司吉林多彩玻璃钢雕塑红塔区玻璃钢雕塑如何云南高质量玻璃钢雕塑制作北京校园玻璃钢雕塑玻璃钢古罗马武士雕塑商丘不锈钢牛玻璃钢景观雕塑广东商场美陈公司玻璃钢雕塑路牌指示湖北创意玻璃钢雕塑方法成都商场开业美陈黑龙江抽象玻璃钢雕塑哪家便宜香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化