Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery在position.animation(..)之后通过.css(..)更改div位置_Javascript - Fatal编程技术网

Javascript JQuery在position.animation(..)之后通过.css(..)更改div位置

Javascript JQuery在position.animation(..)之后通过.css(..)更改div位置,javascript,Javascript,我有一个用于幻灯片放映的js代码: var frameWidth = 0; var slideCount = $this.children(".slide-frame").length; var $currentFrame, $nextFrame; var renderNext = function () { var moveCount = 0; // get next frame if ($currentFrame.next(".slide-frame").length

我有一个用于幻灯片放映的js代码:

var frameWidth = 0;
var slideCount = $this.children(".slide-frame").length;
var $currentFrame, $nextFrame;
var renderNext = function () {
    var moveCount = 0;
    // get next frame
    if ($currentFrame.next(".slide-frame").length === 0) {
        $nextFrame = $(".slide-frame").eq(0);
    } else {
        $nextFrame = $currentFrame.next(".slide-frame");
    }
    // move next frame to the right before current frame
    $nextFrame.css({"display": "block"}, {"left": frameWidth}); // why this string works once on first timer tick???
    // all frames move animation
    $(".slide").children(".slide-frame").animate({"left": "-=" + frameWidth}, 700, function () {
        moveCount++;
        // wait for all frames animation complete
        if (moveCount === slideCount) {
            // make new current frame from next frame
            $currentFrame = $nextFrame;
        }
    });
};

frameWidth = $(".slide").width(); // get frame width
$(".slide").children(".slide-frame").width(frameWidth); // set fixed width for all frames
$currentFrame = $(".slide").children(".slide-frame").eq(0); // get first current frame
$currentFrame.css({"display": "block"});

if (slideCount > 0) { // run slide show
    setInterval(renderNext, 2000);
}
和CSS/LESS:

.slide{
    overflow: hidden;
    position: relative;
    .slide-frame{
        position: absolute;
        top: 0px;
        left: 0px;
        display: none;
    }
} 
HTML:


字符串
$nextFrame.css({“display”:“block”},{“left”:frameWidth})仅在第一个计时器“滴答”时起作用,所有帧向左移动,而不改变$nextFrame的正确位置(它在$currentFrame之前向右移动)

为什么对象css参数“left”未更改?

问题已解决

元素“.slide”及其子元素继承了CSS转换属性。 JQuery animate()不能与CSS转换同时正常工作

它应该是:$nextFrame.CSS({“display”:“block”,“left”:frameWidth});
<div class="slide">
    <a class="slide-frame" id="frame-00" href="#">
        <img class="frame-image" alt="" src="/img/slide-index/slide-frame-0.jpg">
    </a>
    <a class="slide-frame" id="frame-01" href="#">
        <img class="frame-image" alt="" src="/img/slide-index/slide-frame-1.jpg">
    </a>
</div>