writing-mode是CSS3的新特性之一,使用场景不是很多。这个属性主要是改变文档流的显示方式。具体的介绍参考这篇文章:http://www.zhangxinxu.com/wordpress/2016/04/css-writing-mode/,这里大致提炼下可以使用的部分。使用时需要加上浏览器的前缀。下面的例子介绍不考虑兼容性,都是在weibkit浏览器下测试。

语法

writing-mode可用的值有:horizontal-tb | vertical-rl | vertical-lr  针对IE有另外的属性值,这里不考虑IE,故不做介绍。

horizontal-tb

文档流的方向是水平的,从上到下排列,tb是top-bottom的简写。也就是我们常用的从上到下正常的文本书写。

vertical-lr

文档流的方向是垂直的,从左到右排列,lr是left-right的缩写。

vertical-rl

文档流的方向是垂直的,从右向左排列,rl是right-left的缩写。

使用场景

元素的垂直居中

元素垂直居中有很多种方法可以实现:比如说:

1.对子元素设置定位,left:50%,top:50%,然后使用translate(-50%,-50%)对子元素平移。实现垂直居中。具体实现可参考demo。

.box-1{position:relative;}
.box-1 .item{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);}
<div class="box box-1">
<div class="item">使用translate平移实现垂直居中</div>
</div>

2.使用display:table布局实现元素的垂直居中

.box-2{display:table-cell;text-align:center;vertical-align:middle;}
.box-2 .item{display:inline-block;}
<div class="box box-2">
<div class="item">使用table实现垂直居中</div>
</div>

3.使用writing-mode结合margin:auto 0实现垂直居中

我们知道块状元素的水平居中可用margin:0 auto来实现,即margin-left:auto;margin-right:auto; writing-mode是改变文档流的显示方向的,所以水平居中也可以变为垂直居中。writing-mode结合margin-top:auto,margin-bottom:auto就可以实现。

.box-3{-webkit-writing-mode:vertical-lr;}
.box-3 .item{margin:auto 0;}
<div class="box box-3">
<div class="item">使用writing-mode实现垂直居中</div>
</div>

4. 使用writing-mode结合text-align:center实现垂直居中

原理同第三点,text-align:center水平居中适用于inline的元素,结合writing-mode使用,就可以非常简单的让内联元素在水平方向上实现垂直居中。

.box-4{-webkit-writing-mode:vertical-lr;text-align:center;}
<div class="box box-4">
<img width="100%" src="http://img12.360buyimg.com/da/jfs/t2623/13/1559560386/101307/db2d4319/5742af4cNcc412e8a.jpg">
</div>

文字的排列

改变文字的排版顺序,实现一些特殊的效果。比如(唐诗等等)。

当父元素添加-webkit-writing-mode之后,其所有的子元素都会继承该属性。经过实例验证,子元素也可以重复应用该属性。对应的脚本特性为writingMode

 

参考链接:
http://www.zhangxinxu.com/wordpress/2016/04/css-writing-mode/

http://www.css88.com/book/css/properties/writing-modes/writing-mode.htm

git地址:https://github.com/rainnaZR/Blog/tree/master/cnblogs/demos/css/writing-mode

利用writing-mode实现元素的垂直居中的更多相关文章

  1. CSS实现元素水平垂直居中—喜欢对称美,这病没得治

    [TOC] 在CSS中对元素进行水平居中是非常简单的:如果它是一个行内元素,就对它的父元素应用text-align:center;如果它是一个块级元素,就对它自身应用margin:auto.然而要对一 ...

  2. css中元素水平垂直居中4种方法介绍

    table-cell轻松设置文本图片水平垂直居中 让一个元素垂直居中的思路:把这个元素的容器设置为table-cell,也就是具有表格单元格的特性,再使用vertical-align(这个属性对blo ...

  3. css 实现元素水平垂直居中总结5中方法

    个人总结,如有错误请指出,有好的建议请留言.o(^▽^)o 一.margin:0 auto:text-align:center:line-height方法 <div id="divAu ...

  4. CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳)

    本文主要是对主流居中方法进行了归纳,有些地方甚至就是把别人的代码直接复制过来的,没有什么自己的东西,除了大漠以及张鑫旭的方法外,还有来自司徒正美.怿飞博客的几个方法 以下方法,由于测试环境的原因,IE ...

  5. CSS布局:元素水平垂直居中

    CSS布局:元素水平垂直居中 本文将依次介绍在不同条件下实现水平垂直居中的多种方法 水平垂直居中是在写网页时经常会用到的需求,在上两篇博客中,分别介绍了水平居中和垂直居中的方法.本文的水平垂直居中就是 ...

  6. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  7. IE6+未知尺寸元素水平垂直居中

    首先讨论在IE8以上(也就是支持伪元素after的基础上)的2种情况 当有一段不知道长度大小的文字在你面前,你需要使它垂直居中的时候,你肯定会想到:1.text-align:center;水平居中没错 ...

  8. 深入学习CSS外边距margin(重叠效果,margin传递效果,margin:auto实现块级元素水平垂直居中效果)

    前言 margin是盒模型几个属性中一个非常特殊的属性.简单举几个例子:只有margin不显示当前元素背景,只有margin可以设置为负值,margin和宽高支持auto,以及margin具有非常奇怪 ...

  9. 【Web】CSS实现绝对定位元素水平垂直居中

    网页中常常需用让绝对定位元素水平垂直居中,下面介绍2种方法: 一 元素宽度未知 <!DOCTYPE html> <html lang="en"> <h ...

随机推荐

  1. Helpful Tool

    Remote Connectivity Analyzer(Online) https://testconnectivity.microsoft.com/ https://technet.microso ...

  2. 从Prototype学习JavaScript面向对象编程

    概述 JavaScript是一种基于对象的编程语言.它是灵活的,既有面向过程(也就是面向函数)的编程,也有面向对象的编程.因此我称它是基于对象的编程语言. 对于JavaScript的面向过程的编程特性 ...

  3. list、set、map、array间的相互转换

    list.set.map.array间的相互转换 list转set Set set = new HashSet(new ArrayList()); set转list List list = new A ...

  4. [整]SQL执行顺序

    SQL的执行顺序: 第一步:FROM <left_table> <join_type> JOIN <right_table> ON <on_predicate ...

  5. DGbroker三种保护模式的切换

    1.三种保护模式 – Maximum protection 在Maximum protection下, 可以保证从库和主库数据完全一样,做到zero data loss.事务同时在主从两边提交完成,才 ...

  6. MongoDB3.0.x版本用户授权配置(单机环境)

    MongoDB数据库默认情况下是没有做权限控制的,只要能够连接所开放的端口就能进行访问,而且拥有root级别的权限:对于生产环境而言是极不安全的,所以需要建立用户,进行授权控制. 单机环境下的用户授权 ...

  7. Java api 入门教程 之 JAVA的StringBuffer类

    StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存 ...

  8. java学习之 反射

    以前学习java只是学习了基本语法操作,各种常用方法的使用,随着慢慢学习,很多大神都觉得要想成为大神,就必须把java的反射给理解透,这样我就带着好奇的心去学习到底反射是什么玩意,所以就上网找资料学习 ...

  9. (安装linux操作系统)

    安装linux centos系统. 准备一张centos的镜像可以去官网下载. 准备VMware Workstation官网下载. 作为初学者一般都用虚拟机安装(VMwareWorkstation), ...

  10. Python 变量类型

    Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...