当前位置: 首页 > 知识库问答 >
问题:

CSS-在单击之前不可见的div时向上滑动

慕才
2023-03-14

我有一个小提琴的页面,我想点击事件动画scrollTop到div。我尝试了一些jQuery插件,但没有什么工作。我的问题是,我不能使用scrollTop,如果div不可见,并且不能动画scrollIntoView

这是html:

<body>

  <!-- Close button -->
  <button class="close-button" aria-label="Close menu" type="button" data-close>
    <span aria-hidden="true">&times;</span>
  </button>

  <div class="off-canvas position-left" id="offCanvas" data-off-canvas>
    <!-- Menu -->
    <ul class="vertical menu">
      <li><a href="#">Foundation</a></li>
      <li><a href="#">Dot</a></li>
      <li><a href="#">ZURB</a></li>
      <li><a href="#">Com</a></li>
      <li><a href="#">Slash</a></li>
      <li><a href="#">Sites</a></li>
    </ul>
  </div>

  <div id="bg">
  </div>
  <div class="panel panel-one">
    <div class="panel-inner">
      <div class="content">
        <h1>Lorem ipsum dolor sit amet</h1>
        <p>Donec id ipsum odio. Cras accumsan consectetur nibh, vitae pretium dui hendrerit sed. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac orci elit. Nunc faucibus eros vulputate purus aliquam vel blandit
          ligula pharetra.</p>
      </div>
    </div>
  </div>

  <div class="panel panel-two">
    <div class="panel-inner">
      <h2>Lorem ipsum dolor sit amet</h2>
      <p>Donec id ipsum odio. Cras accumsan consectetur nibh, vitae pretium dui hendrerit sed. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac orci elit. Nunc faucibus eros vulputate purus aliquam vel blandit
        ligula pharetra.</p>
    </div>
  </div>

</body>

我计划在中使用一个滑块。面板一div,其中包含图像,单击图像将向上滚动相关div以接管屏幕。

。第一面板div需要占据整个屏幕,用户不能向下滚动。只有一次。面板二div在点击图像时向上滑动,如果用户能够向上滚动显示。面板一div再次显示<代码>。面板二应消失在屏幕下方。

共有1个答案

袁鸿畅
2023-03-14

也许答案有点晚了,但我想这将有助于您将图像滑块放在第一面板上

