javascript - 使用 jQuery 相对于其位置滑动元素

标签 javascript jquery

以下函数采用 options 参数来使用 jQuery 滑动(切换)元素:

// options
slideRight: {
  direction: 'right',
  startValue: '0',
  endValue: '100px'
},

// function
function(slide) {
  const $el = $(this.el)
  $el.click(() => {
    if ($el.parent().css(slide.direction) === slide.startValue) {
      $el.parent().animate({
        [slide.direction]: slide.endValue
      }, 200)
    } else {
      $el.parent().animate({
        [slide.direction]: slide.startValue
      }, 200)
    }
  })
}

我想添加第四个选项,称为mirror,它将使另一个元素镜像运动。

但为此,我需要相对于当前位置移动元素。我怎样才能做到这一点?

(注意:元素的位置设置为固定。)

最佳答案

我的答案与迄今为止发布的答案略有不同,但应该可以作为您想要的答案的起点。我使用 transform 进行相对定位,因为如果您已经使用 top left 定位了一个元素,transform:translate 将会相对移动您的项目到其固定的当前位置。我认为动画变换还具有额外的性能优势。我会调查一下。

根据(我确信不正确)在演示中工作的假设稍微修改了您的代码:

const someObject = {    

    // function
    slide: function (slide) {
      const $el = $(slide.el)
      $el.click(() => {
        if (slide.slideRight.direction === 'right') {

            $el.parent().animate({transform: 'translateX(' + slide.slideRight.endValue + 'px)'}, {
                duration: 200,
                step: function (now, fn) {
                    fn.start = $el.hasClass('in') ? slide.slideRight.endValue : slide.slideRight.startValue;
                    fn.end = $el.hasClass('in') ? slide.slideRight.startValue : slide.slideRight.endValue;
                    $el.parent().css({transform: 'translateX(' + now + 'px)'});

                    if (now === fn.end) {
                        $el.toggleClass('in');
                    }
                }
            })

        } else {
          // other stuff
        }
      })
    }

}

someObject.slide({
    el: '.position-me',
    slideRight: {
        direction: 'right',
        startValue: 0,
        endValue: 100,
        mirror: '.position-me-parent-mirror'
    }
})

<强> jsfiddle demo

关于javascript - 使用 jQuery 相对于其位置滑动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36637108/

相关文章:

javascript - jQuery - 获取包含 HTML 标签的文本区域的值

jquery - jQgrid 在表单 View 中显示隐藏列

jquery - 单击除对话框之外的任何内容

javascript - 如何将另一个目录链接附加到 HTML 中的 <a>

javascript - 将函数从 php 传递给 jquery

javascript - 将 HTML 标记传递到 Handlebars 中

javascript - 成功函数中的数组未定义

javascript - jQuery:动态更新 N 个最新值的列表

jquery - 为什么我不能设置模态对话框的高度?

javascript - jquery循环 slider 高度问题