快捷搜索:  汽车  科技

手机下拉菜单栏变成网页(手机网站顶部滑动菜单栏)

手机下拉菜单栏变成网页(手机网站顶部滑动菜单栏)<meta name="viewport" content="width=device-width initial-scale=1.0" /> <title>顶部菜单滑动效果分享</title> <html> <head> <meta charset="UTF-8" />

现在是移动互联网时代,我们也得跟上时代的潮流,传统的pc网站慢慢转型,开始转成wap网站,并且pc的排版布局结构也不在适用于手机上

手机下拉菜单栏变成网页(手机网站顶部滑动菜单栏)(1)

例如最直观的一个感受就是菜单,我们平时在使用网页的时候,很明显的感觉到这个网页菜单变得不一样,那么这一期给大家带来的干货是顶部菜单滑动效果

直接上代码演示

手机下拉菜单栏变成网页(手机网站顶部滑动菜单栏)(2)

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8" />

<title>顶部菜单滑动效果分享</title>

<meta name="viewport" content="width=device-width initial-scale=1.0" />

<style>

body div dl dt dd ul ol li h1 h2 h3 h4 h5 h6 form input p th td table textarea select{margin:0;padding:0;}

h1 h2 h3 h4 h5 h6{font-size:100%;font-weight:normal;}

th em{font-style:normal;font-weight:normal;}

ol ul{list-style:none;}

table{border-collapse:collapse;border-spacing:0;}

img a img{border:0;}

