以下是 jQuery+CSS3移动手机菜单代码 的示例演示效果:
部分效果截图:
HTML代码(index.html):
<!doctype html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jQuery+CSS3移动手机菜单代码</title>
<link rel="stylesheet" type="text/css" href="css/default.css">
<link href='http://fonts.useso.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="css/demo-1.css">
<!--[if IE]>
<script src="http://libs.useso.com/js/html5shiv/3.7/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="htmleaf-container">
<div id="wrapper">
<div class="menu">
<img id="menu-bg" src="img/golden-gate-lights.jpg" />
<ul>
<li><a href="">About</a></li>
<li><a href="">Share</a></li>
<li><a href="">Activity</a></li>
<li><a href="">Settings</a></li>
<li><a href="">Contact</a></li>
</ul>
</div>
<div class="screen">
<div class="navbar"></div>
<div class="list">
<div class="item">
<div class="img"></div>
<span></span>
<span></span>
<span></span>
</div>
<div class="item">
<div class="img"></div>
<span></span>
<span></span>
<span></span>
</div>
<div class="item">
<div class="img"></div>
<span></span>
<span></span>
<span></span>
</div>
<div class="item">
<div class="img"></div>
<span></span>
<span></span>
<span></span>
</div>
</div>
<div class="burger">
<div class="x"></div>
<div class="y"></div>
<div class="z"></div>
</div>
</div>
</div>
</div>
<script src="js/stopExecutionOnTimeout.js?t=1"></script>
<script src="js/jquery-2.1.1.min.js" type="text/javascript"></script>
<script>
if ('ontouchstart' in window) {
var click = 'touchstart';
} else {
var click = 'click';
}
$('div.burger').on(click, function () {
if (!$(this).hasClass('open')) {
openMenu();
} else {
closeMenu();
}
});
$('div.menu ul li a').on(click, function (e) {
e.preventDefault();
closeMenu();
});
function openMenu() {
$('div.burger').addClass('open');
$('div.y').fadeOut(100);
$('div.screen').addClass('animate');
setTimeout(function () {
$('div.x').addClass('rotate30');
$('div.z').addClass('rotate150');
$('.menu').addClass('animate');
setTimeout(function () {
$('div.x').addClass('rotate45');
$('div.z').addClass('rotate135');
}, 100);
}, 10);
}
function closeMenu() {
$('div.screen, .menu').removeClass('animate');
$('div.y').fadeIn(150);
$('div.burger').removeClass('open');
$('div.x').removeClass('rotate45').addClass('rotate30');
$('div.z').removeClass('rotate135').addClass('rotate150');
setTimeout(function () {
$('div.x').removeClass('rotate30');
$('div.z').removeClass('rotate150');
}, 50);
setTimeout(function () {
$('div.x, div.z').removeClass('collapse');
}, 70);
}
</script>
</body>
</html>
JS代码(stopExecutionOnTimeout.js):
"use strict";
"object"!=typeof window.CP&&(window.CP={
}
),window.CP.PenTimer={
programNoLongerBeingMonitored:!1,timeOfFirstCallToShouldStopLoop:0,_loopExits:{
}
,_loopTimers:{
}
,START_MONITORING_AFTER:2e3,STOP_ALL_MONITORING_TIMEOUT:5e3,MAX_TIME_IN_LOOP_WO_EXIT:2200,exitedLoop:function(o){
this._loopExits[o]=!0}
,shouldStopLoop:function(o){
if(this.programKilledSoStopMonitoring)return!0;
if(this.programNoLongerBeingMonitored)return!1;
if(this._loopExits[o])return!1;
var t=this._getTime();
if(0===this.timeOfFirstCallToShouldStopLoop)return this.timeOfFirstCallToShouldStopLoop=t,!1;
var i=t-this.timeOfFirstCallToShouldStopLoop;
if(i<this.START_MONITORING_AFTER)return!1;
if(i>this.STOP_ALL_MONITORING_TIMEOUT)return this.programNoLongerBeingMonitored=!0,!1;
try{
this._checkOnInfiniteLoop(o,t)}
catch(n){
return this._sendErrorMessageToEditor(),this.programKilledSoStopMonitoring=!0,!0}
return!1}
,_sendErrorMessageToEditor:function(){
try{
if(this._shouldPostMessage()){
var o={
action:"infinite-loop",line:this._findAroundLineNumber()}
;
parent.postMessage(JSON.stringify(o),"*")}
else this._throwAnErrorToStopPen()}
catch(t){
this._throwAnErrorToStopPen()}
}
,_shouldPostMessage:function(){
return document.location.href.match(/boomerang/)}
,_throwAnErrorToStopPen:function(){
throw"We found an infinite loop in your Pen. We've stopped the Pen from running. Please correct it or contact support@codepen.io."}
,_findAroundLineNumber:function(){
var o=new Error,t=0;
if(o.stack){
var i=o.stack.match(/boomerang\S+:(\d+):\d+/);
i&&(t=i[1])}
return t}
,_checkOnInfiniteLoop:function(o,t){
if(!this._loopTimers[o])return this._loopTimers[o]=t,!1;
var i=t-this._loopTimers[o];
if(i>this.MAX_TIME_IN_LOOP_WO_EXIT)throw"Infinite Loop found on loop:"+o}
,_getTime:function(){
return+new Date}
}
,window.CP.shouldStopExecution=function(o){
return window.CP.PenTimer.shouldStopLoop(o)}
,window.CP.exitedLoop=function(o){
window.CP.PenTimer.exitedLoop(o)}
;
CSS代码(default.css):
@import url(http://fonts.useso.com/css?family=Raleway:200,500,700,800);@font-face{font-family:'icomoon';src:url('../fonts/icomoon.eot?rretjt');src:url('../fonts/icomoon.eot?#iefixrretjt') format('embedded-opentype'),url('../fonts/icomoon.woff?rretjt') format('woff'),url('../fonts/icomoon.ttf?rretjt') format('truetype'),url('../fonts/icomoon.svg?rretjt#icomoon') format('svg');font-weight:normal;font-style:normal;}
[class^="icon-"],[class*=" icon-"]{font-family:'icomoon';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;/* Better Font Rendering =========== */
-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}
body,html{font-size:100%;padding:0;margin:0;}
/* Reset */
*,*:after,*:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
/* Clearfix hack by Nicolas Gallagher:http://nicolasgallagher.com/micro-clearfix-hack/ */
.clearfix:before,.clearfix:after{content:" ";display:table;}
.clearfix:after{clear:both;}
body{background:#f9f7f6;color:#404d5b;font-weight:500;font-size:1.05em;font-family:"Segoe UI","Lucida Grande",Helvetica,Arial,"Microsoft YaHei",FreeSans,Arimo,"Droid Sans","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3","FontAwesome",sans-serif;}
a{color:#2fa0ec;text-decoration:none;outline:none;}
a:hover,a:focus{color:#74777b;}
.htmleaf-container{margin:0 auto;text-align:center;overflow:hidden;}
.htmleaf-content{font-size:150%;padding:1em 0;}
.htmleaf-content h2{margin:0 0 2em;opacity:0.1;}
.htmleaf-content p{margin:1em 0;padding:5em 0 0 0;font-size:0.65em;}
.bgcolor-1{background:#f0efee;}
.bgcolor-2{background:#f9f9f9;}
.bgcolor-3{background:#e8e8e8;}
/*light grey*/
.bgcolor-4{background:#2f3238;color:#fff;}
/*Dark grey*/
.bgcolor-5{background:#df6659;color:#521e18;}
/*pink1*/
.bgcolor-6{background:#2fa8ec;}
/*sky blue*/
.bgcolor-7{background:#d0d6d6;}
/*White tea*/
.bgcolor-8{background:#3d4444;color:#fff;}
/*Dark grey2*/
.bgcolor-9{background:#ef3f52;color:#fff;}
/*pink2*/
.bgcolor-10{background:#64448f;color:#fff;}
/*Violet*/
.bgcolor-11{background:#3755ad;color:#fff;}
/*dark blue*/
.bgcolor-12{background:#3498DB;color:#fff;}
/*light blue*/
/* Header */
.htmleaf-header{padding:1em 190px 1em;letter-spacing:-1px;text-align:center;}
.htmleaf-header h1{color:#fff;font-weight:600;font-size:2em;line-height:1;margin-bottom:0;font-family:"Segoe UI","Lucida Grande",Helvetica,Arial,"Microsoft YaHei",FreeSans,Arimo,"Droid Sans","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3","FontAwesome",sans-serif;}
.htmleaf-header h1 span{font-family:"Segoe UI","Lucida Grande",Helvetica,Arial,"Microsoft YaHei",FreeSans,Arimo,"Droid Sans","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3","FontAwesome",sans-serif;display:block;font-size:60%;font-weight:400;padding:0.8em 0 0.5em 0;color:#c3c8cd;}
/*nav*/
.htmleaf-demo a{color:#1d7db1;text-decoration:none;}
.htmleaf-demo{width:100%;padding-bottom:1.2em;}
.htmleaf-demo a{display:inline-block;margin:0.5em;padding:0.6em 1em;border:3px solid #1d7db1;font-weight:700;}
.htmleaf-demo a:hover{opacity:0.6;}
.htmleaf-demo a.current{background:#1d7db1;color:#fff;}
/* Top Navigation Style */
.htmleaf-links{position:relative;display:inline-block;white-space:nowrap;font-size:1.5em;text-align:center;}
.htmleaf-links::after{position:absolute;top:0;left:50%;margin-left:-1px;width:2px;height:100%;background:#dbdbdb;content:'';-webkit-transform:rotate3d(0,0,1,22.5deg);transform:rotate3d(0,0,1,22.5deg);}
.htmleaf-icon{display:inline-block;margin:0.5em;padding:0em 0;width:1.5em;text-decoration:none;}
.htmleaf-icon span{display:none;}
.htmleaf-icon:before{margin:0 5px;text-transform:none;font-weight:normal;font-style:normal;font-variant:normal;font-family:'icomoon';line-height:1;speak:none;-webkit-font-smoothing:antialiased;}
/* footer */
.htmleaf-footer{width:100%;padding-top:10px;}
.htmleaf-small{font-size:0.8em;}
.center{text-align:center;}
/****/
.related{position:absolute;top:100%;left:0;width:100%;color:#fff;background:#333;text-align:center;font-size:1.25em;padding:0.5em 0;overflow:hidden;}
.related > a{vertical-align:top;width:calc(100% - 20px);max-width:340px;display:inline-block;text-align:center;margin:20px 10px;padding:25px;font-family:"Segoe UI","Lucida Grande",Helvetica,Arial,"Microsoft YaHei",FreeSans,Arimo,"Droid Sans","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3","FontAwesome",sans-serif;}
.related a{display:inline-block;text-align:left;margin:20px auto;padding:10px 20px;opacity:0.8;-webkit-transition:opacity 0.3s;transition:opacity 0.3s;-webkit-backface-visibility:hidden;}
.related a:hover,.related a:active{opacity:1;}
.related a img{max-width:100%;opacity:0.8;border-radius:4px;}
.related a:hover img,.related a:active img{opacity:1;}
.related h3{font-family:"Microsoft YaHei",sans-serif;}
.related a h3{font-weight:300;margin-top:0.15em;color:#fff;}
/* icomoon */
.icon-htmleaf-home-outline:before{content:"\e5000";}
.icon-htmleaf-arrow-forward-outline:before{content:"\e5001";}
@media screen and (max-width:50em){.htmleaf-header{padding:3em 10% 4em;}
.htmleaf-header h1{font-size:2em;}
}
@media screen and (max-width:40em){.htmleaf-header h1{font-size:1.5em;}
}
@media screen and (max-width:30em){.htmleaf-header h1{font-size:1.2em;}
}
CSS代码(demo-1.css):
*{margin:0px;padding:0px;}
body{background:#383c55;width:100%;height:100%;font:12px "Open Sans",sans-serif;}
#wrapper{width:320px;height:560px;overflow:hidden;position:absolute;top:18px;left:50%;margin-left:-160px;background:#111;}
div.screen{width:320px;height:560px;overflow:hidden;position:absolute;top:0px;left:0px;background:#31558a;-webkit-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-moz-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-ms-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-o-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);}
div.screen.animate{left:254px;-webkit-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-moz-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-ms-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-o-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);}
.list{margin-top:36px;text-align:left;}
.item{height:115px;margin-top:30px 0;padding-left:115px;clear:both;}
.item .img,.item span{background:#214273;border-radius:3px;}
.item .img{float:left;width:71px;height:71px;margin-left:-93px;}
.item span{height:11px;width:180px;margin-bottom:19px;float:left;}
.item span:nth-of-type(3){width:75px;margin-botom:0;}
div.burger{height:30px;width:40px;position:absolute;top:11px;left:21px;cursor:pointer;}
div.x,div.y,div.z{position:absolute;margin:auto;top:0px;bottom:0px;background:#fff;border-radius:2px;-webkit-transition:all 200ms ease-out;-moz-transition:all 200ms ease-out;-ms-transition:all 200ms ease-out;-o-transition:all 200ms ease-out;transition:all 200ms ease-out;}
div.x,div.y,div.z{height:3px;width:26px;-webkit-transition:all 100ms ease-out;-moz-transition:all 100ms ease-out;-ms-transition:all 100ms ease-out;-o-transition:all 100ms ease-out;transition:all 100ms ease-out;}
div.y.squize{width:0;-webkit-transition:all 100ms ease-out;-moz-transition:all 100ms ease-out;-ms-transition:all 100ms ease-out;-o-transition:all 100ms ease-out;transition:all 100ms ease-out;}
div.y{top:18px;}
div.z{top:37px;}
div.open div.x,div.open div.z{top:19px;-webkit-transition:all 70ms ease-out;-moz-transition:all 70ms ease-out;-ms-transition:all 70ms ease-out;-o-transition:all 70ms ease-out;transition:all 70ms ease-out;}
div.rotate30{-ms-transform:rotate(30deg);-webkit-transform:rotate(30deg);transform:rotate(30deg);-webkit-transition:all 70ms ease-out;-moz-transition:all 70ms ease-out;-ms-transition:all 70ms ease-out;-o-transition:all 70ms ease-out;transition:all 70ms ease-out;}
div.rotate150{-ms-transform:rotate(150deg);-webkit-transform:rotate(150deg);transform:rotate(150deg);-webkit-transition:all 70ms ease-out;-moz-transition:all 70ms ease-out;-ms-transition:all 70ms ease-out;-o-transition:all 70ms ease-out;transition:all 70ms ease-out;}
div.rotate45{-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-transition:all 100ms ease-out;-moz-transition:all 100ms ease-out;-ms-transition:all 100ms ease-out;-o-transition:all 100ms ease-out;transition:all 100ms ease-out;}
div.rotate135{-ms-transform:rotate(135deg);-webkit-transform:rotate(135deg);transform:rotate(135deg);-webkit-transition:all 100ms ease-out;-moz-transition:all 100ms ease-out;-ms-transition:all 100ms ease-out;-o-transition:all 100ms ease-out;transition:all 100ms ease-out;}
div.navbar{height:73px;background:#385e97;}
div.menu{height:568px;width:320px;margin-left:-190px;opacity:0;position:relative;-webkit-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-moz-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-ms-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-o-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);}
#menu-bg{position:absolute;left:-10px;top:-120px;opacity:0.3;-webkit-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-moz-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-ms-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-o-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);}
div.menu.animate #menu-bg{left:-23px;-webkit-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-moz-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-ms-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-o-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);}
div.menu.animate{margin-left:-110px;opacity:1;-webkit-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-moz-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-ms-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);-o-transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);transition:all 500ms cubic-bezier(0.000,0.995,0.990,1.000);}
div.menu ul{margin-top:110px;position:relative;}
div.menu ul li{list-style:none;width:320px;margin-top:40px;text-align:left;padding-left:100px;font-size:23px;}
div.menu ul li a{color:#fff;text-decoration:none;letter-spacing:1px;}
div.menu.animate ul li{margin-left:80px;-webkit-transition:all 800ms cubic-bezier(0.000,0.995,0.990,1.000);-moz-transition:all 800ms cubic-bezier(0.000,0.995,0.990,1.000);-ms-transition:all 800ms cubic-bezier(0.000,0.995,0.990,1.000);-o-transition:all 800ms cubic-bezier(0.000,0.995,0.990,1.000);transition:all 800ms cubic-bezier(0.000,0.995,0.990,1.000);}
div.menu.animate li:nth-of-type(1){transition-delay:0.0s;}
div.menu.animate li:nth-of-type(2){transition-delay:0.06s;}
div.menu.animate li:nth-of-type(3){transition-delay:0.12s;}
div.menu.animate li:nth-of-type(4){transition-delay:0.18s;}
div.menu.animate li:nth-of-type(5){transition-delay:0.24s;}