jquery - 仅当内容溢出父div时,如何才能使内容水平滑动?

标签 jquery css

客户希望每次用户加载页面时在首页上显示随机引述。有些引号太长,在设计方面我们不希望引号超过一行。我想要做的是,如果引号对于父 div 而言太长,则让引号水平移动,然后循环返回,就像新闻自动收报机一样。

我得到了一个检查内容是否溢出的脚本,但该脚本似乎无法正常工作,see here

以及相关代码:

HTML:

<div class="frases_wrapper" style="width: 960px; height: 20px; background-color: black;">
  <div class="frases" style="white-space: nowrap; position: relative; overflow: hidden; color: white; width: 958px;"></div>
</div>

JS:

$(document).ready(function () {

  var pageWidth = $("div.frases_wrapper").width();
  var elementWidth = $("div.frases").width();
  var elementLeft = $("div.frases").position().left;

  if (pageWidth - (elementWidth + elementLeft) < 0) {
    alert("overflow!");
  } else {
    alert("doesn't overflow");
  }

});

最佳答案

我不确定您是如何处理水平滚动的,所以我的回答可能无法完全解决您的问题。但是,这是我注意到的:

看起来 div.frases 的硬编码宽度为 958px

这可以防止 div 扩展到超出其包装器的宽度,这是水平滚动所必需的。

为了确定由其内容定义的该元素的宽度,您可能希望“shrink wrap”该元素向左浮动:float:left。 (如果 float 对您的应用程序不起作用,还有其他“收缩包装”方法。)

此外,将 overflow:hiddendiv.frases 移动到 div.frases_wrapper 以将可见内容限制在包装器。

因此,您的 CSS 定义将如下所示:

div.frases_wrapper {
  width: 960px;
  height: 20px;
  background-color: black;
  overflow: hidden; /* ADDED */
}

div.frases {
  white-space: nowrap;
  position: relative;
  color: white;
  float:left;
  /*width: 958px; REMOVED */
  /*overflow: hidden; REMOVED */
}

编辑:

这是一个working example基于您提供的代码。

尝试调整文本内容的长度,使其不会/不会溢出。

关于jquery - 仅当内容溢出父div时,如何才能使内容水平滑动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17556744/

相关文章:

javascript - 如何在不移动原始位置的情况下在另一个元素之前插入一个html元素

html - 导航栏未正确位于菜单中

javascript - 使用 javascript 过滤输入类型数字

javascript - 我在对话框表单上的输入值未更新

jquery - 在 Python 中抛出异常并在 jQuery 中读取消息

javascript - 无法使准备和调整大小功能一起工作

css3-mediaqueries.js 导致 IE 挂起

javascript - 是否可以从javascript中的条件(三元)运算符获取两个值?

javascript - jQuery 如果 data-id 元素 hasClass 不起作用

html - 如何在同一行居中图像链接?