需求

由上而下、由左至右排列元素,元素数量不定。

平时用多了 flex 布局,在这时候却使不上力了(整个右侧面板是 absolute 定位的,无法用 flex 撑开)

方法

最后发现了长期以来忽略的一个 CSS 属性 writing-mode 可以完美解决。MDN

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<style>
html,
body,
ul,
li {
padding: 0;
margin: 0;
}
body {
margin: 20px;
}
.list {
display: inline-block;
height: 200px;
font-size: 0;
border: 1px solid #f5222d;
writing-mode: vertical-lr;
}
.item {
display: inline-block;
width: 150px;
height: 40px;
margin: 5px 5px;
font-size: 14px;
line-height: 40px;
color: #fff;
text-align: center;
list-style: none;
background: #00a0e9;
border-radius: 4px;
writing-mode: horizontal-tb;
}

</style>
</head>
<body>
<ul class="list">
<li class="item">1</li>
<li class="item">2</li>
<li class="item">3</li>
<li class="item">4</li>
<li class="item">5</li>
<li class="item">6</li>
<li class="item">7</li>
<li class="item">8</li>
<li class="item">9</li>
<li class="item">10</li>
</ul>
</body>
</html>