Кино портал

WAP.TV - Развлекательный кино портал для просмотра любимых фильмов.
Новые бестселлеры, мультфильмы для детей и взрослых, ужасы, триллеры, боевики, приключения и многое другое.
Присоединяйтесь!

Новости и события игрового мира

Главная » Файлы » Скрипты

Pull Menu / Вытягиваемое меню
28.11.2015, 11:58
HTML
Код
<div id="phone">
  <div id="screen">
  <div id="header">
  <ul id="menu">
  <li>Latest Movies</uli>
  <li>Best Movies</uli>
  <li>Archive</uli>
  <li>About</li>
  <li class="reload"><i class="loader-icon"></i></li>
  </ul>
  <div class="pullmenu-icon"></div>
  </div>
  <div id="loader"><i class="loader-icon anim"></i></div>
<div class="pages">
  <div class="page back2" id="about">
  <div>
  <span>Pullmenu</span><br/>Menu interaction concept<br/>by @_fbrz
  </div>
  </div>
  <div class="page" id="latest">
  <div class="box hero back11">
  <span>Interstellar</span>
  </div>
  <div class="box back2">
  <span>Dracula untold</span>
  </div>
  <div class="box back9 right tall">
  <span>The guardians of the galaxy</span>
  </div>
  <div class="box back4">
  <span>The judge</span>
  </div>
  <div class="box back3">
  <span>Frank</span>
  </div>
  <div class="box back6 right">
  <span>Big Hero 6</span>
  </div>
  <div class="box back8 wide">
  <span>Hunger Games</span>
  </div>
  </div>
  <div class="page" id="best">
  <div class="box wide back11">
  <span>Boyhood</span>
  </div>
  <div class="box wide back2">
  <span>The lego movie</span>
  </div>
  <div class="box wide back9">
  <span>The Grand Budapest Hotel</span>
  </div>
  <div class="box wide back4">
  <span>Dawn Of The Planet Of The Apes</span>
  </div>
  <div class="box wide back3">
  <span>Nightcrawler</span>
  </div>
  <div class="box wide back6">
  <span>Big Hero 6</span>
  </div>
  <div class="box wide back8">
  <span>Hunger Games</span>
  </div>
  </div>
  <div class="page" id="archive">
  <div class="box small back11">
  <span>The Wizard of Oz</span>
  </div>
  <div class="box small back2">
  <span>Citizen Kane</span>
  </div>
  <div class="box small back9">
  <span>The Godfather</span>
  </div>
  <div class="box small back4">
  <span>The Third Man</span>
  </div>
  <div class="box small back3">
  <span>A Hard Day's Night</span>
  </div>
  <div class="box small back6">
  <span>Modern Times</span>
  </div>
  <div class="box small back8">
  <span>All About Eve</span>
  </div>
  <div class="box small back7">
  <span>Metropolis</span>
  </div>
  <div class="box small back5">
  <span>Singin' in the Rain</span>
  </div>
  <div class="box small back10">
  <span>King Kong</span>
  </div>
  <div class="box small back1">
  <span>Sunset Boulevard</span>
  </div>
  </div>
</div>
  </div>
  <div id="home"></div>
  <div id="speaker"></div>
</div>

<div id="text">
  <div id="pullmenu-icon"></div>
  <h1>pull<br/>menu</h1>
  <h2>Menu<br/>interaction<br/>concept</h2>
  <h3>* Pull down that icon!</h3>
  <h3>** Mobile demo: bit.ly/1CI6OEs</h3>
</div>

<a href="http://coolors.co" target="_blank" id="coolors">Coolors ></a>

CSS
Код
@import url(http://fonts.googleapis.com/css?family=Lato);
body {
  font-family: Lato;
  -webkit-font-smoothing: antialiased;
  margin: 0;
  background: #f5f5f5;
}

/* phone */
#phone {
  width: 310px;
  height: 640px;
  border: 2px solid #ccc;
  border-radius: 30px;
  position: absolute;
  left: 50%;
  top: 50px;
  margin: 0 -285px;
  background: #fff;
}
#screen {
  width: 290px;
  height: 520px;
  border: 1px solid #ccc;
  position: absolute;
  left: 50%;
  top: 50%;
  margin: -260px -145px;
  box-sizing: border-box;
  overflow: hidden;
}
#home {
  width: 36px;
  height: 36px;
  border: 1px solid #ccc;
  position: absolute;
  bottom: 10px;
  left: 50%;
  margin: 0 -18px;
  border-radius: 50%;
}
#speaker {
  width: 50px;
  height: 6px;
  border: 1px solid #ccc;
  border-radius: 6px;
  position: absolute;
  left: 50%;
  top: 25px;
  margin: 0 -25px;
}

#header {
  height: 46px;
  background: #353541;
  position: relative;
  z-index: 30;
  cursor: grab;
  &:active {
  cursor: grabbing;
  }
}

