金魚都能懂的網頁設計入門-排版的聖品 flex

之前在用float 排版會遇到一些困難的點,會卡關。
後來flex技術出來後解決很多排版問題。
flex: IE8 9 10 11 edge 不支援 .

橫排: 還沒設定 flex 之前

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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>金魚都能懂的網頁設計入門-第十二天 -排版的聖品 flex</title>
<link rel="stylesheet" href="./reset.css">
<style>
.wrap{
width:960px;
margin:auto;
background: #ccc;
/* display:flex; */
}
.item{
width: 300px;
/* 不要換行 flex-wrap , 則 width 會無效 */
margin: 10px;
background-color: #ffa;
}
</style>

</head>
<body>
<div class="wrap">
<div class="item">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Natus tempora maxime eligendi quidem animi, assumenda, mollitia provident necessitatibus vero a asperiores. Ipsum, iusto officiis. Illum pariatur id beatae officia exercitationem?</div>
<div class="item">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Natus tempora maxime eligendi quidem animi, assumenda, mollitia provident necessitatibus vero a asperiores. Ipsum, iusto officiis. Illum pariatur id beatae officia exercitationem?</div>
<div class="item">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Natus tempora maxime eligendi quidem animi, assumenda, mollitia provident necessitatibus vero a asperiores. Ipsum, iusto officiis. Illum pariatur id beatae officia exercitationem?</div>

</div>
</body>
</html>

設定 display: flex 之後 , 底下每個項目都變成flex-item的特性,本身有點像block的特性,但它會橫排。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<style>
.wrap{
width:960px;
margin:auto;
background: #ccc;
display:flex;
}
.item{
width: 300px;
/* 不要換行 flex-wrap , 則 width 會無效 */
margin: 10px;
background-color: #ffa;
}
</style>

如果再多增加幾個item , 它不會折行,而且會自動調整寬度,也不會有空白資源的問題(比如inline-block)

如果要折行 ,則在父層設定, flex-wrap: wrap

基本上每一横向版面會預設等高

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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>金魚都能懂的網頁設計入門-第十二天 -排版的聖品 flex</title>
<link rel="stylesheet" href="./reset.css">
<style>
.wrap{
width:960px;
margin:auto;
background: #ccc;
display:flex;
/* 不要換行 flex-wrap : wrap, 則 width 會無效 */
flex-wrap: wrap;
}
.item{
width: 300px;

margin: 10px;
background-color: #ffa;
}
</style>

</head>
<body>
<div class="wrap">
<div class="item">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Natus tempora maxime eligendi quidem animi, assumenda, mollitia provident necessitatibus vero a asperiores. Ipsum, iusto officiis. Illum pariatur id beatae officia exercitationem?
necessitatibus vero a asperiores. Ipsum, iusto officiis. Illum pariatur id beatae officia exercitationem?

</div>
<div class="item">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Natus tempora maxime eligendi quidem animi, assumenda, mollitia provident necessitatibus vero a asperiores. Ipsum, iusto officiis. Illum pariatur id beatae officia exercitationem?</div>
<div class="item">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Natus tempora maxime eligendi quidem animi, assumenda, mollitia provident necessitatibus vero a asperiores. Ipsum, iusto officiis. Illum pariatur id beatae officia exercitationem?</div>
<div class="item">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Natus tempora maxime eligendi quidem animi, assumenda, mollitia provident necessitatibus vero a asperiores. Ipsum, iusto officiis. Illum pariatur id beatae officia exercitationem?</div>
<div class="item">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Natus tempora maxime eligendi quidem animi, assumenda, mollitia provident necessitatibus vero a asperiores. Ipsum, iusto officiis. Illum pariatur id beatae officia exercitationem?</div>
<div class="item">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Natus tempora maxime eligendi quidem animi, assumenda, mollitia provident necessitatibus vero a asperiores. Ipsum, iusto officiis. Illum pariatur id beatae officia exercitationem?</div>
</div>
</body>
</html>

