【问题标题】:hide css3 multiline ellipsis read more link when there is no use无用时隐藏css3多行省略号阅读更多链接
【发布时间】:2013-03-12 11:48:26
【问题描述】:

我有一个小问题。我想出了一种使用跨浏览器多行省略号的方法。 这是我的less css mixin。如您所见,此版本在 webkit 中完美运行,在所有其他浏览器中都“ok”。

.ellipsis-multi(@lh, @l, @mw) {
  /* non-webkit */
  max-height: @lh*@l;
  /* webkit */
  -webkit-box-orient: vertical;
  -webkit-line-clamp: @l;
  display: -webkit-box;
  line-height: @lh;
  max-width: @mw;
  overflow: hidden;
  text-overflow: ellipsis;
}
.excerpt {      
  &.hide {
    .ellipsis-multi(1.4em, 3, 100%)
  }
}

我的问题是,我使用阅读更多链接来添加和删除“隐藏”类。这很完美,但如果摘录 div 只有 2 行文本,链接也是可见的。如果需要省略号,我需要一种方法来显示链接。

这是一个 codepen 示例 http://codepen.io/janwagner/pen/ubHef

我更喜欢仅使用 css 的方法来解决此问题 :)

非常感谢!!!

【问题讨论】:

  • CSS 无法知道显示了多少行文本,所以我现在可以告诉您,仅 CSS 的解决方案是不可能的。需要涉及某种类型的脚本,因此我建议您将其中一些标签添加到您的问题中。

标签: javascript css less multiline ellipsis


【解决方案1】:

仅使用 CSS 是无法做到这一点的。但是,您可以使用以下函数来计算您拥有的行数:

var divHeight = $('.excerpt p').height();
var x = ('.excerpt p').css('line-height');
lineHeight = parseInt(x); // Returns clean line-height
var lines = divHeight / lineHeight; // Returns number of lines

然后简单地使用 if 语句来显示或隐藏阅读更多按钮,具体取决于段落的行数。像这样的:

if(lines > 4){
$('.readmore').show;
}else{
$('.readmore').hide;
}

【讨论】:

  • 如果您认为这是正确的答案,请将其标记为未来访问者。我很高兴能帮上忙。
猜你喜欢
  • 1970-01-01
  • 2019-02-21
  • 2017-03-14
  • 2016-10-18
  • 2020-02-23
  • 2014-11-18
  • 2018-09-09
  • 2019-03-14
  • 2016-06-25
相关资源
最近更新 更多