>

  • 首先,我隐藏滚动条:

    $('body').css('overflow', 'hidden');
    

    setp-one单击上,您可以动画到setp-one

    $(".panel-one").on('click', function() {
      $('html, body').animate({
        scrollTop: $('.panel-two').offset().top
      }, 1000, function() {
        $('body').css('overflow', 'auto');
     });
    });
    

    另外,不要忘记在动画结束时打开溢出。

    现在添加一个scroll监听器来隐藏滚动条,一旦用户向上滚动到第一面板的顶部:

    $(document).scroll(function() {
      if ($(window).scrollTop() == 0)
        $('body').css('overflow', 'hidden');
    });
    

    请参见下面的演示:

    $(".close-button").on('click', function() {
      if ($("#offCanvas").css('margin-left') < '0') {
        $("#offCanvas").css('margin-left', '0');
        $(".panel").css('margin-left', '50%');
        $("#bg").css('margin-left', '50%');
      } else {
        $("#offCanvas").css('margin-left', '-50%');
        $(".panel").css('margin-left', '0');
        $("#bg").css('margin-left', '0');
      }
    });
    
    $('body').css('overflow', 'hidden');
    
    $(".panel-one").on('click', function() {
      $('html, body').animate({
        scrollTop: $('.panel-two').offset().top
      }, 1000, function() {
        $('body').css('overflow', 'auto');
      });
    });
    
    $(document).scroll(function() {
      if ($(window).scrollTop() == 0)
        $('body').css('overflow', 'hidden');
    });
    #offCanvas {
      position: fixed;
      z-index: 999;
      background-color: black;
      width: 50%;
      margin-left: -50%;
      height: 100%;
    }
    .close-button {
      position: fixed;
      z-index: 1000;
    }
    #bg {
      background-image: url('https://unsplash.it/500?random');
      background-size: cover;
      z-index: -1;
      animation: zoom 10s;
      height: 100%;
      width: 100vw;
      position: fixed;
      -webkit-animation-fill-mode: forwards;
      background-attachment: fixed;
    }
    @keyframes zoom {
      0% {
        transform: scale(1, 1);
      }
      100% {
        transform: scale(1.1, 1.1);
      }
    }
    html,
    body {
      margin: 0;
      height: 100%;
    }
    .panel {
      position: relative;
      min-height: 100vh;
      width: 100%;
      z-index: 5;
    }
    .panel-fixed {
      z-index: 1;
    }
    .panel-inner {
      padding: 1em;
      width: 100%;
    }
    .panel-fixed .panel-inner {
      position: fixed;
      top: 0;
      left: 0;
      z-index: 2;
    }
    /* Base */
    
    *,
    *:before,
    *:after {
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
    }
    .panel-two {
      background-color: blue;
    }
    .content {
      position: fixed;
    }
    body {
      overflow-x: hidden;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <body>
      <!-- Close button -->
      <button class="close-button" aria-label="Close menu" type="button" data-close>
        <span aria-hidden="true">&times;</span>
      </button>
      <div class="off-canvas position-left" id="offCanvas" data-off-canvas>
        <!-- Menu -->
        <ul class="vertical menu">
          <li><a href="#">Foundation</a>
          </li>
          <li><a href="#">Dot</a>
          </li>
          <li><a href="#">ZURB</a>
          </li>
          <li><a href="#">Com</a>
          </li>
          <li><a href="#">Slash</a>
          </li>
          <li><a href="#">Sites</a>
          </li>
        </ul>
      </div>
      <div id="bg">
      </div>
      <div class="panel panel-one">
        <div class="panel-inner">
          <div class="content">
            <h1>Lorem ipsum dolor sit amet</h1>
            <p>Donec id ipsum odio. Cras accumsan consectetur nibh, vitae pretium dui hendrerit sed. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac orci elit. Nunc faucibus eros vulputate purus aliquam vel blandit
              ligula pharetra.</p>
          </div>
        </div>
      </div>
      <div class="panel panel-two">
        <div class="panel-inner">
          <h2>Lorem ipsum dolor sit amet</h2>
          <p>Donec id ipsum odio. Cras accumsan consectetur nibh, vitae pretium dui hendrerit sed. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac orci elit. Nunc faucibus eros vulputate purus aliquam vel blandit
            ligula pharetra.</p>
        </div>
      </div>
    </body>

  •  类似资料:
    • 问题内容: 由于各种原因,我需要在某些文本上(大部分)保持透明。但是,这意味着无法单击文本(例如,单击链接或将其选中)。是否可以简单地使该div对点击和其他鼠标事件“不可见”? 例如,div覆盖了文本,但是我希望能够通过div 单击/选择文本: 问题答案: 可以使用CSS来完成。Firefox 3.6 +,Chrome 2 +,IE 11+和Safari 4+支持此属性。不幸的是,我不了解跨浏览器

    • 问题内容: 我正在使用带有angularJS和angularstrap的jquery完整日历。看来问题在于日历仅在我单击日历中的按钮之一或调整浏览器窗口大小时才显示。该日历被加载到使用angularstrap初始化的模式框中。 感谢您的帮助。 在这里Plunkr:链接 模态HTML在search_modal.html中日历控制器是:calendarCtrl.js父控制器是search.js 编辑:

    • 问题内容: 如何在Java中创建JButton,使其不可见但可单击? 使按钮不可见但不可单击,是否有任何方法使按钮不可见但可单击? 我试着做: 但这也不起作用。我要这样做是因为我想有一个带有图像的按钮,如果将不可见的JButton放在图像上,则单击图像时该按钮将响应,即不可见按钮。 问题答案: 我认为您的意思是透明的,而不是看不见的。 这将使单击的按钮不可见,即透明: 这可以回答您的问题,但是如果

    • 这里是我正在工作的站点:https://cutt.ly/sxosoty问题是,如果你点击图像滑块,它不会检测到点击事件“只在移动设备上”。在桌面上工作。但似乎点击移动设备上的特定div是不起作用的。 null null 它的工作为整个页面,但不是在这个div“滑列表拖动”,我不确定是什么阻止点击甚至。任何帮助都是非常感谢的!

    • 我正在编写一个基本的HTML CSS代码来尝试一些东西。在css中样式化一个div后,该div就从网页中消失了。 请帮帮忙。 下面是代码。代码非常基本。 谢谢! null null

    • 问题内容: 如果不使用JQuery,这可能吗? 它用于移动网站,但是页面始终处于脱机状态,所以我真的不想使用jquery。与自定义CSS样式相比,为jquery mobile提供自定义样式要困难得多。 问题答案: 使用和输入 使所选项目保持打开状态并切换。 使用和命名输入 与复选框类似,它仅关闭已打开的复选框。在两个输入上 使用。 使用和 与输入类似,您还可以使用键触发状态。 在手风琴外部单击将关