这是cherry在uecss.com里总结的文字纵排列方法,开头一段话很特别,摘来给大家看下:
一次与携程网Lucky老师交流,才发现工作了三年的自己,其实功底一点都不扎实,所以从现在开始,认真恩考,认真总结,不但要知其然,更要知其所以然。再次感谢点醒执迷不悟的我的Lucky老师!
关于文字纵向排列你能写出几种方法?
考题背面扩展问题:纵向排列后,可否做到垂直居中呢?
之所以如此猜测,因为我也有次去携程面试的经历,全场笔试一张纸三个问题,纸张背面是扩展问法,在前面的基础上思考更进一步;
我遇到的问题,发博文一篇:携程旅游网前端开发面试题,现已整合进前端解决方案,详见:自适应两列布局。
<div class="box">
文<br>
字<br>
纵<br>
排<br>
</div>
这种方法最易想到,也最常用
<div class="box block">
<span>文</span>
<span>字</span>
<span>纵</span>
<span>排</span>
</div>
这种方法的弊端是,需要手工录入标签
<div id="J_vertext" class="box">文字纵排</div>
此种方法与前者原理一样,好处是用js代替手工添加span标签。
var J_vertext=document.getElementById('J_vertext');
J_vertext.innerHTML='<span>'+J_vertext.innerHTML.split('').join('</span><span>')+'</span>';
.vertext{
width:20px;
font-size:20px;
word-wrap:break-word;
}
word-wrap:break-word的一部分是CSS3规格,并不是在所有的浏览器兼容。
如果把除第一个字母外的其它字母小写的话,就有点悲剧了,套用别人的一句话就是"it's too risky to play with pixel values.";
.vertext2{
width:40px;
font-size:40px;
word-wrap:break-word;
letter-spacing:20px;/* Set large letter-spacing as precaution */
}
这种方法貌似很好,不过有用到一点css3了
.vertext3{
width: 1em;
font-size: 40px;
letter-spacing: 40px; /* arbitrary large letter-spacing for safety */
background:#CCC;
}
不很好,遇到标点标准浏览器需要和文字中间要加空格才能正常显示(默认标点不会显示在一行的开头),而IE直接无视标点符号了。
.pre{
white-space:pre; /* 或 pre-wrap */
}
不爽的是,我们需要在编辑里所文字纵向排列,编辑控制很不方便
关
关
雎
鸠
,
在
河
之
洲
窈窕淑女,君子好逑
参差荇菜,左右流之
窈窕淑女,寤寐求之
求之不得 ,寤寐思服
悠哉悠哉,辗转反侧
参差荇菜,左右采之
窈窕淑女,琴瑟友之
参差荇菜,左右芼之
窈窕淑女,钟鼓乐之
最后小结:综上推荐使用<br>换行方法或限制容器宽度方法,简单便捷。
纵向排列解决了,可否做到垂直居中呢?拭目以待!