【问题标题】:Make a div scroll in one line [closed]在一行中制作一个div滚动[关闭]
【发布时间】:2012-05-11 05:51:13
【问题描述】:

我需要将文本放在单行滚动 div 中,适合两个 div。

http://jsfiddle.net/F6pNm/26/

目标是所有都适合一行

编辑:我想我不够具体,我需要将链接和文本放在同一行。这样,滚动是垂直的。

编辑:这是现在最接近我需要的。仅缺少滚动方面。 http://jsfiddle.net/BKvzV/4/

【问题讨论】:

  • 我不相信你想要的结果可以纯粹用 CSS 来满足。是否可以接受任何脚本?
  • 当你说垂直滚动时,你的意思是如果需要的话,长文本应该继续超过图像的底部?唯一的滚动是整个页面的典型滚动?
  • @Guth :我不希望,但如果可以的话,我想看看代码会是什么样子。 (在出现纯 CSS 之前,我会接受答案)
  • @Guth :滚动区域不会只有 1 行高。这个问题在我的页脚里面,它下面没有空间。

标签: css html scroll alignment


【解决方案1】:

如果我没看错,你不需要打破你的文本,而是继续前进,永远不要离开第 1 行,所以你可以像这样使用 CSS:

Fiddle Example!

您的 CSS 已更新

#flash {
    float:left;
    width: auto;
    font-size: small;
    font-style: italic;
    text-align: center;
    white-space:nowrap;
}

区别在于white-space:nowrap;

谁看不到呢:


已编辑以考虑已编辑的问题!

The new Fiddle!


编辑考虑到页脚内的所有 div 必须并排!

updated Fiddle!

请注意,此解决方案使用 Jquery 实时收集每个 div 的宽度并汇总在一起以设置页脚 div。没有它就做不到!


编辑让所有 3 个 div 在包装宽度内并排

在 Fiddle 示例中,包装器是主体

The new Fiddle!

【讨论】:

  • 文本仍然出现在不同的行上,我需要它与链接在同一行上
  • 刚刚添加了一个打印屏幕来证明它有效!您的问题可能在其他地方!
  • @Zuul,取消最大化您的浏览器,使其更小。这应该会阻止它看起来仍然正确,不是吗?
  • 文本需要与链接在同一行,而不是单独的行。
  • 不,刚刚做到了!它仍然是一条美丽的线!
【解决方案2】:
#flash {
    float:left;
    width: auto;
    font-size: small;
    font-style: italic;
    text-align: center;

    /*These lines do the trick*/
    overflow-x: scroll;
    white-space: nowrap;
    width: 100%;
}​

http://jsfiddle.net/F6pNm/35/

【讨论】:

  • 但是它不会与'left'和'right'浮动div一致吗?
  • 现在你刚刚编辑它说width:auto,然后width:100% 为同一个#flash id....
  • 同样的问题,文本需要和链接出现在同一行,所以滚动是垂直的而不是水平的
【解决方案3】:
#flash {
    float:left;
    width: auto;
    font-size: small;
    font-style: italic;
    text-align: center;
    white-space:nowrap;  /* will put text in 1 line */
    overflow-x:scroll;   /* will add horizontal scroll bar should the length exceed the container */
}

【讨论】:

  • 文本需要与链接出现在同一行,所以滚动是垂直的而不是水平的,我编辑了问题,没有意识到我不够具体。
【解决方案4】:

据我所知,当 3 个 div 都设置为 width:auto; 时,没有办法 * 让 3 个 div 在同一个空间 (100%) 上竞争。即使您使用overflow,或in-line,或到目前为止建议的其他方法,我认为左侧 div 将始终占据它需要的空间,然后是中间,然后是右侧...... 除非 em> 你使用设置宽度

我不知道这是否可能,因为您使用的是width:auto;。这似乎允许 div 尽可能宽地扩展,从而使其太大而不能只放在一行中。

如果您将链接更改为设置大小,例如 width:10%,那么其中 4 个链接会留下 60%,因此您可以将 #flash {width:60%; overflow-x:auto;} 设置为可滚动且一行

【讨论】:

  • 问题是文本和链接是动态加载的,我不知道文本的大小
  • 检查我的更新答案
  • 不,那是行不通的。链接的空间必须保持动态,因为它们的内容在页面之间不断变化
  • 据我所知,如果每个设置为 width:100%,则不能有 3 个自动宽度 div 竞争相同的 100% 空间
【解决方案5】:

使用 JQuery,我让中间 div 根据左右 div 改变大小。

jquery:

$(function () {
   var midWidth = $(document).width() - ($('#left').width() + $('#right').width());
   $('#flash').width(midWidth);
});

Fiddle Example

希望这会有所帮助。

编辑:添加到 div 的 css 中:

height: 36px;
overflow: scroll;

它更接近您可能想要的。
我不确定如何让框只显示一行。

Fiddle Update

【讨论】:

  • 这就像一个启示,我只需要让文本在其他两个 div 之间居中(如果只有在您滚动时才会出现)。并且文本需要是可滚动的(一次只能看到一行)
  • jsfiddle.net/BKvzV/4 这样调整大小就可以了。我现在只需要滚动条
【解决方案6】:

删除浮动:左

#flash { 
    font-size: small;
    font-style: italic;
    text-align: center;
    white-space:nowrap;
    overflow-x:scroll;
}​

试试这个:

http://jsfiddle.net/damsarabi/F6pNm/40/

【讨论】:

  • 不,在文本之后和最后一个链接之前换行。
猜你喜欢
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 2015-12-26
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
相关资源
最近更新 更多