Js-把握时机&冲突属性
Js - making sense of timing & conflicting properties
全部,
我使用jquery在li元素上设置滑动效果动画。虽然我已经设法创建了滑动效果,但它没有正确设置动画。
问题:我认为问题在于jquery动画计时,它与jquery animate调用下面的其余代码冲突。
代码:以下是相关的审查代码(下面的jsfiddle链接(:
function activateRightTab()
{
var eTabIndDiv = document.getElementById ("feature_tabs_indicators").children[0];
var iIndsCount = eTabIndDiv.childNodes[1].children.length;
var direction = "right";
if (iActiveNo < iTabsCount - 1 && iActiveNo >= 0)
{
iActiveNo = iActiveNo + 1;
var eCurrentTab = eTabsDiv.children[iActiveNo];
var ePreviousTab = eTabsDiv.children[iActiveNo - 1];
if (iActiveNo > 0)
{
ePreviousTab.style.position = "relative";
$(ePreviousTab).animate({"right" : "210px"}, 250);
$(eTabIndDiv.children[iActiveNo - 1]).animate({"width" : "12px"}, 250).animate({"width" : "18px"}, 125);
// ****** the following three lines conflict with the above jquery line ******
self.setTimeout(ePreviousTab.style.width = "0", 250);
ePreviousTab.style.color = "transparent";
ePreviousTab.style.position = "static";
}
eCurrentTab.style.position = "relative";
eCurrentTab.style.right = "-210px";
eCurrentTab.style.width = "210px";
eCurrentTab.style.backgroundColor = "rgb(165,145,176)";
eCurrentTab.style.color = "black";
$(eCurrentTab).animate({"right" : "10px"}, 250).animate({"right" : "0"}, 125);
$(eTabIndDiv.children[iActiveNo]).animate({"width" : "127px"}, 250).animate({"width" : "121px"},125);
}
if (iActiveNo === iTabsCount - 1 && eRightScrollButton.style.opacity === "0.5") //springy effect when no other right tab
{
$(eTabsDiv.children[iActiveNo]).animate({"right" : "10px"}, 100).animate({"right" : "-5px"}, 45).animate({"right" : "0"}, 10);
}
(iActiveNo === iTabsCount - 1) ? eRightScrollButton.style.opacity = "0.5" : false;
activateFeaturesContainer(direction);
return iActiveNo;
}
这是jsfiddle上的工作原型(按下右侧的浅绿色按钮"rght"按钮(
不要使用超时来指定何时设置css。
animate((函数附带一个完整的回调,该回调将在动画完成时运行。
$(eTabIndDiv.children[iActiveNo - 1])
.animate({width: "12px"}, 250)
.animate({width: "18px"},
{complete: function(){
ePreviousTab.css('width', '0');
},
duration: 125});
http://jsfiddle.net/RtaK7/4/
您必须将setTimeout中的代码封装在函数中。目前,宽度正在立即设置:
self.setTimeout(ePreviousTab.style.width = "0", 250);
// Should be:
self.setTimeout(function(){ePreviousTab.style.width = "0";}, 250);
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- Sequelize:属性之间的命名冲突'播放列表'以及关联'播放列表'
- JavaScript变量名称和HTML输入名称属性:名称空间冲突
- 无法设置属性'dcSlickTabs'未定义的-jQuery冲突问题
- 使用具有不同属性数的两个或多个着色器时发生冲突
- 冲突/方法/属性Javascript错误
- (CSS/jQuery)如何用jQuery解决top和bottom属性之间的冲突
- 获得外部脚本到我的HTML页面,而不与CSS属性冲突
- 序列化列名/属性冲突
- Bootstrap data-slide属性与angularJS冲突
- Js-把握时机&冲突属性
- Onclick属性与jquery拖放冲突
- 在客户端的网页上加载我的网站时,出现了css属性冲突问题
- 属性和属性冲突