18

我想在水平滚动的 div 中显示一些记录。我正在使用 Twitter Bootstrap 并设置了一个 div 行,每个数据记录表示为一列。

如果我需要为此部分转储 Bootstrap 网格,那很好,我并没有真正按照我怀疑的设计方式使用它......如果我不为此部分使用 Twitter Bootstrap,那么我的问题几乎与防止浮动 div 换行。这个问题的公认答案的问题是它假设您可以计算容器的总宽度。在我的情况下,项目 div 的数量是动态的。

我正在寻找一个纯 CSS/HTML 解决方案。如果需要 Javascript,我使用没有 jQuery 的 AngularJS。

我的例子:http: //jsfiddle.net/V5zWT/2/

CSS

.DocumentList
{
    overflow-x:scroll;
    overflow-y:hidden;
    height:200px;
    width:100%;
    padding: 0 15px;
}

.DocumentItem
{
    border:1px solid black;
    padding:0;
    height:200px;
}

HTML

<div class="DocumentList"> 
    <div class="row">
        <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 DocumentItem">
            Record 12345
            <br/>
            More data
            <br />
        </div>
        <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 DocumentItem">
            Record 12345
            <br/>
            More data
            <br />
        </div>
        <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 DocumentItem">
            Record 12345
            <br/>
            More data
            <br />
        </div>
        <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 DocumentItem">
            Record 12345
            <br/>
            More data
            <br />
        </div>
        <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 DocumentItem">
            Record 12345
            <br/>
            More data
            <br />
        </div>
        <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 DocumentItem">
            Record 12345
            <br/>
            More data
            <br />
        </div>
        <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 DocumentItem">
            Record 12345
            <br/>
            More data
            <br />
        </div>
    </div>
</div>

从小提琴中可以看出,只显示前 4 条记录。由于 CSS 浮动(我假设),滚动条没有激活,其他记录也没有显示。如果我不隐藏溢出-y,那么我可以向下滚动并查看隐藏的记录,但这不是我想要的。

4

3 回答 3

26

我设法使用几乎库存的 Twitter Bootstrap 让它工作:

小提琴:http: //jsfiddle.net/V5zWT/12/

我在 list-inline 类中使用了无序列表。默认情况下,当它到达容器的边缘时它仍然会包裹,所以我调整了 list-inline 类。

.list-inline {
  white-space:nowrap;
}

<div class="DocumentList">
    <ul class="list-inline">
        <li class="DocumentItem">
            <span>Test Data1</span>
        </li>
        <li class="DocumentItem">
            <span>Test Data1</span>
        </li>
        <li class="DocumentItem">
            <span>Test Data1</span>
        </li>
        <li class="DocumentItem">
            <span>Test Data1</span>
        </li>
        <li class="DocumentItem">
            <span>Test Data1</span>
        </li>
        <li class="DocumentItem">
            <span>Test Data1</span>
        </li>
        <li class="DocumentItem">
            <span>Test Data1</span>
        </li>
        <li class="DocumentItem">
            <span>Test Data1</span>
        </li>
        <li class="DocumentItem">
            <span>Test Data1</span>
        </li>
    </ul>
</div>
于 2013-11-07T14:44:29.210 回答
15

要允许水平滚动,请检查此github 链接

下载并包含bootstrap-horizon.cssbootstrap.css. 作为

<link rel="stylesheet" href="css/bootstrap.min.css"/>
<link rel="stylesheet" href="css/bootstrap-horizon.css">

示例代码

div class="row row-horizon">
  <div class="col-md-6">
    <h1>Test</h1>
  </div>
  <div class="col-md-6">
    <h1>Test</h1>
  </div>
  <div class="col-md-6">
    <h1>Test</h1>
  </div>
  <div class="col-md-6">
    <h1>Test</h1>
  </div>
</div>`

这个对我有用。

于 2015-05-04T11:56:03.733 回答
2

也许这会帮助你:

小提琴

如果.DocumentItem宽度是固定的,您可以计算滚动元素的宽度并动态设置它。

<script type="text/javascript">
    var totalWidth = $('.DocumentItem').length * $('.DocumentItem').width();
    $('.row').css('width', totalWidth + 'px');
</script>
于 2013-11-05T22:31:53.250 回答