在显示图书目录的时候,往往拉的页面很长,用户一眼看不到边,这样用户体验不好,所以经常可以看看“继续阅读”的链接。
它是如何实现的呢,其实就是用js检测块的高度,如果高度超过一定数,则修改文本块的高度,并设置overflow:hidden,然后再创建一个继续阅读的连接放在下面用来展开所有内容。
js代码如下,代码在ie和firefox下测试通过:
function doShrink(oshrink,maxHeight){
if(oshrink){
var oH = (oshrink.clientHeight||oshrink.offsetHeight);
if(oH>maxHeight){
var link = document.createElement("a");
var div = document.createElement("div");
div.className = "smallA";
div.innerHTML = "…………<br />"
text = document.createTextNode("[点击查看更多内容]");
link.href = "javascript:void(0)";
link.onclick = function(e) { shrinkShow(this); }
link.appendChild(text);
div.appendChild(link);
var onext = oshrink.nextSibling;
if(onext)
oshrink.parentNode.insertBefore(div,onext);
else
oshrink.parentNode.appendChild(div);
//过滤较长的内容
oshrink.srcHeight = oH;
oshrink.style.cssText ="overflow-y: hidden; max-height: "+maxHeight+"px; *_height: "+maxHeight+"px; ";
}
}
}
function shrinkShow(obj) {
var omore = obj.parentNode;
var ohide = omore.previousSibling;
ohide.style.height = ohide.srcHeight + 'px';
ohide.style.maxHeight = ohide.srcHeight + 'px';
remove(omore);
}
在这个地址你可以看到形象的测试效果图
--------------------
下面内容为4月27日新添加内容
--------------------
评论中有朋友提出逐步放开被隐藏内容的高度,下面是我的实现代码,doShrink函数不变:
var shrinkInterval = false;
function shrinkShow(obj) {
var omore = obj.parentNode;
var ohide = omore.previousSibling;
shrinkInterval = window.setInterval(function(){shrinkStep(ohide);},20);
remove(omore);
}
function shrinkStep(ohide){
var targetHeight = ohide.srcHeight;
var nowHeight = (ohide.clientHeight||ohide.offsetHeight);;
if(nowHeight < targetHeight){
ohide.style.height = nowHeight+20 + 'px';
ohide.style.maxHeight = nowHeight+20 + 'px';
}else{
if(shrinkInterval){
window.clearInterval(shrinkInterval);
shrinkInterval = false;
}
}
}
逐步打开的效果,请看这里:0-1岁宝宝养育全书
分享到:
相关推荐
4. **Vue/React等前端框架**: 在使用Vue、React等现代前端框架时,可以通过状态管理来控制文本的折叠和展开,结合组件化思想,可以创建高度复用和可配置的折叠组件。 5. **响应式设计**: 考虑到不同设备的屏幕尺寸...
为了增加用户体验,我们还可以在展开收缩过程中添加过渡动画,如淡入淡出效果。这可以通过`fadeToggle()`方法实现: ```javascript $("#toggleButton").click(function() { $("#contentArea").fadeToggle("slow");...
在本项目中,"zTree树形菜单展开收缩插件"是其核心应用,主要特性包括节点的动态展开与收缩,以及支持关键字模糊查询筛选功能。 1. **zTree基本概念** - **树形结构**:zTree展示的数据结构为树状,每一级节点可以...
在JavaScript编程中,多层嵌套的展开与收缩是一个常见的需求,特别是在构建可交互的用户界面,如树形结构、折叠菜单或者层级数据展示时。本文将深入探讨如何使用JavaScript实现这一功能,以及相关的技术要点。 首先...
可以预先设定两个图标,然后在展开和收缩时通过修改元素的`class`来切换: ```javascript $("#toggleBtn").click(function() { var $icon = $(this).find("i"); if ($icon.hasClass("fa-angle-down")) { $icon....
"c#导航弹性收缩展开菜单"是一个项目,旨在创建一个具有动态效果的PC端导航菜单,它使用JavaScript (js) 和jQuery (jq) 进行前端实现,以提供用户友好的交互体验。 在C#中,虽然主要处理后端逻辑,但也可以通过ASP...
通常,富文本框会用一个不可见的`<iframe>`或`<div>`来承载文本内容,利用CSS和JavaScript模拟文本编辑器的界面,并提供事件处理和API接口,使得开发者可以控制用户的输入行为。 ### 二、富文本框库 1. **CKEditor...
这个测算器的功能可能涵盖了接收用户的出生年份、性别、当前年龄、职业类型等信息,并根据国家政策规定的变化,计算出用户在渐进式延迟退休制度下的实际退休年龄。它不仅能够帮助用户了解自己的退休时间点,还可能...
综上所述,网易的JavaScript富文本编辑器提供了一套完整的解决方案,用于在网页中创建功能强大的文本编辑环境,并且具有高度的定制性和灵活性,适合各种类型的Web应用集成。通过深入研究和使用提供的文件,开发者...
在这篇文章中,我们将介绍使用JavaScript来让IFRAME框架的高度自适应的方法。首先,我们需要定义一个函数来获取当前页面的高度。这个函数可以使用document.body.offsetHeight或document.body.scrollHeight来获取页面...
在构建这个树形控件时,我们可以使用JavaScript对象表示树的节点,每个节点包含自身的文本、子节点数组以及状态(如是否展开)。当用户点击节点时,对应的事件处理器会检查节点的状态并动态地添加或删除子节点的DOM...
**jsdiff:JavaScript文本差异比较库** jsdiff是一款基于JavaScript的开源库,它提供了一种高效的方法来比较两个文本字符串之间的差异。这个库被广泛应用于版本控制系统、代码审查工具、协同编辑系统等领域,帮助...
1. 文本格式化处理:使用JavaScript编程对文本文档进行格式化处理,实现了文本文档的自动格式化处理,简化了操作。 2. 合并断行:对于文本文档中的断行问题,使用JavaScript编程可以将断行合并,避免了繁琐的手工...
Vue.js 是一套构建用户界面的渐进式框架。分享在这里方便大家使用。
总的来说,这份“循序渐进的JavaScript范例资料”涵盖了JavaScript从基础到进阶的各个方面,通过实例学习,你将能够深入理解并熟练运用这门语言,从而在Web开发领域游刃有余。无论你是刚接触JavaScript的新手,还是...
可能使用了CSS3的过渡(transition)和动画(animation)属性来实现平滑的展开和收缩效果。同时,CSS还可能使用媒体查询(media queries)来确保菜单在不同屏幕尺寸下的响应式布局。 压缩包中的"js"文件夹可能包含...
3. 在事件处理函数中,判断当前子菜单的状态并执行相应的展开或收缩操作。 4. 使用`slideUp`和`slideDown`方法添加平滑的动画效果。 通过这样的方式,你可以创建一个交互性强且易于管理的菜单系统,提高用户的浏览...
Vue是渐进式JavaScript框架,官方定义为“渐进式”是因为Vue可以根据项目需求逐步增加功能,而不需要从头开始构建整个框架。Vue框架的主要特点是易用、高效、灵活,可以快速开发前端页面。 Vue入门 要开始使用Vue,...
在实际应用中,还可以添加更复杂的逻辑,比如设置计时器自动收起、记忆用户上次的选择状态,或者在展开收缩过程中加载更多数据等。同时,要注意响应式设计,确保在不同设备和屏幕尺寸上都能良好地工作。 总之,利用...
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,方便与第三方库或既有项目整合。Vue.js是...