如果不要折行,拿掉父層的 flex-wrap: wrap

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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>金魚都能懂的網頁設計入門-第十二天 -排版的聖品 flex</title>
<link rel="stylesheet" href="./reset.css">
<style>
.wrap{
width:960px;
margin:auto;
background: #ccc;
display:flex;

/* flex-wrap: wrap; */
}
.item{
/* 不要換行 ,則 width 如果設定超過300會無效,它會保持均寬 */
width: 10000px;
margin: 10px;
background-color: #ffa;
}
</style>

</head>
<body>
<div class="wrap">
<div class="item">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Natus tempora maxime eligendi quidem animi, assumenda, mollitia provident necessitatibus vero a asperiores. Ipsum, iusto officiis. Illum pariatur id beatae officia exercitationem?

</div>
<div class="item">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Natus tempora maxime eligendi quidem animi, assumenda, mollitia provident necessitatibus vero a </div>
<div class="item">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Natus tempora maxime eligendi quidem animi, assumenda, mollitia provident necessitatibus vero a asperiores. Ipsum, iusto officiis. Illum pariatur id beatae officia exercitationem?</div>

</div>
</body>
</html>

做個 一欄 二欄 三欄的版面 ,先設定好各個 item , 在父層設定 display: flex, 就ok了:

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>金魚都能懂的網頁設計入門-第十二天 -排版的聖品 Flex-02</title>
<link rel="stylesheet" href="./reset.css">
<style>
.wrap{
width:960px;
margin: auto;
display: flex;
}
.item{
width: 100%; /* 不要換行 */
margin: 0 10px 10px;
}
.item img{
width: 100%;
vertical-align:top;
}
</style>
</head>
<body>
<div class="wrap">
<div class="item">
<img src="https://picsum.photos/300/200/?random=1">
</div>
</div>
<div class="wrap">
<div class="item">
<img src="https://picsum.photos/300/200/?random=1">
</div>
<div class="item">
<img src="https://picsum.photos/300/200/?random=2">
</div>
</div>

<div class="wrap">
<div class="item">
<img src="https://picsum.photos/300/200/?random=3">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Deleniti eius sapiente dolor voluptas perspiciatis rerum assumenda, ad quia! Iste, modi!</p>
</div>
<div class="item">
<img src="https://picsum.photos/300/200/?random=4">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Deleniti eius sapiente dolor voluptas perspiciatis rerum assumenda, ad quia! Iste, modi!</p>
</div>
<div class="item">
<img src="https://picsum.photos/300/200/?random=5">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Deleniti eius sapiente dolor voluptas perspiciatis rerum assumenda, ad quia! Iste, modi!</p>
</div>
</div>
<div class="wrap">
<div class="item">
<img src="https://picsum.photos/300/200/?random=3">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Deleniti eius sapiente dolor voluptas perspiciatis rerum assumenda, ad quia! Iste, modi!</p>
</div>
<div class="item">
<img src="https://picsum.photos/300/200/?random=4">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Deleniti eius sapiente dolor voluptas perspiciatis rerum assumenda, ad quia! Iste, modi!</p>
</div>
<div class="item">
<img src="https://picsum.photos/300/200/?random=5">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Deleniti eius sapiente dolor voluptas perspiciatis rerum assumenda, ad quia! Iste, modi!</p>
</div>
<div class="item">
<img src="https://picsum.photos/300/200/?random=7">
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Deleniti eius sapiente dolor voluptas perspiciatis rerum assumenda, ad quia! Iste, modi!</p>
</div>
</div>
<div class="wrap">
<div class="item">
<img src="https://picsum.photos/300/200/?random=1">
</div>
<div class="item">
<img src="https://picsum.photos/300/200/?random=2">
</div>
</div>
</body>
</html>

文獻連結:
金魚都能懂的網頁設計入門-第十二天 -排版的聖品 flex
https://www.youtube.com/watch?v=fqSHx7pRqLk&list=PLqivELodHt3iL9PgGHg0_EF86FwdiqCre&index=12 by CSScoke Amos

完整版30集 - 金魚都能懂網頁設計入門
https://www.youtube.com/playlist?list=PLqivELodHt3iL9PgGHg0_EF86FwdiqCre by CSScoke Amos

可以看 Amos 直播有講 flex:
https://www.youtube.com/watch?v=_nCBQ6AIzDU by CSScoke Amos