jquery - jQuery Animate() 不会停止动画或完成其任务
问题描述
我正在尝试使用 jquery 制作一个平滑的进度条,并且只有在屏幕中查看它时才加载每个技能栏,最终一切都很好,但问题是该animate()
方法没有完成动画并且它会导致样式通过添加overflow: hidden;
到元素的问题。这是我的代码,我不知道我是否做错了什么。
var progressBars = $('.progress_bar .progress_animate');
// Loop Through Every Element .
progressBars.each( function() {
var el = $(this),
origWidth = el.data('width'),
skillPerc = el.parents('.bm_skill').find('.skill_perc');
// Set The Element Width To 0 .
el.width(0);
// Set The Element Percentage Width To 0 & Make it Transparent .
skillPerc.width(0).css( 'opacity', '0' );
// Make Changes On The Scroll Event .
$(window).on( 'scroll', function() {
var topOffset = $(window).scrollTop(),
bottomOffset = topOffset + $(window).height();
// Check if The Element is Being Viewed In The Screen .
if ( bottomOffset > el.offset().top ) {
el.animate({
width: origWidth
}, 1500 );
skillPerc.animate({
width: origWidth,
opacity: '1'
}, 1500 );
}
} );
} );
解决方案
不知何故,这里的主要问题是因为您使用百分比而不是像素来设置宽度。因此,尝试将其转换90%
为像素,然后它将解决您的问题。例如,您可以尝试width: '500px'
查看结果。
animate
附带说明一下,一旦用户滚动浏览 div ,您不希望始终触发该功能。因此,您可以添加另一个条件,例如&& el.width() == 0
.
希望它能回答你的问题。看看这个:http: //jsfiddle.net/13k2aqbf/40/
推荐阅读
- sql - 如何在单列中转换多个原始值
- javascript - 我对敌人有一个错误,当他们在我制作的一个小游戏中到达你的角色时
- deep-learning - 使用 saxpy 在时间序列中早期放弃不和谐搜索
- android - Android Gradle 同步失败找不到 support-core-ui.aar
- python - 如何使用 Tkinter 条目搜索栏返回一个单词?
- sql - 如何将 JSON 数组解析为 SQL 表
- google-data-studio - 如何在谷歌数据工作室报告中使用“过滤控制”?
- android - 分支 IO 深度链接
- qt - 重新分配 QSGGeometryNode 顶点数据
- google-chrome - Chrome 在为 Web 开发提供本地服务时使用缓存页面