单击按钮后,如何将页面滑动到屏幕上?

时间:2017-04-01 16:18:44

标签: javascript html css animation transition

按下按钮时,我基本上会有一个滑动到屏幕上的菜单。在菜单上我有几个按钮,目前没有做任何事情。我希望他们做的是每当用户点击按钮时我希望页面从屏幕底部滑入。我自己尝试过这样做,但出于某种原因,只要按下其中一个按钮,它就会关闭菜单。

这是我到目前为止所拥有的。



//About Page Transition
function expand(){
  $(this).toggleClass("on");
  $(".aboutContent").toggleClass("active");
};
$("#about").on('click', expand);

//Projects Page Transition
function expand(){
  $(this).toggleClass("on");
  $(".aboutContent").toggleClass("active");
};
$("#projects").on('click', expand);

//Contact Page Transition
function expand(){
  $(this).toggleClass("on");
  $(".aboutContent").toggleClass("active");
};
$("#contact").on('click', expand);

//Menu Transition
function expand(){
  $(this).toggleClass("on");
  $(".menu").toggleClass("active");
};
$(".button").on('click', expand);

body {
  font-family: "Source Sans Pro", sans-serif;
  color: #ccc;
  z-index: -100;
  background-color: black;
  overflow: hidden;
}

#aboutContent {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  padding: 0;
  overflow: hidden;
  width: 100%;
  height: 100%;
  transition: all 250ms;
  -webkit-transform: translateZ(0) translateX(-100%);
  transform: translateZ(0) translateX(-100%);
  background-color: blue;
  z-index: 1000;
}

#projectsContent {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  padding: 0;
  overflow: hidden;
  width: 100%;
  height: 100%;
  transition: all 250ms;
  -webkit-transform: translateZ(0) translateX(-100%);
  transform: translateZ(0) translateX(-100%);
  background-color: black;
  z-index: 1000;
}

#contactContent {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  padding: 0;
  overflow: hidden;
  width: 100%;
  height: 100%;
  transition: all 250ms;
  -webkit-transform: translateZ(0) translateX(-100%);
  transform: translateZ(0) translateX(-100%);
  background-color: white;
  z-index: 1000;
}

.menu {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  padding: 0;
  overflow: hidden;
  background: rgba(60, 106, 152, 0.8);
  width: 18%;
  box-sizing: border-box;
  transition: all 250ms;
  -webkit-transform: translateZ(0) translateX(-100%);
  transform: translateZ(0) translateX(-100%);
  text-align:center;
  box-shadow: 0 0 20px #000000;
}

.active {
  transform: translateZ(0) translateX(0);
  transform: translateZ(0) translateX(0);
  -webkit-transition: 0.4s;
  transition: 0.4s;
  color: #e5e5e5;
}

h1 {
  margin-top:60%;
  font-size: 2.5em;
  cursor: default;
}

ul {
  padding:0;
  list-style:none;
  font-size:14px;
}

li {
  padding:10px 10px;
}

a {
  text-decoration:none;
  padding:10px 15px;
  color:#fff;
  font-family:"Roboto";
  font-size: 1.5em;
  font-weight: 300;
}

a:hover {
  text-decoration: line-through;
  color: #d66863;
}

.content {
  position:relative;
  width:300px;
}

.button {
  width:20px;
  height:40px;
  margin:24% 36%;
  padding: 14px;
  cursor:pointer;
}

.line {
	width: 40px;
	height: 2px;
    background-color: #fff;
	transition: transform 0.3s ease, background 0.3s ease, opacity 0.3s ease, top 0.3s ease;
}

.line.first {
  transform: translateX(-10px) translateY(22px) rotate(-90deg);
}

.line.second {
  transform: translateX(-10px) translateY(19px) rotate(0deg);
}

.button.on .line.top {
	transform: translateX(-10px) translateY(20px) rotate(45deg);
}

.button.on .line.bottom {
	transform: translateX(-10px) translateY(17px)rotate(-45deg);
}

<!DOCTYPE html>

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
    <title>Home</title>
    
    <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro|Play|Raleway" rel="stylesheet">
    
    <link rel='stylesheet prefetch' href='http://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css'>
    
    <link rel="stylesheet" type="text/css" href="css/style.css">
</head> 
<body>
    
<div id="wrapper">
  <div class="menu">
      
    <h1>Title</h1>
      
    <ul>
       <div id="home"><li><a href="#home"><i class="fa fa-home"></i> home</a></li></div>
       <div id="about"><li><a href="#about"><i class="fa fa-user"></i> about</a></li></div>
       <div id="projects"><li><a href="#projects"><i class="fa fa-code"></i> projects</a></li></div>
       <div id="contact"><li><a href="#contact"><i class="fa fa-paper-plane"></i> contact</a></li></div>
    </ul>
  </div>
    
  <div class="content">
    <div class="button">
      <div class="line first top"></div>
      <div class="line second bottom"></div>
    </div>
  </div>
    
    <div id="aboutContent">
    
    </div>
    
    <div id="projectsContent">
    
    </div>
    
    <div id="contactContent">
    
    </div>
    
</div>
    
    <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
    <script src='http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js'></script>
    
    <script type="text/javascript" src="js/transition.js"></script>
    <script type="text/javascript" src="js/background.js"></script>
</body>
</html>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

一种非常简单的方法是使用&#34; animate.css&#34;。

您所做的就是动态应用类&#34;动画幻灯片&#34; (我认为无论如何)你想要插入的任何元素,它就是这样。

你可以用普通的&#39; JS,JQuery让它变得容易,将它绑定为Angular / React中的属性(例如[ngClass] =&#34; theclasses&#34;),无论你想要什么。

事实上,在你的情况下,你甚至不必动态地做任何事情。只需将类硬编码到加载的HTML页面的最顶层div(或其他任何内容)。每次加载页面时,它都会向上滑动。

查看animate.css,它是一款功能强大的强大工具,可以提供它所说的功能,只需添加水动画即可。#34;对于基本的DOM元素动画,我从来没有去过其他任何地方。

你可以在我的小个人网站上看到它:

http://www.tcoz.com

每次单击菜单按钮时,页面都会滑入。

答案 1 :(得分:0)

将宽度设置为.menu css 100%