本篇文章将通过对css3中的2d变化以及过渡进行分析设计

先放上最终效果图

               

功能实现:1.给扇形home元素设置点击事件并添加2d旋转

     2.给导航栏设置2d旋转 并通过三角函数计算出各个导航位置

     3.设置导航单击事件 并添加过渡结束事件transitonend  完成点击放大并恢复的动画

注  意:transitonend事件需要及时移除 假如没有内部自杀

     则这个事件一直伴随着点击时间存在 则会导致其进行其他过渡时仍会触发

    导致右图变化

                          在过渡结束后存在多余操作

        正确示意应是

                            内容清晰  无多余操作

css部分代码

	*{
padding: 0;
margin: 0;
} body,html{
height: 100%;
overflow: hidden;
} #wrap{
position: absolute;
bottom: 8px;
right: 8px;
width:50px ;
height: 50px;
/* background: pink; */ } #wrap > #content>img{
position: absolute;
left: 0;
top: 0;
margin: 4px;
border-radius:50% ; }
#wrap > #content{
height: 100%;
} #wrap > #home{
/* margin-top: 100px; */
position: absolute;
z-index: 1;
/* height: 50px */
background: url(img/home.png) no-repeat;
width: 100%;
height: 100%;
border-radius:50% ;
top: 0;
left: 0; transition: 1s; }
/* #wrap > #home:hover{
transform: rotate(720deg);
}
*/

  html代码如下

<div id="wrap">
<div id="content">
<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>

  JavaScript代码如下

	<script type="text/javascript">
window.onload=function(){
  var c=130;
  var home=document.getElementById("home");
  var imgs=document.querySelectorAll("#wrap > #content > img");
  var flag=true;
  home.onclick = function(){     function fun(){
this.style.transition=".1s";
this.style.transform="rotate(-720deg) scale(1) ";
this.style.opacity="1";
this.removeEventListener("transitionend",fun);
}
//给所有的img绑定点击属性 需要遍历
for(i=0;i<imgs.length;i++){
imgs[i].addEventListener("click",function(){
this.style.transform="rotate(-720deg) scale(1.5) ";
this.style.transition=".4s";
this.style.opacity="0.1";
this.addEventListener("transitionend",fun);
});
//在运行结束后希望能触发一个新的事件 并移除它
//imgs[i].addEventListener("transitionend",fun);
} if(flag){  var distance=getpoint(c,90*i/(imgs.length-1));
this.style.transform= "rotate(-720deg)";
for(i=0;i<imgs.length;i++){
//因为是逐个出现 所以要算不同的过渡延迟 还要有空格进行区分两个属性
imgs[i].style.transition=".5s "+(i*0.1)+"s ";
//因为有旋转
imgs[i].style.transform=" rotate(-720deg) scale(1)";
imgs[i].style.left = -distance.left+"px";
imgs[i].style.top = -distance.top+"px";
}
}else{
for(i=0;i<imgs.length;i++){
imgs[i].style.transition=".5s "+((imgs.length-1-i)*0.1)+"s ";
imgs[i].style.transform=" rotate(0) scale(1)";
imgs[i].style.left = "0px";
imgs[i].style.top = "0px";
}
this.style.transform= "rotate(0deg)";
}
flag=!flag;
}
} //已知一条边和一个角 求它的x y
function getpoint(c,deg){
                   //角度转弧度公式  三角函数
var left=Math.round(c*Math.sin(deg*Math.PI/180));
var top=Math.round(c*Math.cos(deg*Math.PI/180));
return {
left:left,
top:top
}
} </script>

  

