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
