1. 程式人生 > >使用CSS flexbox創建一個幹凈的CSS比較表

使用CSS flexbox創建一個幹凈的CSS比較表

image gen 頂級 type 屬性 pan 刪除 圖片 彈性

CSS和HTML比較表是一種強大的方式,可以即時向訪問者傳達您的產品的主要功能,以及它們的不同之處。通常,比較表和定價表是相同的。對我來說,比較表的不同之處在於它應該包含列出所有可用功能的額外列。這樣可以很容易地比較計劃並找出它們的不同之處。

HTML標記

對於標記,我正努力使其盡可能幹凈簡約。我決定使用外部主DIV元素,然後是一系列UL列表來呈現比較表中的每個“行”內容:

技術分享圖片技術分享圖片?

比較表必須由多個彼此堆疊的UL組成。我將使用CSS彈性框使它們的寬度相等,並以相同的速率展開和收縮,因此它們的行為與表中的行類似。

1

2

3

4

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

三十

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;"><div class =“comparativetable”></font></font><font></font>

<font></font><font style=

"vertical-align: inherit;"><font style="vertical-align: inherit;">

<ul class =“row”></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li class =“legend”>辦公椅</ li></font></font><font></font><font style=

"vertical-align: inherit;"><font style="vertical-align: inherit;">

<li> <img src =“Eurotech-chair.jpg”/> <br /> Eurotech </ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li> <img src =“Hbada-chair.jpg”/> <br /> Hbada </ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li> <img src =“Zenith-chair.jpg”/> <br /> Zenith </ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li> <img src =“amazonbasics-chair.jpg”/> <br /> Amazonbasics </ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

</ UL></font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<ul class =“row”></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li class =“legend”>重量</ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<LI>25公斤</ LI></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<LI>13公斤</ LI></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<LI>17公斤</ LI></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<LI>28公斤</ LI></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

</ UL></font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<ul class =“row”></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li class =“legend”>費用</ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<LI> $$ </ LI></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<LI> $ </ LI></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<LI> $$ </ LI></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<LI> $ </ LI></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

</ UL></font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<ul class =“row”></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li class =“legend”>投放</ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<LI>國內</ LI></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<LI>國際</ LI></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<LI>國際</ LI></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<LI>國內</ LI></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

</ UL></font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<ul class =“row”></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li class =“legend”>判決</ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li>最佳背痛主席</ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li>最佳預算椅</ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li>所有冷卻網格</ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li>只有頂級皮革椅子</ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

</ UL></font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<ul class =“row”></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li class =“legend”> </ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li> <a href="" class="calltoaction">立即購買</a> </ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li> <a href="" class="calltoaction">立即購買</a> </ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li> <a href="" class="calltoaction">立即購買</a> </ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

<li> <a href="" class="calltoaction">立即購買</a> </ li></font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

</ UL></font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

</ DIV></font></font>

每個UL中的第一個LI元素是特征/圖例。為了便於隔離和設置它們與其他包裝的不同,我給那些LI元素一個CSS類“傳奇”。

CSS:

現在是有趣的部分 - 將標記轉換為比較表。使用CSS Flexbox,轉換UL元素相對容易,因此它們在布局,彎曲和拉伸方面是水平的,因此它們更像表格單元格。

我刪除了一些不必要的行,這樣你就可以專註於下面的重要部分:

1

2

3

4

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

三十

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">div.comparisontable {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

顯示:flex;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

彎曲方向:柱; </font><font style="vertical-align: inherit;">/ *將兒童ul元素轉換為堆疊行* /</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font><font></font>

<font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable ul.row {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

list-style:none;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

顯示:flex; </font><font style="vertical-align: inherit;">/ *將兒童li元素轉換為flex兒童* /</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

flex:1;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

flex-wrap:wrap;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable ul.row li {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

背景:#c9f4ca;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

flex:1;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

填充:10px;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

border-bottom:1px實心灰色;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

/ *圖例列(每行中的第一個li)* /</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable ul.row li.legend {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

背景:#6640d8;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

白顏色;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

border:none;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

寬度:200px;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

邊框底部:1px純白色;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

/ *第一行* /</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable ul.row:first-of-type li {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

text-align:center;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

/ *最後一行* /</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable ul.row:last-of-type li {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

text-align:center;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

border-bottom:none;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

box-shadow:0 6px 6px rgba(0,0,0,0.23);</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font><font></font>

<font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

/ *圖例列中的第一個和最後一個單元格* /</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable ul.row:first-of-type li.legend.legend,</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable ul.row:last-of-type li.legend {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

背景:透明;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

box-shadow:none;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font><font></font>

“要素列表”或圖例列是每行的第一個LI元素。它的顯式寬度為200px,與其他柔性寬度的LI元素(flex:1)不同。

使比較表響應

現在,比較表沒有響應。也就是說,即使屏幕尺寸變得非常小,每行內的“列”也是並排的。

在CSS彈性框中,我們可以通過將flex-direction屬性從“row”設置為“”,將flex子元素的顯示順序從默認的“並排”行為輕松更改為“堆疊在下一個上面”。柱”。

現在在我的比較表中,UL元素本身是堆疊的,盡管子LI元素像表格中的單元格一樣並排出現。當屏幕變得足夠小時,我會將它們更改為堆疊:

1

2

3

4

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">@media screen和(max-width:650px){</font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable ul.row {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

彎曲方向:柱; </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable img {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

寬度:自動;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

身高:自動;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable ul.row li {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

margin-right:0;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

寬度:自動;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

flex:auto;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

/ *圖例列中的第一個和最後一個單元格* /</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable ul.row:first-of-type li.legend.legend,</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable ul.row:last-of-type li.legend {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

display:none;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font><font></font>

<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

div.comparisontable ul.row li.legend {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

寬度:自動;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

}</font></font>

現在,當我向下調整窗口大小時,比較表會折疊,每個“單元格”都會出現在它自己的行上:

已知問題

最後但並非最不重要的是,比較表存在一個小問題。當你調整它的大小時,在某些時間間隔,一些LI的寬度會變得不同步:

技術分享圖片技術分享圖片?

如果您知道解決方案,請發送電子郵件給我([email protected])。

使用CSS flexbox創建一個幹凈的CSS比較表