【问题标题】:ToggleClass to link to individual divs off-canvas?ToggleClass 链接到画布外的各个 div?
【发布时间】:2015-02-16 21:51:07
【问题描述】:

我在一个页面上有多张图片,我希望每张图片点击后都可以链接到画布外的单独页面。目前,每张图片都链接到同一个页面,我想弄清楚如何分别点击每一张。我已经简化了下面的代码,但这里有一个完整 Pen 的链接:http://codepen.io/anon/pen/KwQYvm?editors=110

<div class="container">

  <section id="slider">
    <div id="section-1" class="fullpage">
      <a href="#slider">
      <h1>Header</h1>
      <a href="#" class="menu-close">⇉</a>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quo aliquid iste consectetur incidunt dolorem inventore rerum, tempore quis nulla iure eveniet nostrum, saepe itaque mollitia modi ex. Cum, nam odio.</p>
    </div>

    <div id="section-2" class="fullpage">
      <a href="#slider">
      <h1>Header</h1>
      <a href="#" class="menu-close">⇉</a>
      <p>porem ipsum dolor sit amet, consectetur adipisicing elit. Quo aliquid iste consectetur incidunt dolorem inventore rerum, tempore quis nulla iure eveniet nostrum, saepe itaque mollitia modi ex. Cum, nam odio.</p>
    </div>
 </section>

 <ul id="images">
   <li><a href="#section-1" class="menu-link"><img src="https://placekitten.com/g/200/300" alt="" /></a></li>
   <li><a href="#section-2" class="menu-link"><img src="https://placekitten.com/g/200/300" alt="" /></a></li>
 </ul>

</div><!--container-->

CSS:

.container {
    background: gray;
    -webkit-transition: 1.15s ease;
    -moz-transition: 1.15s ease;
    -o-transition: 1.15s ease;
    transition: 1.15s ease;
}

#slider {
    position: absolute;
    top: 0;
    bottom: 0;
    left: -100%;
    width: 100%;
    height: 100%;

    -webkit-transform: translate(0px, 0px);
    -moz-transform: translate(0px, 0px);
    -o-transform: translate(0px, 0px);
    -ms-transform: translate(0px, 0px);
    transform: translate(0px, 0px);
    -webkit-transition: 1.15s ease;
    -moz-transition: 1.15s ease;
    -o-transition: 1.15s ease;
    transition: 1.15s ease;
}

#slider > div {
    position: absolute;
}

.container.active {
    -webkit-transform: translate(100%, 0);
    -moz-transform: translate(100%, 0);
    -o-transform: translate(100%, 0);
    -ms-transform: translate(100%, 0);
    transform: translate(100%, 0);
}

.fullpage {
    height: 100vh;
}

还有 JS:

$('.menu-link').click(function() {
  $('#slider').toggleClass('active');
  $('.container').toggleClass('active');
});

$('.menu-close').click(function() {
  $('#slider').toggleClass('active');
  $('.container').toggleClass('active');
});

【问题讨论】:

  • 您遇到什么错误?/
  • 没有错误,只是每个图像都链接到画布外的同一部分,而不是每个图像都与 href 中定义的部分匹配(即 div id="section-1" 应该链接到 #section-1 和以此类推
  • 它显示了两个部分,但由于它们是绝对定位的,因此它们显示为一个在另一个之上。您需要在脚本中隐藏一个。
  • 你能举个例子来说明我应该怎么做吗?我的 jS 很弱。

标签: javascript jquery html css toggleclass


【解决方案1】:

你可以做什么:

1) 隐藏两个部分,分别添加 hidden

.hidden{  visibility:hidden;  }
...
<div id="section-1" class="fullpage hidden">
<div id="section-2" class="fullpage hidden">

2)当.menu-link被点击时,你需要显示相应的部分。在这里,您可以使用您的链接指向它的事实:

$('.menu-link').click(function() {
  $('#slider').toggleClass('active');
  $('.container').toggleClass('active');
  $($(this).attr('href')).removeClass('hidden');//here you find the section and make it visible
});

3) 你需要在点击menu-close 时将其隐藏起来,对于menu-close,目标部分是它的父部分,所以你可以这样做:

$('.menu-close').click(function() {
  $('#slider').toggleClass('active');
  $('.container').toggleClass('active');
  $(this).parent().addClass('hidden');//here you hide the section
});

【讨论】:

  • @MatthewGelfand 不客气!你可以接受答案,而不是拥抱;)
  • 显然,我需要更高的声誉才能这样做。
  • @MatthewGelfand 您需要更高的声望才能投票,但您始终可以接受自己问题的答案(点击投票箭头下方左侧的复选标记)。
  • 好了。已检查。
猜你喜欢
  • 1970-01-01
  • 2012-07-17
  • 2012-06-26
  • 1970-01-01
  • 2019-06-08
  • 1970-01-01
  • 2015-12-30
  • 2013-02-03
  • 1970-01-01
相关资源
最近更新 更多