.pullmenu-icon {
  width: 16px;
  height: 2px;
  background: #FFF;
  position: absolute;
  right: 20px;
  bottom: 27px;
  transition: opacity .2s ease-in-out;
   
  &:after {
  content: '';
  width: 8px;
  height: 2px;
  background: #FFF;
  position: absolute;
  top: 10px;
  left: 4px;
  }
   
  &:before {
  content: '';
  width: 16px;
  height: 2px;
  background: #FFF;
  position: absolute;
  top: 5px;  
  left: 0;
  }
   
  &.hide {
  opacity: 0;
  }
}

#title {
  height: 46px;
}

#menu {
  list-style: none;
  margin: 0;
  padding: 0;
  width: 3000px;
  position: absolute;
  top: 50%;
  margin: -15px 0px;
  transition: transform .2s ease-out;

  li {
  color: #FFF;
  font-size: 15px;
  font-weight: 600;
  display: inline-block;
  padding: 0 20px;
  opacity: 0;
  transition: opacity .2s ease-out;
   
  &.show {
  opacity: 1!important;
  }
   
  &.reload {
  margin-left: 200px;
  position: relative;
  top: 6px;
  transition: opacity 0s ease-out;
  }
  }
   
  &.show li {
  opacity: .2;
  }
   
  &.notrans {
  transition: none;
  }
}

.loader-icon {
  box-sizing: border-box;
  width: 20px;
  height: 20px;
  border-radius: 10px;
  border: 2px solid #fff;
  border-bottom-color: transparent;
  display: block;
  &.anim {
  animation: loader 1s infinite linear;
  }
}

#loader .loader-icon {
  border: 2px solid #353541;
  border-bottom-color: transparent;
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 10;
  margin: -8px;
}
@keyframes loader {
  0% { transform: rotate(0); }
  100% { transform: rotate(359deg); }
}

.pages {
  transform: translate3d(0,0,0);
  transition: opacity .2s linear;
  z-index: 29;
  position: absolute;
  width: 318px;
  height: 100%;
  &.hide {
  transition: opacity .1s linear;
  opacity:0;
  }
}

.page {
  overflow-y: auto;
  overflow-x: hidden;
  height: 472px;
  display: none;
  padding-right: 15px;
}
#latest {
  display: block;
}

.back1 { background: -webkit-linear-gradient(-50deg, rgb(174, 147, 187), rgb(166, 61, 113)); }
.back2 { background: -webkit-linear-gradient(-50deg, rgb(151, 199, 148), rgb(18, 101, 108)); }
.back3 { background: -webkit-linear-gradient(-50deg, rgb(128, 143, 182), rgb(55, 63, 82)); }
.back4 { background: -webkit-linear-gradient(-50deg, rgb(202, 162, 133), rgb(192, 191, 60)); }
.back5 { background: -webkit-linear-gradient(-50deg, rgb(147, 176, 187), rgb(61, 122, 166)); }
.back6 { background: -webkit-linear-gradient(-50deg, rgb(187, 167, 147), rgb(166, 93, 61)); }
.back7 { background: -webkit-linear-gradient(-50deg, rgb(157, 147, 187), rgb(102, 89, 161)); }
.back8 { background: -webkit-linear-gradient(-50deg, rgb(175, 171, 178), rgb(105, 95, 100)); }
.back9 { background: -webkit-linear-gradient(-50deg, rgb(165, 137, 176), rgb(211, 92, 92)); }
.back10 { background: -webkit-linear-gradient(-50deg, rgb(147, 187, 149), rgb(90, 119, 78)); }
.back11 { background: -webkit-linear-gradient(-50deg, rgb(189, 229, 208), rgb(18, 60, 108)); }

.box {
  height: 116px;
  position: relative;
  width: 50%;
  float: left;
   
  &.right {  
  float: right;
  }
  &.tall {
  height: 232px;
  }
  &.wide {
  width: 100%;
  }
  &.small {
  width: 100%;
  height: 70px;
  }
  &.hero {
  height: 240px;
  width: 100%;
   
  span {
  font-size: 23px;
  }
  }
   
  span {
  position: absolute;
  color: #fff;
  font-size: 15px;
  bottom: 0;
  left: 0;
  text-transform: uppercase;
  padding: 25px 25px;
  font-weight: 600;
  }
}

#about {
  color: #fff;
  text-transform: uppercase;
  text-align: center;
  font-weight: 600;
  font-size: 11px;
   
  div {
  position: relative;
  left: -6px;
  top: 50%;
  margin-top: -30px;
  }
   
  span {
  font-size: 20px;
  }
}

#text {
  position: absolute;
  height: 640px;
  left: 50%;
  top: 50px;
  margin: 0px 75px;
  color: #353541;
   
  h1 {
  margin: 0;
  font-size: 70px;
  line-height: 60px;
  text-transform: uppercase;
  }
   
  h2 {
  font-size: 23px;
  margin: 0;
  text-transform: uppercase;
  margin-top: 10px;
  }
   
  h3 {
  opacity: 0.3;
  font-style: italic;
  font-weight: 400;
  font-size: 16px;
  margin-top: 30px;
  }
}

