1. 程式人生 > >CSS3實現文本垂直排列

CSS3實現文本垂直排列

標準 play 方向 mozilla jpg int nbsp lin b-

最近的一個項目中要使文字垂直排列,也就是運用了CSS的writing-mode屬性。

writing-mode最初時ie中支持的一個屬性,後來在CSS3中增添了這一新的屬性,所以在ie中和其他瀏覽器中的語法會有區別。

1.0 CSS3標準

writing-mode:horizontal-tb;//默認:水平方向,從上到下 
writing-mode:vertical-rl;  //垂直方向,從右向左
writing-mode:vertical-lr;  //垂直方向,從左向右

demo

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
4 <meta charset="utf-8"> 5 <title>CSS文字垂直排列</title> 6 <style type="text/css"> 7 div{ 8 border: 1px solid lightblue; 9 padding: 5px; 10 } 11 .vertical-text{ 12 -webkit-writing-mode
: vertical-rl; 13 writing-mode: vertical-rl; 14 } 15 </style> 16 </head> 17 <body> 18 <div class="vertical-text"> 19 1. 文字垂直排列 <br /> 20 2. 文字垂直排列 21 </div> 22 </body> 23 </html
>

技術分享圖片

2.0 IE中

由於歷史的原因,IE下該屬性值則顯得尤為復雜:

-ms-writing-mode: lr-tb | rl-tb | tb-rl | bt-rl | tb-lr | bt-lr | lr-bt | rl-bt | lr | rl | tb

具體可以查看官方文檔:

https://developer.mozilla.org/en-US/docs/Web/CSS/writing-mode/

3.0 一些應用

3.1 垂直居中  

通過對這個屬性的使用,我們可以結合 text-align:center 實現垂直居中或者使用margin: auto。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>CSS3 圖片垂直居中</title>
 6         <style type="text/css">
 7             div{
 8                 border: 1px solid lightblue;
 9                 padding: 5px;
10                 height: 500px;
11             }
12             .vertical-img{
13                 -webkit-writing-mode: vertical-rl;
14                 -ms-writing-mode: bt-rl;
15                 writing-mode: vertical-rl;
16                 text-align: center;
17             }
18         </style>
19     </head>
20     <body>
21         <div class="vertical-img">
22              <img src="1.jpg"/>
23         </div>
24     </body>
25 </html>

技術分享圖片

3.2 文字下沈效果

我們可以設置文字的writing-mode,然後在結合text-indent來實現文字點擊時的下沈效果;

 1 <!DOCTYPE html>
2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>文字下沈效果</title> 6 <style type="text/css"> 7 .btn{ 8 width: 50px; 9 height: 50px; 10 line-height: 50px; 11 color: white; 12 text-align: center; 13 font-size: 16px;; 14 display: inline-block; 15 border-radius: 50%; 16 background: gray; 17 cursor: pointer; 18 } 19 .btn:active{ 20 text-indent: 2px; 21 } 22 .vertical-text{ 23 writing-mode: tb-rl; 24 -webkit-writing-mode: vertical-rl; 25 writing-mode: vertical-rl; 26 *writing-mode: tb-rl; 27 } 28 </style> 29 </head> 30 <body> 31 <span>點擊領紅包</span> 32 <p class="vertical-text btn"></p> 33 </body> 34 </html>               

CSS3實現文本垂直排列