扇形导航

圆形按钮,切换一系列图片导航的显示与隐藏。

如果涉及过渡动画,定位的 top 和 left 必须写

Math.sin(弧度)

  • 一圈弧度 = 2π,一圈角度 = 360
  • 弧度 = (deg*2π)/360 = (deg*π)/180
  • <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8" />
    <title>扇形导航</title> <style type="text/css">
    body {
    width: 100%;
    color: #000;
    background: #96b377;
    font: 14px Helvetica, Arial, sans-serif;
    } /**** Corner Nav ****/
    #corner_nav {
    position: fixed;
    bottom: 0px;
    right: 0px; width: 50px;
    height: 50px;
    padding: 1px 0 0 1px; background: #f000;
    } #corner_btn {
    position: absolute;
    top: 1px;
    left: 1px;
    z-index: 5; width: 49px;
    height: 49px;
    border-radius: 50%;
    background: url(./img/corner.png) no-repeat;
    transition: 1s all ease 0s;
    cursor: pointer;
    } #a_imgs {
    list-style: none;
    width: 42px;
    height: 42px;
    } #a_imgs img {
    display: block;
    border-radius: 50%; transition: 1s all ease 0s;
    opacity: 0.6;
    } #a_imgs li {
    position: absolute;
    top: 4px;
    left: 4px; }
    </style>
    </head> <body> <div id="corner_nav"> <div id="corner_btn"></div> <ul id="a_imgs">
    <li class="aImgLi"><a href="javescript:;"><img src="./img/clos.png" /></a></li>
    <li class="aImgLi"><a href="javescript:;"><img src="./img/full.png" /></a></li>
    <li class="aImgLi"><a href="javescript:;"><img src="./img/open.png" /></a></li>
    <li class="aImgLi"><a href="javescript:;"><img src="./img/prev.png" /></a></li>
    <li class="aImgLi"><a href="javescript:;"><img src="./img/refresh.png" /></a></li>
    </ul> </div> <!-- javascript 代码 -->
    <script type="text/javascript"> var cornerBtn = document.getElementById("corner_btn"); var lis = document.querySelectorAll("li.aImgLi");
    var navLength = 200; var isOpen = false;
    cornerBtn.onclick = function(){
    if(isOpen){
    // 收回
    cornerBtn.style.transform = "rotate(0deg)"; for(i=0; i<lis.length; i++){
    lis[i].style.transition = 0.5+"s "+0.1*(lis.length-1-i)+"s"; lis[i].style.left = 4+"px";
    lis[i].style.top = 4 +"px"; lis[i].style.transform = "rotate(0deg)";
    }
    }else{
    // 释放
    cornerBtn.style.transform = "rotate(-360deg)"; var i = 0;
    for(i=0; i<lis.length; i++){
    lis[i].style.transition = 0.5+"s "+0.1*i+"s"; lis[i].style.left = -navLength*Math.sin( (90/(lis.length-1))*i*Math.PI/180 )+"px";
    lis[i].style.top = -navLength*Math.cos( (90/(lis.length-1))*i*Math.PI/180 )+"px"; lis[i].style.transform = "rotate(-720deg)";
    }; };
    isOpen = !isOpen;
    }; // 点击按钮: 按钮放大,透明度为 1
    var aImgs = document.getElementById("a_imgs");
    aImgs.onclick = function(e){
    e = e || window.event;
    var obj = e.target || e.srcElement; // 单独设置点击元素的样式: 透明度 放大
    if(obj.nodeName == "IMG"){
    obj.style.opacity = "1";
    obj.style.transform = "scale(1.5)"; // 在过渡结束和,缩小到原来大小
    // window.setTimeout(function(){
    // obj.style.transform = "scale(1)";
    // },1000); /**** transitionend 检测事件结束事件
    必须是 DOM2 级事件绑定 ****/
    /**** 1. 兼容性问题****/

    obj.addEventListener('transitionend', styleBack);
    obj.addEventListener('webkitTransitionEnd', styleBack); // 小驼峰命名法 function styleBack(){
    obj.style.transform = "scale(1)"; /**** 2. 解绑问题 PC 端流量不限量,无大影响
    移动端必须解绑 省流量
    因为事件存在,需要一定流量监控此事件,
    且无关触发需要消耗流量执行 ****/

    obj.removeEventListener('transitionend', styleBack);
    obj.removeEventListener('webkitTransitionEnd', styleBack); // 小驼峰命名法
    }; };
    }; // 鼠标离开,所有元素回到默认样式
    aImgs.onmouseleave = function(){
    var allImgs = document.getElementById("a_imgs").children;
    var i = 0;
    var theImg = null;
    for(i=0; i<allImgs.length; i++){
    theImg = allImgs[i].getElementsByTagName("img")[0];
    theImg.style.opacity = "0.6";
    };
    }; </script>
    </body>
    </html>