扇形导航 css3的更多相关文章

  1. CSS3_扇形导航_transitionend 事件

    扇形导航 圆形按钮,切换一系列图片导航的显示与隐藏. 如果涉及过渡动画,定位的 top 和 left 必须写 Math.sin(弧度) 一圈弧度 = 2π,一圈角度 = 360 弧度 = (deg*2 ...

  2. 原生js实现扇形导航以及动画的坑

    第一次发博客,有点紧张.首先来一张效果图. 主要是实现了点击右下角的风扇按钮实现了: 导航栏的开启与关闭,中间伴随着 transition过渡以及transform的2D动画. 上源码: <!D ...

  3. CSS3 教程

    CSS3 教程 CSS 用于控制网页的样式和布局. CSS3 是最新的 CSS 标准. 本教程向您讲解 CSS3 中的新特性. 开始学习 CSS3!  更多:http://www.runoob.com ...

  4. 基于CSS3金属风格下拉菜单

    基于CSS3金属风格下拉菜单,css,金属风格,下拉菜单,CSS3导航. css3按钮:http://www.huiyi8.com/css3/anniu/

  5. css3立体旋转菜单

    css3立体旋转菜单,css3,3D,立体旋转,立体菜单,菜单导航,css3立体旋转菜单是一款纯css3实现的三维立体旋转导航菜单. 源码下载页:http://www.huiyi8.com/sc/71 ...

  6. CSS3实现扇形动画菜单特效

    CSS3实现扇形动画菜单特效 效果图: 代码如下,复制即可使用: <!DOCTYPE html> <html> <head> <meta charset=&q ...

  7. css3制作扇形菜单

    工作中网页中有一个扇形的导航菜单,以前没有接触过,参考了http://www.w3cplus.com/css3/building-a-circular-navigation-with-css-tran ...

  8. css3圆环百分比,菜单栏定位导航

    前段时间,社区个人中心改版,看了下设计图,当时隐约感觉到有两个地方(圆环百分比,菜单栏定位导航)比较麻烦.设计图大致如下: 首先看圆环百分比,网上的做法大致分两种,一种是用了CSS3中的transfo ...

  9. 使用CSS3制作导航条和毛玻璃效果

    导航条对于每一个Web前端攻城狮来说并不陌生,但是毛玻璃可能会相对陌生一些.简单的说,毛玻璃其实就是让图片或者背景使用相应的方法进行模糊处理.这种效果对用户来说是十分具有视觉冲击力的. 本次分享的主题 ...

随机推荐

  1. 如何使用IDEA运行 一个分布式的项目

    前一段时间,曾不止一次的尝试过,如何把一个分布式的maven项目,用IDE运行起来.连续的几次失败,让我明白之前启动的方式是有问题的.因此把正确的启动方式整理了一下 .引以为戒 一.起初启动失败的原因 ...

  2. C++入门经典-例3.24-找图书的位置

    1:运行代码: // 3.24.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...

  3. 解决Cannot change version of project facet Dynamic Web Module to 3.1

    Open web.xml from project structure http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version= ...

  4. 第七周总结&第五次实验报告

    学习总结 这周我们加深了对抽象类与接口的学习,获得的知识点也比上周多了许多,抽象类与接口很相似,就比如别人还没有做完的是交给你来做,而他那些样式都做好了,你只需要完善即可 但也有不同点. 区别点 抽象 ...

  5. xgboost原理与实战

    目录 xgboost原理 xgboost和gbdt的区别 xgboost安装 实战 xgboost原理 xgboost是一个提升模型,即训练多个分类器,然后将这些分类器串联起来,达到最终的预测效果.每 ...

  6. android 注入框架 DI

    android 主要注入框架以及github如下: (1)Roboguice https://github.com/roboguice/roboguice (2)Butterknife https:/ ...

  7. [学习笔记] CNN与RNN方法结合

    CNN与RNN的结合 问题 前几天学习了RNN的推导以及代码,那么问题来了,能不能把CNN和RNN结合起来,我们通过CNN提取的特征,能不能也将其看成一个序列呢?答案是可以的. 但是我觉得一般直接提取 ...

  8. 4.数据挖掘的数据仓库与OLAP技术

    1.什么是数据仓库 面向主题的.集成的.时变的.非易失的 2.数据仓库和异种DBMS 3.OLTP vs OLAP 4.为什么建立分离的数据仓库? 5.多维数据模型(数据仓库的概念建模)三类度量 4. ...

  9. save——model模块保存和载入使用简单例子

    https://www.w3xue.com/exp/article/201812/10995.html =====1====实践模型存入 import tensorflow as tf from te ...

  10. Python中的IndentationError解决

    用Python .join拼接SQL的时候遇到一个错误:TypeError: cannot concatenate 'str' and 'dict' objects,检查了一下确认是join了两个类型 ...