使用CSS flexbox創建一個乾淨的CSS比較表

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])。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章