【问题标题】:Detecting content overflow in CSS检测 CSS 中的内容溢出
【发布时间】:2014-11-25 00:34:25
【问题描述】:

我正在尝试创建一个链接,当内容超过某个阈值时,该链接将显示在 div 上,该阈值将隐藏其余内容,直到用户单击“阅读更多”链接,这将导致其余内容要显示的内容。我已经让它适用于长内容,但是当内容太短以至于不需要截断时,我无法弄清楚如何不显示它。看一下演示,看看我在说什么。我希望“阅读更多”链接不要出现在第二个 div 集群上。

$(function() {
  $("#toggle").click(function() {
    $("#content").toggleClass("truncated");
    $("#linkArea").hide();
  });

  $("#toggle2").click(function() {
    $("#content2").toggleClass("truncated");
    $("#linkArea2").hide();
  });
});
.truncated {
  max-height: 63px;
  overflow: hidden;
}
.content {
  font-family: "Open Sans", sans-serif;
  -webkit-font-smoothing: antialiased;
  font-size: 125%;
  color: #3F4549;
  margin: 10px 0 10px 0;
  padding: 0;
  line-height: 21px;
  font-weight: 300;
}
.body {
  position: relative;
}
.body .read-more-fade {
  position: absolute;
  padding: 2px;
  bottom: 0; right: 75px;
  width: 50%;
  text-align: right;
  background-image: -webkit-gradient(linear,left,right,color-stop(0, rgba(255, 255, 255, 0)),color-stop(1, white));
  background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0), white);
  background-image: -moz-linear-gradient(left, rgba(255, 255, 255, 0), white);
  background-image: -ms-linear-gradient(left, rgba(255, 255, 255, 0), white);
  background-image: -o-linear-gradient(left, rgba(255, 255, 255, 0), white);
}
.body .read-more {
  position: absolute;
  padding: 2px;
  bottom: 0; right: 0;
  margin-bottom: 0;
  width: 90px;
  text-align: right;
  background-color: white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="body">
  <div id="content" class="content truncated">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>
  <div id="linkArea">
    <div class="read-more-fade">
      &nbsp;
    </div>
    <div class="read-more">
      <a id="toggle" href="#">&hellip;read more</a>
    </div>
  </div>
</div>

<div class="body">
  <div id="content2" class="content truncated">This content is too short to be truncated.</div>
  <div id="linkArea2">
    <div class="read-more-fade">
      &nbsp;
    </div>
    <div class="read-more">
      <a id="toggle2" href="#">&hellip;read more</a>
    </div>
  </div>
</div>

【问题讨论】:

    标签: javascript html css overflow


    【解决方案1】:

    我要做的是检测段落的高度是否大于 5ems 然后显示它

    【讨论】:

    • 我希望有一种方法可以用 CSS 做到这一点,而不必依赖 JS,但我会采用任何可行的方法。欢迎代码回复!
    • 你应该用 JS 来做这件事。因为如果有人关闭了 js,他们应该仍然能够看到内容。
    • 我不同意。我们的整个网站都需要 JS 来运行,所以没有必要让这个小块工作。
    • 啊,我明白了,不是每个人都按照标准构建网站。
    • Rafael,您是否使用过任何现代 Web 框架,例如 AngularJS、Meteor、Flex、Polymer 等?所有这些框架都依赖于启用的 javascript。我不知道有哪个团队会在没有 JS 的情况下构建一个完全独立的备份应用程序,只是为了满足少数禁用它的傻瓜。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多