实现元素纵向排列主要靠 css 的 writing-mode 属性和 float 属性。
设置 writing-mode 值为 vertical-lr , 可以使所有子元素纵向排列。
此时发现里面的子元素仍旧是横向排列,但文字变纵向了
再加上 float: left 让元素左排。
此时,元素已经变成纵向排列了,但由于未限制高度,元素将无限向下排列。同时子元素的文字排列方式也变成了纵向。
在给列表加一个高度。并重新设置子元素 writing-mode 属性便可解决
此时效果已经完成,但还有一个奇怪的问题
在添加到某个位置元素直接会跳到这列最后一个,不知这个问题为何会产生,但是在给子元素添加一个宽度后,bug 便神奇的好了。。
总结: writing-mode 是一个很长久的 css 属性了,新的值 vertical-lr 在大部分现代浏览器都已支持,在古老的 ie9 以下,也可用 lr 代替,所以这种实现方式是可兼容的。只是注意某些浏览器需要 --webkit- 或 --ms- 前缀。
writing-mode 属性 --MDN
一、原始使用writing-mode属性-
语法:writing-mode:lr-tb或writing-mode:tb-rl
参数:
1、lr-tb:从左向右,从上往下
2、tb-rl:从上往下,从右向左
运行代码发现,IE显示正常,火狐、谷歌浏览器却不支持,所以不建议使用writing-mode属性。
二、使用CSS模拟文字竖排
对文字对象宽度设置只能排下一个文字的宽度距离,让文字一行排不下两个文字使其文字自动换行,就形成了竖立排版需求。
<!DOCTYPE html><html>
<head>
<meta http-equiv="Content-Type" content="text/html charset=gb2312" />
<style>
body{text-align:center}
.shuli{ margin:0 autowidth:20pxline-height:24pxborder:1px solid #333}
</style>
</head>
<body>
<div class="shuli">我是竖列排版</div>
</body>
</html>
说明:对文字DIV设置较小的宽度,以达到一排只能排下一个文字,这样文字就自动换行,实现垂直竖列排版。
三、使用br换行让其文字垂直竖排显示
利用html br换行标签实现文字换行,对每个文字后加上换行br标签让其竖列排版。
<!DOCTYPE html><html>
<head>
<meta http-equiv="Content-Type" content="text/html charset=gb2312" />
<style>
body{text-align:center line-height:22px}
/* CSS注释说明:设置css文字居中,css行高为22px间隔 */
</style>
</head>
<body>
我<br>是<br>竖<br>列<br>排<br>版
</body>
</html>
1、选中要对齐的DIV。
2、点击右侧CSS选项卡下的添加属性,如下图
3、在新添加属性名称下选择:line-height,
4、中间的数值框内填上数字,这个数值必须要和这个DIV的height属性值一样,才能使文字纵向居中,
5、第三个框中选择px。确认
6、或者直接在代码视图下的div中的style样式中添加line-height:100px,使这个DIV的行距line-height值与高度height值相等就可以实现垂直居中。