【问题标题】:Match Div Position on Click点击时匹配 div 位置
【发布时间】:2014-03-17 03:42:50
【问题描述】:

所以我遇到了一个我觉得很简单的问题,只是不知道解决的确切方法。我附上了我创建的这个动画 gif,以准确说明我想要完成的工作。

我还创建了一个example here,说明我走了多远,也就是不远。我只是在点击时获得正确 div 元素的位置。我假设我需要获取 div 的左侧位置并从右侧位置减去该位置,然后添加 margin-top 或 position top 来调整左侧 div 元素的位置。

任何帮助将不胜感激,并提前感谢。如果您可以使用很棒的代码编辑和分叉新笔,或者您可以在此处发布代码。

http://cdpn.io/KtrdH

 $('.static-container').each(function() {
 $(this).click(function (e) {
   var posX = $(this).offset ().left,
       posY = $(this).offset ().top;
   alert((posX) + ' , ' + (posY));
   });
 });

解决方案

 $(function(){
    $(".static-container").click(animateDescription);
 });

 function animateDescription(){
    var topCss = $(this).offset().top;
    var relativeTop = topCss - 68;
    $(".dynamic-container").animate({
        top: relativeTop}, 500);
 }

也有效

 $('.static-container').each(function() {
   $(this).click(function (e) {
       posY = $(this).offset ().top;
       $('.dynamic-container').animate({top: posY -68});
   });
 });

【问题讨论】:

    标签: jquery css onclick position match


    【解决方案1】:

    如果你使用 jQuery,其实很容易实现。我根据您提供的示例提出了JS Fiddler Demo。基本上我所做的更改是

    1- 将动态容器 div 相对于其父级定位,以便它可以“浮动”...

    .wrapper .column-a .dynamic-container {
      height: 100px;
      background-color: #efefef;
      padding: 20px;
        position:relative; 
    }
    

    2- 添加了这个 javascript 来处理点击事件并相应地滑动动态 div

    $(function(){
        $("div.static-container").click(animateDescription);
    });
    
    function animateDescription(){
        var topCss = $(this).offset().top;
        var relativeTop = topCss - 20;
        $("div.dynamic-container").animate({
            top: relativeTop}, 500);
    }
    

    请注意,我减去了 20 个像素以适应填充,但它不需要硬编码,通过一些数学和 jquery,您可以通过从外部高度(或其他东西)中减去高度来计算实际填充在这些线之间)

    JS Fiddler Demo

    【讨论】:

    • 啊,完美,一个解决方案。完全有道理,我想太多了,但我知道这很容易。感谢您发布演示,我现在也在这里实现了这个codepen.io/alvaram/full/KtrdH 并在上面发布了新代码
    【解决方案2】:

    如果要移动的 div 在 x 轴上是静态的:

    $('.static-container').each(function() {
     $(this).click(function (e) {
           posY = $(this).offset ().top;
       $('.animation-div').offset({top: posY});
       });
     });
    

    【讨论】:

    • 另一种解决方案。也可以,代码略少。上面也发布了新代码。
    • 在您可以使用 Jquery 或 CSS 过渡持续时间和延迟增加动画之后。
    【解决方案3】:

    我在做一些事情,我必须表示鼠标的 x 和 y 位置并使用此代码。

    $("#wrapper").mousemove(function(e) {
        window.x = e.pageX;
        window.y = e.pageY;
    
        $('body').click(function() {
    
            $(".animating_div").css({
                'top' : window.y + 'px',
            });
        });
    });
    

    因此,您想要使用 y 位置为 div 设置动画。您必须在要操作的 div 上使用绝对定位。

    使用animate 而不是css。或者更好的是,你可以添加一个动态定位的类,并使用addClassremoveClass 来获得更快的效果。

    下次添加更多代码,以便人们可以看到您已尝试过此操作。

    【讨论】:

    • 这才是正确的逻辑。我有更多无效的代码,所以只想发布我的工作。下次会发布更多代码。谢谢分享。上面发布了工作解决方案。
    猜你喜欢
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多