如何显示元素的一部分,并在单击时切换到所有元素
How can I show part of an element, and toggle to all of the element on click?
我知道如何使用slideDown()
来显示以前隐藏的元素。
但是,我如何为单个元素执行此操作?也就是说,不是切换隐藏的元素,而是增长流体高度元素的可见窗口?
这是一把小提琴:http://jsfiddle.net/PzA5D/
这里有一些HTML标记:
<div class="mydiv">
<img src="http://placehold.it/200x400&text=long+img">
</div>
<button class="btn">View More</button>
和CSS:
.mydiv {
height: 100px;
min-height: 100px;
overflow: hidden;
}
和JS:
$('.btn').on('click', function(e){
e.preventDefault();
$('.mydiv').slideDown();
});
注意,我知道我的例子有一个固定的高度,但假设图像可以是任何高度。但无论高度如何,只有前100像素才会显示,直到点击"查看更多"。
更新
如果可能的话,我更愿意保留向下滑动风格的动画。
fiddle Demo
var mydiv = $('.mydiv');
$('.btn').on('click', function (e) {
e.preventDefault();
mydiv.animate({
height: mydiv.find('img').height()
}, 1000);
});
如果你想让它上下滑动但不完全隐藏,你需要使用animate()
http://jsfiddle.net/PzA5D/2/
$('.btn').on('click', function(e){
e.preventDefault();
if($('.mydiv').height() < "210") {
$('.mydiv').animate({height: $('.mydiv .wrapper').height() + 'px'}, 1000);
} else {
$('.mydiv').animate({height: '205px'}, 1000);
}
});
EDIT:包括一个.wrapper
div,这样它里面就可以有任何东西,而不仅仅是一个图像,而且动画仍然可以工作。
尝试
$('.btn').on('click', function (e) {
e.preventDefault();
var $div = $('.mydiv')
$div.animate({
'height': $div.prop('scrollHeight')
});
});
演示:Fiddle
相关文章:
- 对同一类中的所有元素单击一次
- 元素单击处理程序由一个神秘的函数取消设置
- 在处理元素单击事件期间,在循环内部调用window.open()
- JS-是否可以获得元素单击位置的确切宽度
- 使用 jQuery 创建动态元素 单击事件始终返回 for 循环中的最后一个索引
- 选中父元素单击上的复选框
- 在窗口和其他元素单击时隐藏
- Polymerjs 的自定义菜单元素单击事件
- 使用 javascript 函数查找元素单击的类
- 元素单击仅使用 javascript
- 等待文档鼠标按下完成,然后元素单击才能开始
- 由于父元素的顶部和位置,子元素单击不起作用
- Jquery-在共享相同类名的其他元素之间选择一个元素(单击时)
- 目标元素单击子元素,获取父属性
- 根据元素单击更改选择选项值
- 为listview上动态生成的元素单击event
- 扩展原生元素单击事件
- 可以被许多元素使用的Javascript函数,然后区分哪个元素单击了它
- 当元素单击时隐藏iframe
- 按钮元素单击事件以切换类不起作用