writing-mode属性 最初只是ie中的属性,只有ie支持,现在在css3中谷歌,火狐也开始支持。

所以使用的时候就需要记住两套不同的语法,ie的私有属性和css3的规范属性

如果只需要兼容到ie8+就可以只使用css3的规范属性就可以了

css3:

writing-mode:horizontal-tb;//默认:水平方向,从上到下
writing-mode: vertical-rl;//垂直方向,从右向左
writing-mode:  vertical-lr;//垂直方向,从左向右ie私有属性:主要的:
writing-mode: lr-tb ;//从左到右,从上到下。默认
writing-mode: tb-rl;//从上到下,从右向左
writing-mode:tb-lr (IE8+);//水平方向,从上到下,从左到右
如果你的项目需要兼容IE7,则只有关注这两个值就可以了:初始值lr-tbtb-rl,对应于CSS3规范中的horizontal-tbvertical-rl!

writing-mode属性和float属性有些类似(元素的宽度和高度由子元素撑起来),原本设计的是控制内联元素的显示的;就是文字的显示

writing-mode将页面默认的水平流改成了垂直流1. 水平方向也能margin重叠css
.demo {-webkit-writing-mode: vertical-lr;-ms-writing-mode: vertical-lr;writing-mode: tb-lr;margin-bottom: 20px;}.demo .div1, .demo .div2 {margin: 0 20px;background-color: red;}

html

<div class="demo"><div class="div1">水平方向margin重叠</div><div class="div2">水平方向margin重叠</div>
</div>

