javascript - 将叠加层滑出屏幕

标签 javascript jquery html css touch

我为触摸屏信息亭创建了一个简单的网页。主页有一个全屏覆盖,当触摸时,它会滑出屏幕(使用 animate.css)。

我现在想要一些额外的功能(以提高可用性)。用户是否可以滑动覆盖层离开屏幕,而不是触摸它并让它“滑开”。我注意到一些用户在第一次接近屏幕时会本能地向左/向右滑动。当这不起作用时,一半的人会认为它坏了而走开,而不是想用一根手指触摸屏幕。

  • 如果用户向左滑动,叠加层应向左滑出屏幕。
  • 如果用户向右滑动,叠加层应向右滑出屏幕。
  • 如果用户向上滑动,叠加层应该从屏幕滑到顶部。
  • 等等

我一直在看 this jQuery plugin - 这行得通吗?

我不知道我将如何加入这样的功能。但是我有created a jsfiddle到目前为止我的工作(出于示例目的而被精简)。还包括我的所有代码(jsfiddle 的副本)。

感谢任何帮助或指导。

HTML

<body>
  <!-- start overlay -->
  <div class="overlay overlay-data">
    <div class="container-fluid">
      <div class="row">
        <div class="col-md-12 overlay-info">
          <p class="help-heading">Help?</p>
          <div class="circle"></div>
          <div class="pulse-ring"></div>
        </div>
      </div>
    </div>
  </div>
  <!-- end ovberlay-->
  <div class="container text-center">
    <!-- first row -->
    <div class="row">
      <div class="col-md-4">
        <div class="menu-item blue" id="loader1">
          <a href="#"><i class="fa fa-map-signs big-icon"></i>
                    <p>Guides</p></a>
        </div>
      </div>
      <div class="col-md-4">
        <div class="menu-item blue" id="loader4">
          <a href="#"><i class="fa fa-shopping-cart big-icon"></i>
                    <p>Borrowing</p></a>
        </div>
      </div>
      <div class="col-md-4">
        <div class="menu-item blue" id="loader7">
          <a href="#"><i class="fa fa-binoculars big-icon"></i>
                    <p>Finding books</p></a>
        </div>
      </div>
    </div>
    <!-- end first row -->
  </div>
  <!-- Start Main Body Section -->
  <div class="mainbody-section text-center">
    <div class="partners">
      <!-- Modal -->
      <div aria-labelledby="myLargeModalLabel" class="modal fade bs-example-modal-lg" id="navModal" role="dialog" tabindex="-1">
        <div class="modal-dialog modal-lg">
          <div class="modal-content">
            <hr>
            <h4 class="modal-title" id="navModalLabel">
                        Navigation</h4><img src="images/bs_touchscreen_nav.jpg">
            <div class="modal-footer">
              <button class="btn btn-default" data-dismiss="modal" type="button">Close</button>
            </div>
          </div>
        </div>
      </div>
    </div>
    <!-- end main body -->
  </div>
</body>

JS

$(document).ready(function() {
  $(".overlay").addClass('overlay-open');
  $("section, .container").addClass('blur');
});

$(document).on('click', '.overlay', function() {
  $('.overlay').addClass('animated slideOutUp');
  $("section, .container").removeClass('blur');
});

CSS

body {
  background-attachment: fixed;
  background-size: cover;
  background-position: 50% 50%;
  font-family: 'Open Sans', sans-serif;
  outline: 0;
}

html,
body {
  height: 100%
}

.btn-primary {
  border-color: #FF432E;
  background-color: #FF432E;
  text-transform: uppercase;
  font-weight: 300;
  color: #fff;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  -o-border-radius: 3px;
  border-radius: 3px;
  -webkit-transition: all 0.3s;
  -moz-transition: all 0.3s;
  -o-transition: all 0.3s;
  transition: all 0.3s;
}

.blue {
  background: #28ABE3;
}

.menu-item {
  color: #fff;
  padding-top: 45px;
  padding-bottom: 45px;
  margin-bottom: 30px;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
  border: 5px solid transparent;
}

.menu-item:hover {
  border: 5px solid rgba(255, 255, 255, 0.70);
}

.menu-item a {
  color: #fff;
  display: block;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
}

.menu-item a p {
  font-weight: 300;
  font-size: 25px;
}

.menu-item a i {
  font-size: 50px;
  padding-bottom: 20px;
}

.menu-item:hover a {
  text-decoration: none;
}

.blur {
  -webkit-filter: blur(4px);
}

.overlay {
  position: fixed;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: #000;
  z-index: 1;
}

.overlay p {
  text-align: center;
  position: relative;
  top: 10%;
  height: 30%;
  font-size: 120px;
  color: white;
  font-family: 'Playfair Display', serif;
}

.overlay-data {
  opacity: 0;
  visibility: hidden;
  -webkit-transition: opacity 0.5s;
  transition: opacity 0.5s;
  visibility: 0s 0.5s;
  transition: opacity 0.5s, visibility 0s 0.5s;
}

.overlay-open {
  opacity: 0.5;
  visibility: visible;
  -webkit-transition: opacity 0.5s;
  transition: opacity 0.5s;
}

.overlay-info {
  padding-top: 100px;
}

.circle {
  padding: 100px;
  position: relative;
}

.pulse-ring {
  //content: '';
  width: 400px;
  height: 400px;
  border: 10px solid #fff;
  border-radius: 50%;
  position: relative;
  top: -110px;
  left: 0;
  margin: auto;
  animation: pulsate infinite 1s;
}

@-webkit-keyframes pulsate {
  0% {
    -webkit-transform: scale(1, 1);
    opacity: 1;
  }
  100% {
    -webkit-transform: scale(1.2, 1.2);
    opacity: 0;
  }
}

最佳答案

您可以考虑使用 jQuery Mobile UI:api.jquerymobile.com/swipe支持滑动事件。

然后您可以根据操作添加所需的任何 animate.css 类:)

关于javascript - 将叠加层滑出屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881540/

相关文章:

javascript - 查找元素在 javascript 对象中的位置

javascript - 获取动态 HTML/JQuery 以与 AngularJS 一起使用

javascript - 父级的 JQuery 比较 ('tr) and find(' tr :first') not working

javascript - 显示隐藏表单元素 Jquery/Bootstrap

javascript - JScrollPane 不会滚动整个 div? -- JScrollPane 不会随 div 在窗口调整大小时动态移动

javascript - 如何将状态传递给 React.js 中的操作?

javascript - 当图像实际出现在屏幕上时,如何让 jQuery 调用事件处理程序?

javascript - 在 html 对象中显示加载 gif

javascript - 在 For 循环中延迟 jQuery Ajax

javascript - 自定义元素在谷歌浏览器中不起作用