#pullmenu-icon {
  width: 40px;
  height: 5px;
  background: #353541;
  margin-top: 69px;
  position: relative;
  margin-bottom: 40px;
  left: 6px;
   
  &:before {
  width: 40px;
  height: 5px;
  background: #353541;
  content: '';
  position: absolute;
  top: 10px;
  }
   
  &:after {
  width: 22px;
  height: 5px;
  background: #353541;
  content: '';
  position: absolute;
  top: 20px;
  left: 9px;
  }
}

#coolors {
  position: fixed;
  bottom: 20px;
  right: 30px;
  text-decoration: none;
  color: #353541;
  font-size: 11px;
  text-transform: uppercase;
}


JS
Код
//sorry for the mess
var current_index = 0,  
  index,  
  menu,  
  menu_items_count,  
  mouse_down,  
  mouse_start_y,  
  pull_step,  
  total_pull = 80,  
  release = 40,
  pull_release = total_pull + release;

$(document).on('selectstart', false);

$(document).ready(function(){
  $("#menu li").each(function(i,e){
  $(this).attr("data-index",i)  
  });
   
  //
  menu = $("#menu").html();
  menu_items_count = $("#menu li").length;
  pull_step = total_pull/(menu_items_count-1);
  //
   

  $("#menu").css("transform","translate3d("+getItemX(0)+"px,0,0)");
  $("#menu li").removeClass("show");
  $("#menu li").eq(0).addClass("show");
});

$("#header").mousedown(function(e){
   
  //
  mouse_down = true;
  mouse_start_y = e.pageY;
  //
   
  if(index == menu_items_count-1) {
  index = 0;
  } else {
  var $item = $("#menu li").eq(index);
  $("#menu").html(menu);
  $("#menu li").eq($item.attr("data-index")).remove();
  $item.prependTo($("#menu"));
  $("#menu li").eq(0).addClass("show");
  $("#menu").addClass("notrans");
  $("#menu").css("transform","translate3d("+getItemX(0)+"px,0,0)");
  }
});

$(document).mouseup(function(e){
  if(mouse_down) {
  //
  mouse_down = false;
  $("#header").animate({height: 46},300);
  $("#menu").removeClass("show");
  $(".pullmenu-icon").removeClass("hide");
  //
   
   
   
  if(index>0) {

  if(index==menu_items_count-1) {
   
  $(".reload i").addClass("anim");
   
  setTimeout(function(){
  $("#menu li").removeClass("show");
  $("#menu").css("transform","translate3d("+getItemX(0)+"px,0,0)");
  $(".reload i").removeClass("anim");
   
  setTimeout(function(){
   
  $("#menu li").eq(0).addClass("show");
  },500);
  },1000);
   
  } else {

  current_index = index;

  $(".pages").addClass("hide");

  setTimeout(function(){

  $(".pages").removeClass("hide");
  $(".page").hide();

  switch($("#menu li").eq(index).attr("data-index")) {
  case '0': $("#latest").show(); break;
  case '1': $("#best").show(); break;
  case '2': $("#archive").show(); break;
  case '3': $("#about").show(); break;
  }
  },1000);
  }
  }
  }
});

$(document).mousemove(function(e){
   
  $("#menu").removeClass("notrans");
   
  if(mouse_down) {
   
  var diff = Math.max(0, e.pageY - mouse_start_y);
  if(diff>pull_release) diff = pull_release + (diff-pull_release)/(diff*0.01);
   
  $("#header").height(46+diff);

  index = Math.max(0,Math.min(menu_items_count-2, Math.floor((diff-release)/pull_step)));
  if(diff>pull_release+pull_step*2) index = menu_items_count-1;
   
  if(diff>release) {
  $("#menu").addClass("show");
  $(".pullmenu-icon").addClass("hide");
  } else {
  $("#menu").removeClass("show");
  $(".pullmenu-icon").removeClass("hide");
  }
   
  $("#menu").css("transform","translate3d("+getItemX(index)+"px,0,0)");
  $("#menu li").removeClass("show");
  $("#menu li").eq(index).addClass("show");
   
  $(".loader-icon").css("transform", "rotate("+(diff*20)+"deg)");
  }
});

var getItemX = function(index){
  var $item = $("#menu li").eq(index);
  var item_offset = $item.offset().left;
  var item_width = $item.outerWidth();
  var menu_offset = $("#menu").offset().left;
  var screen_width = $("#screen").width();
  return (menu_offset-item_offset)+(screen_width-item_width)/2;
};
Категория: Скрипты | Добавил: masmasdias
Просмотров: 640 | Загрузок: 0 | Рейтинг: 5.0/1
Всего комментариев: 0