2. 可以使用margin:auto实现垂直居中css
.demo1 {height: 300px;background-color: #006000;-webkit-writing-mode: vertical-lr;-ms-writing-mode: vertical-lr;writing-mode: tb-lr;}.demo1 .div3 {height: 100px;width: 200px;margin: auto 0;background-color: red;}                

html
<div class="demo1"><div class="div3"></div>
</div>

3. 可以使用text-align:center实现图片垂直居中css
   .demo2 {-webkit-writing-mode: vertical-lr;-ms-writing-mode: vertical-lr;writing-mode: tb-lr;height: 300px;background-color: #006000;text-align: center;}                

html
<div class="demo2"><img src="data:images/1s.jpg">
</div>

4. 可以使用text-indent实现文字下沉效果css
.demo3{-webkit-writing-mode: vertical-lr;-ms-writing-mode: vertical-lr;writing-mode: tb-lr;}.demo3 a {border: 10px solid red;text-decoration: none;-webkit-border-radius: 50%;-moz-border-radius: 50%;border-radius: 50%;text-align: center;font-size:28px;color: darkred;display: block;height:50px;width: 50px;line-height: 50px;background-color: red;box-shadow: inset 0 0 1px darkred, 0 1px, 0 2px, 0 4px;}

html

<div class="demo3"><a href="javascript:void(0)">签</a>
</div>

5. 可以实现全兼容的icon fonts图标的旋转效果就是设置包含icon的父元素的writing-mode为vertical-rl,就可以实现元素的180度旋转

writing-mode和direction的关系

writing-modedirectionunicode-bidi是CSS世界中3大可以改变文本布局流向的属性。其中directionunicode-bidi属于近亲,经常在一起使用,也是唯一两个不受CSS3 all属性影响的CSS属性,基本上就是和内联元素一起使用使用。

乍一看,writing-mode似乎包含了directionunicode-bidi某些功能和行为,例如vertical-rlrldirectionrtl值有相似之处,都是从右往左。然而,实际上,两者是没有交集的。因为vertical-rl此时的文档流为垂直方向,rl表示水平方向,此时再设置direction:rtl,实际上值rtl改变的是垂直方向的内联元素的文本方向,一横一纵,没有交集。而且writing-mode可以对块状元素产生影响,直接改变了CSS世界的纵横规则,要比direction强大和鬼畜的多。

然而,CSS的奇妙就在于,某些特性当初可能就是问了某些图文排版设计,但是,我们可以利用其带来的特性,发挥自己的创造力,实现其他很多意想不到的效果。所以,上面出现的三剑客都是非常好的资源。

writing-mode和*-start属性的流机制

CSS3中出现了诸多*-start/*-end属性(亦称为CSS逻辑属性),例如:margin-start/margin-endborder-start/border-endpadding-start/padding-end, 以及text-align:start/text-align:end声明。

下面问题来了,为什么会蹦出这么多*-start/*-end鬼?

那是因为现代浏览器加强了对流的支持,包括老江湖direction,以及最近年月跟进的writing-mode

在很久以前,我们的认知里,网页布局就一种流向,就是从左往右,从上往下,因此,我们使用margin-left/margin-right没有任何问题。但是,如果我们流是可以变化的,例如,一张图片距离左边缘20像素,我们希望其文档流是从右往左,同时距离右侧是20像素,怎么办?

此时,margin-left:20px在图片direction变化后,就无效了;但是,margin-start就不会有此问题,所谓start, 指的是文档流开始的方向,换句话说,如果页面是默认的文档流,则margin-start等同于margin-left,如果是水平从右往左文档流,则margin-start等同于margin-rightmargin-end也是类似的。

webkit内核的浏览器还支持*-before*-end,默认流下的margin-before近似于margin-topmargin-after近似于margin-bottom,然而,规范貌似没提及,FireFox也没支持,*-before*-after出场的机会并不多,为什么呢?因为实际上,配合writing-mode,*-start/*-end已经可以满足我们对逻辑位置的需求了,水平和垂直都可以控制,对立方向适用老的*-top/*-bottom.

例如,我们设置writing-mode值为vertical-rl,此时margin-start等同于margin-top,如果此时margin-startmargin-top同时存在,会遵循权重和后来居上原则进行相互的覆盖。

可以看到,场景不同,margin-start的作用也不能,能上能下,能左能右简直在世百变星君。

关于*-start/*-end以后有机会会具体展开论述,这里就先点到为止,大家估计目前也不会在实际项目中使用。



来自:http://www.zhangxinxu.com/wordpress/2016/04/css-writing-mode/

转载于:https://www.cnblogs.com/xiaofenguo/p/6168865.html

writing-mode属性相关推荐

  1. opencv python 从摄像头获取视频、帧率、分辨率等属性设置和使用

    opencv python 从摄像头获取视频.帧率.分辨率等属性设置和使用 文章目录: 1,为了获取视频,你应该创建一个 VideoCapture 对象.他的参数可以是设备的索引号,或者是一个视频文件 ...

  2. linux查看nginx运行状态,如何查看nginx运行状态及相关属性说明

    如何查看nginx运行状态及相关属性说明. 需要查看nginx是否已经加载了 http_stub_status_module模块 /usr/sbin/nginx  -V 查看nginx的安装状态 ng ...

  3. 【Android FFMPEG 开发】FFMPEG ANativeWindow 原生绘制 ( 设置 ANativeWindow 缓冲区属性 | 获取绘制缓冲区 | 填充数据到缓冲区 | 启动绘制 )

    文章目录 I . FFMPEG ANativeWindow 原生绘制 前置操作 II . FFMPEG 原生绘制流程 III . 设置 ANativeWindow 绘制窗口属性 ANativeWind ...

  4. 翻译《Writing Idiomatic Python》(五):类、上下文管理器、生成器

    原书参考:http://www.jeffknupp.com/blog/2012/10/04/writing-idiomatic-python/ 上一篇:翻译<Writing Idiomatic ...

  5. java 属性不序列化_怎样对带有不可序列化属性的Java对象进行序列化

    原标题:怎样对带有不可序列化属性的Java对象进行序列化 出于很多原因我们想使用自定义的序列化方法取代Java默认的机制.一个最常见的原因是提高性能,而另一个原因是有时候我们无法使用默认的序列化方法. ...

  6. spring boot application.properties 属性详解

    2019年3月21日17:09:59 英文原版: https://docs.spring.io/spring-boot/docs/current/reference/html/common-appli ...

  7. Python中菱形继承的MRO顺序及property属性

    Python中菱形继承的MRO顺序及property属性 文章目录 Python中菱形继承的MRO顺序及property属性 一.Python中菱形继承的MRO顺序 1. 单独调用父类的方法 2. 多 ...

  8. 使用不可序列化的属性序列化Java对象

    人们可能有多种原因想要使用自定义序列化而不是依赖Java的默认序列化. 最常见的原因之一是为了提高性能,但是编写自定义序列化的另一个原因是不支持默认序列化机制. 具体来说,如本博文所述,自定义序列化可 ...

  9. VS2005 ASP.NET2.0安装项目的制作(包括数据库创建、站点创建、IIS属性修改、Web.Config文件修改)

    站点: 如果新建默认的Web安装项目,那它将创建的默认网站下的一个虚拟应用程序目录而不是一个新的站点.故我们只有创建新的安装项目,而不是Web安装项目.然后通过安装类进行自定义操作,创建新站如下图: ...

  10. 基于python渗透测试_Python中基于属性的测试简介

    基于python渗透测试 by Shashi Kumar Raja 由Shashi Kumar Raja Python中基于属性的测试简介 (Intro to property-based testi ...

最新文章

  1. EF Code First执行SQL语句及存储过程
  2. NASA指定首批9名宇航员,参与波音和马斯克商业载人航天
  3. ABP官方文档翻译 0.0 ABP官方文档翻译目录
  4. ecshop调用指定ID分类下的文章列表(指定分类下的文章)
  5. 女神一秒变路人!腾讯研究AI卸妆效果算法出品“一键卸妆”功能
  6. CI框架--加载静态内容
  7. 计算机科学与技术专业实训手册,计算机科学与技术专业实习计划
  8. op手机突然显示无服务器,op手机 云服务器
  9. armv8 linux 禁止缓存,禁用CPU高速緩存上ARMv8-A的Linux
  10. Python 从入门到进阶
  11. Odoo 去掉 恼人的 上午和下午
  12. 模拟小型电子商务网站绘制ER图
  13. 苹果cms(maccms) player播放器解密
  14. 使用 Love2D 开发游戏
  15. 几十个精选壁纸网站,配色网站,字体网站
  16. 读《因果的真相》第四章摘抄笔记
  17. AXI中的wrap burst
  18. HTML期末作业-我的家乡网页作业
  19. 人工神经网络的数学内涵,神经网络的数学表达式
  20. win10系统自带清除磁盘垃圾工具———磁盘清理工具

热门文章

  1. python不能安装pip_python – 无法安装pip:权限被拒绝错误
  2. 功能测试包含哪些测试_一小时复习,期末考试必过 重邮软件测试题总结
  3. 【不屈】生如蝼蚁,当立鸿鹄之志
  4. 自建服务器 下bt,使用Docker安装OpenTracker,自建BT Tracker服务器
  5. python学习-defaultdict
  6. latex 小于_一份菜鸡的Latex课堂作业works--(ii)
  7. 深圳学校积分计算机,深圳小学入学积分多少才够
  8. c++ printf怎么用_【经典】把脉printf中的C进阶技巧
  9. 简述一下动态sql的执行原理_简述一下Pogo Pin电连接器的设计原理和考虑因素
  10. TIOBE 6月编程语言榜单:C语言继续占据第一