js实现扇形旋转导航制作
2017-05-14 21:55
435 查看
今天用纯js给大家实现一个在网站上也比较常见的扇形旋转导航效果,上图:
当我们点击右下角的那个按钮时,左边的图标旋转“飞出”;
HTML代码:
CSS代码:
JS代码:
当我们点击右下角的那个按钮时,左边的图标旋转“飞出”;
HTML代码:
<div id="menu"> <!-- 飞出图标 --> <div id="list"> <img src="img/clos.png"> <img src="img/full.png"> <img src="img/open.png"> <img src="img/prev.png"> <img src="img/refresh.png"> </div> <!-- 主图标 --> <div id="home"></div> </div>
CSS代码:
*{ margin: 0; p 4000 adding: 0; } #menu{ width: 50px; height: 50px; position: fixed; right: 20px; bottom: 20px; } #list{ height: 42px; width: 42px; position: relative; margin: 4px; } #list img{ position: absolute; border-radius: 50%; left: 0; top: 0; transition: 0.5s all ease; } #home{ width: 50px; height: 50px; background: url(img/home.png) no-repeat; border-radius: 25px; position: absolute; left: 0; top: 0; transition: 1s; }
JS代码:
window.onload=function(){ var hom=document.getElementById("home"); var imgs=document.getElementById("list").getElementsByTagName("img"); var onOff=true; //设置旋转半径 var r=150; //点击图标图标先变大"消失"再"重现" for( var i=0;i<imgs.length;i++ ){ imgs[i].onclick=function(){ this.style.transition="0.3s" this.style.WebkitTransform=" scale(2) "; this.style.opacity="0"; addEnd( this,end); }; } function end(){ this.style.transition="0.3s"; this.style.WebkitTransform=" scale(1) "; this.style.opacity=1; removeEnd( this,end ); } hom.onclick=function(){ //点击主按钮逆时针旋转,图标"飞出" if( onOff ){ this.style.WebkitTransform="rotate(-720deg)"; for( var i=0;i<imgs.length;i++ ){ var olt=toLT(r,90/4*i); imgs[i].style.transition=0.3+i*0.1+"s"; imgs[i].style.left=-olt.l+"px"; imgs[i].style.top=-olt.t+"px"; imgs[i].style.WebkitTransform="rotate(-720deg)"; } }else{ //再次点击主按钮顺时针旋转,图标"收回" this.style.WebkitTransform="rotate(720deg)"; for( var i=0;i<imgs.length;i++ ){ imgs[i].style.transition=0.3+(imgs.length-1-i)*0.1+"s"; imgs[i].style.left=0+"px"; imgs[i].style.top=0+"px"; imgs[i].style.WebkitTransform="rotate(0deg)"; } } onOff=!onOff; } function addEnd( obj,fn ){ //transitionend在 CSS 完成过渡后触发事件. obj.addEventListener( 'WebkitTransitionEnd',fn,false ); obj.addEventListener( 'transitionend',fn,false ); } function removeEnd( obj,fn ){ obj.removeEventListener( 'WebkitTranstionEnd',fn,false ); obj.removeEventListener( 'transitonend',fn,false ); } function toLT( iR,iDeg ){ return { l:Math.round(Math.sin(iDeg/180*Math.PI)*iR),t:Math.round(Math.cos(iDeg/180*Math.PI)*iR)} } }
相关文章推荐
- JS实现悬浮导航的制作(附源码)--web前端
- js入门·表单元素(select下拉列表)制作二级联动菜单和网站导航 .txt
- js正则实现的密码框简单制作,还可以替换成自己想用得符号
- 基于JS的树形导航的实现
- js实现无限级树形导航列表
- Div+CSS+JS实现的树型下拉菜单导航
- JS实现全景图效果360度旋转
- JS+CSS实现漂亮实用的红色导航菜单
- js 函数 实现导航选项卡功能
- js+json用表格实现简单网站左侧导航
- 适用于商城JS实现的可折叠的商品分类导航
- 用js实现菜单导航功能
- 温习:DIV CSS JS 导航菜单制作
- 用js实现用回车键、ctrl键在文本框导航
- (js)用window.onload实现刷新页面的导航栏状态的切换
- 用js实现的比较经典实用的触发型导航菜单
- js 实现显示或关闭导航菜单
- 网站制作一 : 从简单做起,通过a属性实现导航图片切换
- 纯CSS无JS实现灰色下拉导航菜单代码
- asp.net利用.net控件实现下拉导航菜单的制作