代码之家  ›  专栏  ›  技术社区  ›  David Berger

HTML中的垂直换行

  •  7
  • David Berger  · 技术社区  · 16 年前

    我正在寻找一种做垂直缠绕的好方法。我的目标是将复选框列表放入一个div中。我将复选框按字母顺序排序,我希望列表从div的顶部流向底部,然后在到达底部时在新列中重新开始。现在,我可以通过在服务器端将列表分解成预定义大小的块,然后再将其输入html模板来实现这一点。但是当列表太长以至于你不得不滚动时,事情就会变得一团糟。我希望强制它只水平滚动。这并不是那么容易,因为我把每一块都放在一个浮动的div中,所以空格:nowrap似乎并没有切掉它。目前,我正在使用javascript计算列表块的数量并扩展中间容器的宽度(在用作视口的div内,但包含包含数据的div)。我想要的东西大致如下:

     __________________________
    | []..... []..... [].....  |
    | []..... []..... [].....  |
    | []..... [].....          |
    | []..... [].....          |
    |__________________________|
    |<|_____________|___||___|>|
    

    1. 有没有一个好方法可以垂直包装列表?
    5 回复  |  直到 16 年前
        1
  •  4
  •   Ms2ger    16 年前

    CSS3 columns . 然而,到目前为止,只有WebKit(Safari,Chrome,…)和Gecko(Firefox,…)实现了它,您必须添加它们各自的供应商前缀( -moz-column-width:...; -webkit-column-width:...;

    如果IE

        2
  •  0
  •   fmsf    16 年前

    我说这句话会被否决的,但是。。。使用 桌子 !

    这不是最漂亮的方法,但我想它可以解决你的问题

        3
  •  0
  •   AnthonyWJones    16 年前

    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" encoding="UTF-8" />
    <xsl:variable name="rowCount" select="6" />
    <xsl:template match="/*">
        <table rules="all">
            <xsl:for-each select="item[position() &lt;= $rowCount]">
                <tr>
                    <xsl:for-each select=". | following-sibling::item[position() mod $rowCount = 0]">
                        <td><xsl:value-of select="." /></td>
                    </xsl:for-each>
                </tr>               
            </xsl:for-each>
        </table>
    </xsl:template>
    
    </xsl:stylesheet>
    

    可以使用参数替换rowCount变量。然后,您只需计算视图端口的垂直客户端高度将占用多少行(请记住,当水平滚动条出现时,您会松开一些行,我会使其始终可见)。

    这可以适应一组浮动div,但我不想麻烦。您的视口只需要是一个具有固定高度/宽度和溢出的div-x:scroll;溢出-y:隐藏。

        4
  •  0
  •   GiDo    16 年前

    要管理视口的滚动,可以设置CSS溢出属性:

    div#viewport{
      overflow: scroll;
      overflow-x: scroll; /* not sure if it's standard */
      height: 150px;
    }
    
        5
  •  0
  •   David Berger    16 年前