html - 将折叠文本切换为单行

标签 html css expand

我想将一个长文本折叠成一行并在右侧显示一个MORE 链接。展开的文本应在底部和右侧显示一个 LESS 链接。一些例子可以清楚地说明:

text text text MORE

text text text text
text           LESS

折叠状态似乎与 position: relative; 配合得很好; float: right, 但是不知道怎么实现展开状态。没有什么比 float: right-bottom (实际上什至模拟 float: bottom 需要一个 complicated hack ,但这个 hack 在我的情况下似乎不可用)。该算法很简单:如果文本后有足够的空间,则将其放在最后一行的末尾,否则,将其放在下一行(也是右对齐),但是如何告诉浏览器?

更多示例,它应该如何工作。

text           MORE

text a_long_word
text text text LESS

text a_long_word
an_even_longer_word
               LESS

请注意,text MORE 行应生成为以下行的缩短版本。

我有点让它和类似的东西一起工作

<div><a>MORE</a><span>the text....</span><a>LESS</a></div>

隐藏其中一个链接,并设置overflow: hidden; height: 20px; 在折叠的情况下。现在,我也想获得 text-overflow: ellipsis...

我不是在寻找纯 CSS 解决方案。我知道扩展文本的高度,如果我也知道它水平结束的位置,我会绝对定位 MORE 并结束它。

最佳答案

使用 CSS 看起来真的很简单,除非我遗漏了什么。那这个呢? http://codepen.io/pageaffairs/pen/AwfoI

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style>

div {width: 20%; margin: 30px; background: #f7f7f7; overflow: hidden;}
b {float: right;}

</style>
</head>
<body>

<div>
    <span>text</span> <b>MORE</b>
</div>

<div>
    <span>text a_long_word text text text</span> <b>LESS</b>
</div>

<div>
    <span>text a_long_word an_even_longer_word</span> <b>LESS</b>
</div>

</body>
</html>

关于html - 将折叠文本切换为单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24297916/

相关文章:

javascript - 为什么 .find() 总是返回 true?

html - 在 HTML 中使用文本区域宽度自动调整表单宽度

css - 不知道如何使容器的边缘完全变圆?

qt - 如何使 QLineEdit 在 QScrollArea 内展开

jquery - 使用 JQuery 和 CSS 扩展/缩小 Div

jquery - jQuery展开/折叠div在IE7/IE9中不起作用

css - 谷歌浏览器中的边距折叠与 <button> 元素的其他浏览器不同

javascript - jQuery 点击计数器

javascript - 如何在js函数中获取元素id?

css - Bootstrap 将响应式文本和按钮放在视频上