javascript - jQuery SlideToggle 方法但不基于元素的高度
问题描述
单击标题后,使用 jQuery slideToggle 方法显示一些内容:
$(".main-section .main-section-title").click(function() {
$(this)
.parent()
.next(".content")
.slideToggle(500, "linear");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<div class='main-section'>
<div class='main-section-title'>
Title1
</div>
</div>
<div class='content t1' style='height:30px;background-color:green;'>
</div>
<div class='main-section'>
<div class='main-section-title'>
Title2
</div>
</div>
<div class='content' style='height:100px;background-color:blue;'>
</div>
这是一个单页网站,因此页面上有多个这些标题和内容元素。因为jQuery的slideToggle方法动画速度是基于元素的高度,所以动画都有不同的slideUp和slide down速度。是否有使用 jQuery 幻灯片方法的解决方案,但无论元素的高度如何,速度都是恒定的。比如在 1000 毫秒内向下滑动 100 像素?
解决方案
检查下面的代码。我在评论中添加了解释。
$(".main-section .main-section-title").click(function() {
let contentDiv = $(this).parent().next('.content');
// define constant time based on your requirement
// if you want to slide 100px per second then use (1000/100)
// 1000(millisecond) is constant that is for one second.
// get total slide time = div height * 1000 / slidePixelPerSecond
// below I have used 1000/10 so it will slide 10px per second.
let time = contentDiv.outerHeight() * 1000 / 10;
contentDiv.slideToggle(time, 'linear');
});
.t1 {
height: 30px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<div class='main-section'>
<div class='main-section-title'>
Title1
</div>
</div>
<div class='content t1' style='background-color:green;'>
</div>
<div class='main-section'>
<div class='main-section-title'>
Title2
</div>
</div>
<div class='content' style='height:100px;background-color:blue;'>
</div>
推荐阅读
- python-3.x - 如何部分清理命令提示符
- ios - Xcode 创建通用 Xcode 存档而不是 iOS App Archive?
- spring - Spring Security 不要求登录名和密码
- swift - 打印嵌套枚举中的所有案例 - Swift
- javascript - 在 React 中使用 Hooks 实现倒数计时器
- java - 在每个请求之前进行 Spring MVC Session 检查
- python - 无法更改列“id”:在 Django 上的表错误的外键约束中使用
- extendscript - 如何正确处理文件名编码?
- ms-office - 无法以只读模式共享带有自动打开标签的文档
- java - Libgdx:为什么 Actions.parallel 中的动作会不断重复自己?