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


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