因此,我目前正在学习jquery和一些tweenlite动画(我想使其保持基本状态)。所以我目前正在构建一个投资组合网格,但是我想添加一个其他元素正在淡入的元素的点击(从右边滑动没关系)。

但是我找不到一种方法来使一个元素具有一个显示框,而另一个元素具有不同的显示框,而不用一遍又一遍地处理代码并每次都更改一个简单的数字,所以必须找到一种方法使它工作而不必一遍又一遍地重复代码。

我创建了一个Codepen来显示我的挣扎所在。

我希望我能很清楚地描述这个问题:)

的HTML

  <div class="box">
    <div class="show">Show 1</div>
  </div>

  <div class="bigbox">
    <div class="removeit">
      <div class="bigshow">Bigshow 1</div>
    </div>
  </div>

  <div class="box">
    <div class="show">Show 2</div>
  </div>

  <div class="bigbox">
    <div class="removeit">
      <div class="bigshow">Bigshow 2</div>
    </div>
  </div>

</div>

的CSS
.container {
  overflow: auto;
  margin: 0 auto;
  width:500px;
}

.box {
  height:200px;
  width:200px;
  background:yellow;
  text-align:center;
  cursor:pointer;
  margin:0 auto;
  float:left;
  margin-right:50px;
}

.bigbox {
  height:100%;
  width:100%;
  background-color: grey;
  z-index:100;
  left:0;
  opacity: 0;
  position: fixed;
  display:none;
  top:0;
  .removeit {
    height:100px;
    width: 100px;
    top: 0;
    right:0;
    background-color: blue;
    margin:0 auto;
    cursor:pointer;
  }
}

  .show {
    display:block;
  }
  .noscroll {
    overflow:hidden;
  }

Java脚本
$(".box").click(function(){
    $(".bigbox").addClass("show");
    TweenLite.to($('.bigbox'), 0.5, {
        opacity:1,
        autoAlpha:1
    });
});

$(".removeit").click(function(){
    TweenLite.to($('.bigbox'), 0.5, {
        autoAlpha:0,
        opacity:0
    });
});

Codepen

http://codepen.io/denniswegereef/pen/MwjOXP

最佳答案

正如我在评论中提到的那样,我认为有可能通过找到 bigbox 之间的共同点,以及是否要不修改HTML来达成共识。该共同点应该是各自类中的索引值。

  • 因此,请先在click处理程序中存储一个clickedIndex变量
    像这样:var clickedIndex=$('.box').index($(this));
  • 然后输入此clickedIndex以获得选择性的 bigbox ,如下所示:varbigbox=$(".bigbox").eq(clickedIndex);
  • 最后,进一步使用此 bigbox 变量淡入或淡出。

  • 这是修改后的JavaScript:
    var bigbox = null;
    var clickedIndex = -1;
    var boxElements=$(".box");
    var bigboxElements=$(".bigbox");
    var removeItElements=$(".removeit");
    boxElements.click(function() {
      clickedIndex = boxElements.index($(this));
      bigbox = bigboxElements.eq(clickedIndex);
      bigbox.addClass("show");
      TweenLite.to(bigbox, 0.5, {opacity: 1,autoAlpha: 1});
    });
    
    removeItElements.click(function() {
      clickedIndex = removeItElements.index($(this));
      bigbox = bigboxElements.eq(clickedIndex);
      TweenLite.to(bigbox, 0.5, {autoAlpha: 0,opacity: 0});
    });
    

    这种方法的唯一问题是,它非常依赖于HTML的布局顺序。

    07-28 04:57