CSS div 元素 - 如何只显示水平滚动条?

Posted

技术标签:

【中文标题】CSS div 元素 - 如何只显示水平滚动条?【英文标题】:CSS div element - how to show horizontal scroll bars only? 【发布时间】:2010-09-20 11:28:25 【问题描述】:

我有一个 div 容器,它的样式定义如下:

div#tbl-container 

    width: 600px;   
    overflow: auto;    
    scrollbar-base-color:#ffeaff

一旦我填充了这个 div 包含的表格,这就会自动给我水平和垂直滚动条。 我只想自动出现水平滚动条。我将以编程方式修改表格的高度。

我该怎么做?

【问题讨论】:

【参考方案1】:

你不应该同时使用水平和垂直滚动条,除非你的内容足够大以需要它们。

但是,由于错误,您通常在 IE 中执行此操作。检查其他浏览器(Firefox 等),看看实际上是否只有 IE 这样做。

IE6-7(在其他浏览器中)支持建议的 CSS3 扩展来独立设置滚动条,您可以使用它来抑制垂直滚动条:

overflow: auto;
overflow-y: hidden;

您可能还需要为 IE8 添加:

-ms-overflow-y: hidden;

因为微软威胁要在 IE8 标准模式下将所有 pre-CR-standard 属性移动到他们自己的“-ms”框中。 (如果他们一直这样做的话,这是有道理的,但现在对每个人来说都是一种不便。)

另一方面,IE8 完全有可能修复了这个错误。

【讨论】:

天哪,你拯救了我的一天!虽然我还没有尝试过 ie-8 规范。现在可以了 FF 和 IE-7。这就是我所需要的。再次感谢! 其实用overflow-x而不是overflow会更好。【参考方案2】:

我还必须将white-space: nowrap; 添加到样式中,否则元素会折叠到我们要删除滚动到的区域中。

【讨论】:

white-space: nowrap; 是关键,没有它你的元素会堆叠/包装。 white-space: nowrap 似乎不适用于 firefox safari 或 chrome,即使我在 div 显示中的图像:内联或作为块【参考方案3】:

此解决方案没有父 div 的高度/宽度规范,因此它将响应调整窗口大小,并且最有用的原因是水平滚动条会在需要时出现。 p>

.container
    padding:20px;
    border:dotted 1px;
    white-space:nowrap;
    overflow-x:auto;


.box
    width:100px;
    height:180px;
    background-color: red;
    margin:10px;
    display:inline-block

看看DEMO

【讨论】:

【参考方案4】:

同时显示:

<div style="height:250px; width:550px; overflow-x:scroll ; overflow-y: scroll; padding-bottom:10px;">      </div>

隐藏 X 轴:

<div style="height:250px; width:550px; overflow-x:hidden; overflow-y: scroll; padding-bottom:10px;">      </div>

隐藏 Y 轴:

<div style="height:250px; width:550px; overflow-x:scroll ; overflow-y: hidden; padding-bottom:10px;">      </div>

【讨论】:

【参考方案5】:

您也可以将其设为overflow: auto 并以这种方式提供最大固定高度和宽度,当文本或其中的任何内容溢出时,它将仅显示所需的滚动条

【讨论】:

【参考方案6】:

我使用 CSS 属性: 1)“overflow-x: auto”; 2)“overflow-y: hidden”; 3)“white-space: nowrap”;

不要忘记为容器和内部 DIVS 组件设置宽度。 属性 "white-space : nowrap" 允许内部 DIVS 不放在不同的行上。

考虑以下 html

<div class="container"> 
  <div class="inner-1"></div>
  <div class="inner-2"></div>
  <div class="inner-3"></div>
</div>

我使用下面的 CSS 来实现水平滚动:

.container 
  height: 80px;
  width: 600px;
  overflow-x: auto;
  overflow-y: hidden; 
  white-space: nowrap;

.inner-1,.inner-2,.inner-3 
  height: 60px;
  max-width: 250px;
 display: inline-block; /* this should fix it */

小提琴:https://jsfiddle.net/qrjh93x8/(不适用于上述代码)

【讨论】:

我添加了空白,但我的不起作用:jsfiddle.net/jjq4xgz5/1。谢谢。【参考方案7】:

使用下面的

<div style="max-width:980px; overflow-x: scroll; white-space: nowrap;">
<table border="1" style="cellpadding:0; cellspacing:0; border:0; width=:100%;" >

【讨论】:

【参考方案8】:
.box-author-txt width:596px; float:left; padding:5px 0px 10px 10px;  border:1px #dddddd solid; -moz-border-radius: 0 0 5px 5px; -webkit-border-radius: 0 0 5px 5px; -o-border-radius: 0 0 5px 5px; border-radius: 0 0 5px 5px; overflow-x: scroll; white-space: nowrap; overflow-y: hidden;


.box-author-txt ul vertical-align:top; height:auto; display: inline-block; white-space: nowrap; margin:0 9px 0 0; padding:0px;
.box-author-txt ul li list-style-type:none;  width:140px; 

【讨论】:

请解释你的答案。【参考方案9】:

CSS3 具有overflow-x 属性,但我不希望对此有很大的支持。在 CSS2 中,你所能做的就是设置一个通用的 scroll 策略,并使用你的 widthsheights 以免把它们搞砸。

【讨论】:

【参考方案10】:

我们应该设置为overflow: auto 并隐藏一个我们不用于在不支持的 CSS3 浏览器上工作的滚动条。 看看这个CSS Overflow; XME.im

【讨论】:

以上是关于CSS div 元素 - 如何只显示水平滚动条?的主要内容,如果未能解决你的问题,请参考以下文章

如何让div滚动时页面不跟着滚动?

如何判断滚动条滚到页面底部并执行事件

如何用js控件div的滚动条,让它在内容更新时自动滚到底部?

如何在div中显示滚动条

CSS怎么隐藏滚动条

CSS3对于盒中容纳不下的内容的显示——overflow属性