body{font:12px 'Microsoft YaHei' Arial;color:#666;background-color:#eee;}

.nav{width:100%;overflow:hidden;margin:0 auto;height:35px;position:relative; line-height:35px;background-color:#000;}

.nav ul{position:absolute;left:0;top:0;width:640px;z-index:1;}

.nav ul li{width:80px; float:left; overflow:hidden;}

.nav a{color:#fff;width:100%; display:block; text-decoration:none; text-align:center;}

</style>

</head>

<body>

<div class="nav" id="nav">

<ul>

<!-- 定义好菜单名称 这里演示定义了10个菜单-->

<li><a href="#">menu1</a></li>

<li><a href="#">menu2</a></li>

<li><a href="#">menu3</a></li>

<li><a href="#">menu4</a></li>

<li><a href="#">menu5</a></li>

<li><a href="#">menu6</a></li>

<li><a href="#">menu7</a></li>

<li><a href="#">menu8</a></li>

<li><a href="#">menu9</a></li>

<li><a href="#">menu10</a></li>

</ul>

</div>

<script>

// 这里需要初始化

window.Swipe = function(b a) {

if (!b) {

return null

}

this.options = a || {};

this.index = this.options.startSlide || 0;//开始的导航页的第几屏

this.speed = this.options.speed || 300;//速度

this.lwidth = this.options.width || 80;//导航li宽度

this.delay = this.options.auto || 0;//自动滚动menu速度0为不自动滚动

this.container = b;//在那个容器内

this.element = this.container.children[0];//

this.setup();

if (this.delay != 0) {

this.begin();

}

if (this.element.addEventListener) {

this.element.addEventListener("touchstart" this false);

this.element.addEventListener("touchmove" this false);

this.element.addEventListener("touchend" this false);

this.element.addEventListener("touchcancel" this false);

this.element.addEventListener("webkitTransitionEnd" this false);

this.element.addEventListener("msTransitionEnd" this false);

this.element.addEventListener("oTransitionEnd" this false);

this.element.addEventListener("transitionend" this false);//监听过度动画是否结束

window.addEventListener("resize" this false)

}

};

Swipe.prototype = {

//设置其基本样式

setup: function() {

this.slides = this.element.children;

this.width = Math.ceil(("getBoundingClientRect" in this.container) ? this.container.getBoundingClientRect().width: this.container.offsetWidth);

if (!this.width||this.slides.length < 1) {//没有子节点,获取不到屏幕宽度均返回

return null

}

this.element.style.width = Math.ceil(this.slides.length * this.lwidth) "px";

var a = this.slides.length;

while (a--) {

var b = this.slides[a];

b.style.width = this.lwidth "px";

}

this.slide(this.index 0);

}

slide: function(a c) {

var b = this.element.style;

if (c == undefined) {

c = this.speed

}

//过度效果需要花费时间

b.webkitTransitionDuration = b.MozTransitionDuration = b.msTransitionDuration = b.OTransitionDuration = b.transitionDuration = c "ms";

this.index = a

if(a * this.width>(Math.ceil((this.slides.length*this.lwidth)/this.width)-1)*this.width){

// b.MozTransform = b.webkitTransform = "translate3d(" -((Math.ceil((this.slides.length*this.lwidth)/this.width)-1) * this.width) "px 0 0)";

// b.msTransform = b.OTransform = "translateX(" -((Math.ceil((this.slides.length*this.lwidth)/this.width)-1) * this.width) "px)";

return false;

}

else{

b.MozTransform = b.webkitTransform = "translate3d(" -(a * this.width) "px 0 0)";

b.msTransform = b.OTransform = "translateX(" -(a * this.width) "px)";

}

}

getPos: function() {

return this.index

}

//前一个,

prev: function(a) {

this.delay = a || 0;

clearTimeout(this.interval);

// console.log(this.index);

if (this.index) {

this.slide(this.index - 1 this.speed)

//console.log( this.index);

} else {

this.slide(this.length - 1 this.speed)

}

}

//后一个

next: function(a) {

this.delay = a || 0;

clearTimeout(this.interval);

if (this.index < this.length - 1) {

this.slide(this.index 1 this.speed)

} else {

this.slide(0 this.speed)

}

}

// 开始位置

begin: function() {

var a = this;

console.log(a);

this.interval = (this.delay) ? setTimeout(function() {

a.next(a.delay)

}

this.delay) : 0

}

// 停止

stop: function() {

this.delay = 0;

clearTimeout(this.interval)

}

resume: function() {

this.delay = this.options.auto || 0;

this.begin()

}

handleEvent: function(a) {

switch (a.type) {

case "touchstart":

this.onTouchStart(a);

break;

case "touchmove":

this.onTouchMove(a);

break;

case "touchcancel":

case "touchend":

this.onTouchEnd(a);

break;

case "webkitTransitionEnd":

case "msTransitionEnd":

case "oTransitionEnd":

this.transitionEnd(a);

break;

case "resize":

this.setup();

break

}

}

transitionEnd: function(a) {

if (this.delay) {

this.begin()

}

}

onTouchStart: function(a) {

this.start = {

pageX: a.touches[0].pageX

pageY: a.touches[0].pageY

time: Number(new Date())

};

// console.log(this.start)

this.isScrolling = undefined;

this.deltaX = 0;

this.element.style.MozTransitionDuration = this.element.style.webkitTransitionDuration = 0;

a.stopPropagation()

}

onTouchMove: function(a) {

if (a.touches.length > 1 || a.scale && a.scale !== 1) {

return

}

this.deltaX = a.touches[0].pageX - this.start.pageX;

if (typeof this.isScrolling == "undefined") {

//判断是横向还是树向滑动

this.isScrolling = !!(this.isScrolling || Math.abs(this.deltaX) < Math.abs(a.touches[0].pageY - this.start.pageY))

}

if (!this.isScrolling) {

a.preventDefault();

clearTimeout(this.interval);

this.deltaX = this.deltaX / ((!this.index && this.deltaX > 0 || this.index == this.length - 1 && this.deltaX < 0) ? (Math.abs(this.deltaX) / this.width 1) : 1);

this.element.style.MozTransform = this.element.style.webkitTransform = "translate3d(" (this.deltaX - this.index * this.width) "px 0 0)";

a.stopPropagation()

}

}

onTouchEnd: function(c) {

var b = Number(new Date()) - this.start.time < 250 && Math.abs(this.deltaX) > 20 || Math.abs(this.deltaX) > this.width / 2

a = !this.index && this.deltaX > 0 || this.index == this.length - 1 && this.deltaX < 0;

if (!this.isScrolling) {

this.slide(this.index (b && !a ? (this.deltaX < 0 ? 1: -1) : 0) this.speed)

}

c.stopPropagation()

}

};

//开始调用插件

//document.getElementById('nav')是直接获取nav菜单

var slider=new Swipe(document.getElementById('nav') {speed:300 auto:0 width:100 col:4 });

</script>

</body>

</html>

手机下拉菜单栏变成网页(手机网站顶部滑动菜单栏)(3)

大家有什么不懂的欢迎下面留言

猜您喜欢: