Javascript 如何仅显示div的第一行文本并单击展开?
我只想显示包装文本块的第一行,然后单击显示整个块。另外,我想知道如何在第二次单击时将其切换回紧凑的单线版本 有没有一种简单的方法可以通过css+javascript实现这一点?我使用jQuery。Javascript 如何仅显示div的第一行文本并单击展开?,javascript,jquery,css,Javascript,Jquery,Css,我只想显示包装文本块的第一行,然后单击显示整个块。另外,我想知道如何在第二次单击时将其切换回紧凑的单线版本 有没有一种简单的方法可以通过css+javascript实现这一点?我使用jQuery。第一行 <div id='a' onclick='toggletext'>first line<br /></div> function toggletext(){ var html= document.getElementById('a').innerHTM
第一行
<div id='a' onclick='toggletext'>first line<br /></div>
function toggletext(){
var html= document.getElementById('a').innerHTML;
if(html=='first line<br />'){
html = 'first line<br />next lines<br />next lines<br />';
}else{
html = 'first line<br />';
}
document.getElementById('a').innerHTML = html
}
函数toggletext(){
var html=document.getElementById('a').innerHTML;
如果(html==“第一行
”){
html='第一行
下一行
下一行
';
}否则{
html='第一行
';
}
document.getElementById('a')。innerHTML=html
}
可以对其进行优化,并使其使用一种常见的lib,您可以使用一些jQuery来实现这一点
<div id="a">
<span id="first">This is the first line (read more)</span>
<br />
<span id="rest">This is the rest of the text</span>
</div>
使用CSS+JavaScript很容易做到这一点。只需将div的高度设置为单行的高度,并隐藏所有溢出。然后,当用户单击div时,使用一个漂亮的动画处理程序来执行向下隐藏或其他类似效果,以显示div的全部内容
下面是一个非常基本的示例(无动画):在CSS中,将div的大小设置为行的大小(重要提示:您可能需要使用行距属性在第二行的底部获得适当的填充) 我不知道如何单击,但您可以在CSS中使用
:hover
来更改样式(重置行距、重置div大小和溢出到适当的值),以获得悬停显示效果
或者您可以使用JavaScript并在单击时更改CSS(使用jQuery很容易) 将我的评论作为答案发布: 另一种方法是,定义类
高度:1em;溢出y:隐藏代码>然后使用javascript单击添加/删除它
或者您也可以在:active
-伪类中处理它,方法是使用
-标记包装
,这样就不需要javascript了。但是一旦失去焦点,div就会再次崩溃。假设您不想使用任何JavaScript库(这很奇怪)
请参见:
HTML:
<div id="content"></div>
#content {
border: 1px solid red;
height: 1em;
padding: 2px; /* adjust to taste */
overflow: hidden
}
document.getElementById("content").onclick = function() {
this.style.height = 'auto';
}
JavaScript:
<div id="content"></div>
#content {
border: 1px solid red;
height: 1em;
padding: 2px; /* adjust to taste */
overflow: hidden
}
document.getElementById("content").onclick = function() {
this.style.height = 'auto';
}
或者,如果您想使用JavaScript框架,例如,可以对其设置动画
请参见:
这就足够了:
要隐藏除第一行以外的所有行,请执行以下操作:
var theDiv = document.getElementById('theDiv');
theDiv.style.overflowY = 'hidden';
theDiv.style.height = '1em';
要显示所有文本,请执行以下操作:
var theDiv = document.getElementById('theDiv');
theDiv.style.overflowY = 'visible';
theDiv.style.height = 'auto';
或者,如果要使用jQuery:
$('#theDiv').css({ height: '1em', overflowY: 'hidden' });
$('#theDiv').css({ height: 'auto', overflowY: 'visible' });
将div的hide设置为1em,然后exapnd it onclick就是解决方案
看看这个。我没有使用任何JS库
CSS
HTML
这是小提琴
$(文档).on('click','.collappable',函数(){
$(this.toggleClass('collapsed');
});代码>
p{
光标:指针;
}
.崩溃{
空白:nowrap;
溢出:隐藏;
文本溢出:省略号;
}
我只想显示一块包装文本的第一行,然后单击显示整个块。另外,我想知道如何在第二次单击时将其切换回紧凑的单线版本。
有没有一种简单的方法可以通过css+javascript实现这一点?我使用jQuery
<div id='a' onclick='toggletext'>first line<br /></div>
function toggletext(){
var html= document.getElementById('a').innerHTML;
if(html=='first line<br />'){
html = 'first line<br />next lines<br />next lines<br />';
}else{
html = 'first line<br />';
}
document.getElementById('a').innerHTML = html
}
我只想显示一块包装文本的第一行,然后单击显示整个块。另外,我想知道如何在第二次单击时将其切换回紧凑的单线版本。
有没有一种简单的方法可以通过css+javascript实现这一点?我使用jQuery
<div id='a' onclick='toggletext'>first line<br /></div>
function toggletext(){
var html= document.getElementById('a').innerHTML;
if(html=='first line<br />'){
html = 'first line<br />next lines<br />next lines<br />';
}else{
html = 'first line<br />';
}
document.getElementById('a').innerHTML = html
}
我只想显示一块包装文本的第一行,然后单击显示整个块。另外,我想知道如何在第二次单击时将其切换回紧凑的单线版本。
有没有一种简单的方法可以通过css+javascript实现这一点?我使用jQuery。
不太确定,但我想高度:1em
应该可以显示第一行。对于扩展,我认为javascript是必要的。无论采用何种解决方案,加载后应尽快在JS中添加一个类来隐藏内容。然后,如果禁用JS,内容仍将显示。仅供参考,使用屏幕阅读器的盲人和弱视者,以及禁用CSS的用户,以及搜索机器人和他们的缓存将可以访问整个内容,而无需单击。根据你的需要,可能是好的,也可能是坏的。OP说他在div中包装了(如“word包装”)文本,而不是有明显换行符的文本。@Delan,我想你不喜欢jQuery?;-)这只是一种选择。感谢您的评论。$(.expander”)。单击(function(){$(this.toggleClass(“expander”);})代码>您能否修改您的答案,以显示如何在第二次单击时将展开切换回紧凑尺寸?您仍然需要帮助吗?您使用的是纯JavaScript解决方案还是jQuery解决方案?我使用的是jQuery。谢谢你的帮助@thirtydot这个功能非常出色,但是我有没有办法通过单击div中的链接(比如“更多…”)而不是div本身来实现它?@elendilhthall:假设您使用的是jQuery版本,比如:
<div id='a' onclick='toggletext'>first line<br /></div>
function toggletext(){
var html= document.getElementById('a').innerHTML;
if(html=='first line<br />'){
html = 'first line<br />next lines<br />next lines<br />';
}else{
html = 'first line<br />';
}
document.getElementById('a').innerHTML = html
}