CSS3_扇形导航_transitionend 事件的更多相关文章

  1. 扇形导航 css3

    本篇文章将通过对css3中的2d变化以及过渡进行分析设计 先放上最终效果图                 功能实现:1.给扇形home元素设置点击事件并添加2d旋转 2.给导航栏设置2d旋转 并通过 ...

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

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

  3. JavaScript----分层导航 滚动事件

    分层导航 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  4. 简单二级导航JQ事件代码

    $(function()){ $("li").hover(function(){ $(this).children("dl").show() },functio ...

  5. jQuery导航切换功能

    Css ------------------------------------------------------------------------------------------------ ...

  6. Android导航栏ActionBar的具体分析

    尊重原创:http://blog.csdn.net/yuanzeyao/article/details/39378825 关于ActionBar,相信大家并不陌生,可是真正能够熟练使用的也不是许多,这 ...

  7. [JavaScript] JavaScript事件注册,事件委托,冒泡,捕获,事件流

    面试题 event 事件 事件委托是什么? 如何阻止事件冒泡,阻止默认事件呢? Javascript 的事件流模型都有什么? 事件绑定和普通事件有什么区别? Event 对象 Event 对象,当事件 ...

  8. 背水一战 Windows 10 (41) - 控件(导航类): Frame

    [源码下载] 背水一战 Windows 10 (41) - 控件(导航类): Frame 作者:webabcd 介绍背水一战 Windows 10 之 控件(导航类) Frame 示例Controls ...

  9. WP8.1学习系列(第十九章)——事件和路由事件概述

    我们将介绍在使用 C#.Visual Basic 或 Visual C++ 组件扩展 (C++/CX) 作为编程语言并使用 XAML 进行 UI 定义时,针对 Windows 运行时应用的事件的编程概 ...

随机推荐

  1. 面向对象之组合、封装、多态、property装饰器

    概要: 组合 封装 property装饰器 多态 Python推崇鸭子类型:解耦合,统一标准(不用继承) 1. 组合 继承:会传递给子类强制属性 组合:解耦合,减少占用内存.如:正常继承,如果一个班级 ...

  2. idea设置JVM运行参数

    对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式. 方式一 java程序运行时指定 -Dproperty=value 该参数通常用于设置系统级全 ...

  3. IIS版本号可以被识别 解决方案

    1.在IIS配置文件中进行修改. 借助IIS URL Rewrite Module,添加如下的重写规则: <rewrite> <allowedServerVariables> ...

  4. JN_0002:Win10禁止U盘拷贝文件的方法

    1,在电脑桌面使用快捷键win键+r唤出运行窗口,在搜索框中输入gpedit.msc,然后点击确定. 2,打开的本地组策略编辑器中依次点击展开计算机配置—管理模块—系统,在系统下找到并选中可移动存储访 ...

  5. [再寄小读者之数学篇](2014-11-02 Herglotz' trick)

    设 $f$ 是 $\bbR$ 上周期为 $1$ 的连续可微函数, 满足 $$\bee\label{141102_f} f(x)+f\sex{x+\frac{1}{2}}=f(2x),\quad\for ...

  6. [再寄小读者之数学篇](2014-06-23 积分不等式 [中国科学技术大学2013年高等数学B 考研试题])

    设 $f(x)$ 在 $[a,b]$ 上一阶连续可导, $f(a)=0$. 证明: $$\bex \int_a^b f^2(x)\rd x\leq \cfrac{(b-a)^2}{2}\int_a^b ...

  7. 使用node.js 脚手架搭建Vue项目

    1.安装node.js https://nodejs.org/zh-cn/ 下载安装node.js 在命令行测试 node -v 输出版本号说明安装成功 2.使用npm更新安装cpnm npm ins ...

  8. java获取当前运行的方法名称

    // 这种方式获取的话,数组的第一个元素是当前运行方法的名称,第二个元素是调用当前方法的方法名称 StackTraceElement[] stackTrace = new Exception().ge ...

  9. lucene学习的小结

    pom.xml设置 <dependency> <groupId>junit</groupId> <artifactId>junit</artifa ...

  10. 在右键菜单中加入BitLocker重新上锁功能

    当使用BitLocker给磁盘上锁后,可以通过命令:manage-bde -lock d: -forcedismount 将已经解锁的磁盘重新上锁,如果觉得每次都通过命令行写命令很麻烦,那可以通过修改 ...