JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

var moon = document.getElementById("moon"),

parc = document.getElementById("perc"),

audio = document.getElementById("audio"),

dragging = false,

radius = 75,

area = Math.PI * radius * radius,

offs = [0, 0];

function init() {

moon.addEventListener("mousedown", selectMoon);

moon.addEventListener("touchstart", selectMoon);

document.body.addEventListener("mousemove", moveMoon);

document.body.addEventListener("touchmove", moveMoon);

document.body.addEventListener("mouseup", dropMoon);

document.body.addEventListener("touchend", dropMoon);

setMoonData(window.innerWidth / 2 + radius * 2.5, window.innerHeight / 2);

audio.play();

}

function selectMoon(evt) {

dragging = true;

var coords = getCoords(evt),

bcr = moon.getBoundingClientRect();

offs = [coords[0] - bcr.left - radius, coords[1] - bcr.top - radius];

}

function moveMoon(evt) {

if (!dragging)

return;

var coords = getCoords(evt);

setMoonData(coords[0] - offs[0], coords[1] - offs[1]);

}

function setMoonData(x, y) {

moon.style.left = x / window.innerWidth * 100 + "%";

moon.style.top = y / window.innerHeight * 100 + "%";

var offset = Math.hypot(x - window.innerWidth / 2, y - window.innerHeight / 2),

sector = Math.acos((offset / 2) / radius) / Math.PI,

triangle = Math.sqrt(radius * radius - offset * offset / 4) * (offset / 2),

overlap = (area * sector - triangle) * 2 / area || 0,

opacity = Math.max(400 - offset, 0) / 1000,

expOverlap = Math.pow(overlap, 4);

//Bling bling

moon.style.boxShadow = "inset " + (x - window.innerWidth / 2) / 10 + "px " + (y - window.innerHeight / 2) / 10 + "px 50px rgba(255, 255, 119, " + opacity + ")";

moon.style.background = "hsl(194, 56%, " + (1 - expOverlap) * 60 + "%)";

perc.innerHTML = "Volume: " + (overlap * 100).toPrecision(4) + "%";

document.body.style.background = "hsl(" + (194 + Math.floor(166 * expOverlap)) + ", 66%, " + (1 - expOverlap) * 50 + "%)";

//Oh yeah, set the volume, I guess.

audio.volume = overlap;

}

function dropMoon() {

dragging = false;

}

function getCoords(evt) {

return [(evt.touches || [evt])[0].clientX, (evt.touches || [evt])[0].clientY];

}

Math.hypot = function(a, b) {

return Math.sqrt(a * a + b * b);

};

init();

html鼠标滑过带音效,HTML5带音效的交互式日食动画相关推荐

  1. php超链接鼠标滑动加下划线,打造与众不同的鼠标滑过超链接下划线动画效果

    众所周知,超链接元素在默认情况下鼠标滑过时会出现一条下划线.默认的超链接下划线动画十分的生硬,我们可以通过一些简单的处理,来制作出带平滑过渡效果的超链接下划线动画效果. 先来体验一下这个超链接动画的效 ...

  2. CSS3扇形动画菜单 鼠标滑过扇形展开动画

    详细内容请点击 我们之前已经分享过很多CSS3菜单了,很多都比较实用,有部分CSS3菜单外观比较炫酷.今天要分享的这款CSS3菜单外观是扇形的,并且在鼠标滑过菜单时,扇形菜单项将会以动画的方式展开,并 ...

  3. HTML霓虹灯闪光效果,带鼠标滑过特效的jQuery霓虹灯文字插件

    这是一款可以生成炫酷霓虹灯特效的jQuery插件.该霓虹灯特效使用CSS3 text-shadow属性来制作,在鼠标滑过文字时,还带有平滑变色效果. 使用方法 在页面中引入jquery和neon_te ...

  4. HTML5期末大作业:个人网站设计——彭于晏明星(15页)带特效 带登录 带轮播 带音乐 HTML+CSS+JavaScript 大学生毕设网页设计源码HTML (1)

    HTML5期末大作业:个人网站设计--彭于晏明星(15页)带特效带登录带轮播带音乐 HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作成品 ...

  5. HTML5期末大作业:个人主页网站设计——服装明星主页(7页)表格带留言板带音乐

    详情介绍 HTML5期末大作业:个人主页网站设计--服装明星主页(7页)表格带留言板带音乐HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作 ...

  6. HTML5期末大作业:个人网站设计——彭于晏明星(15页)带特效 带登录 带轮播 带音乐 HTML+CSS+JavaScript 大学生毕设网页设计源码HTML

    HTML5期末大作业:个人网站设计--彭于晏明星(15页)带特效带登录带轮播带音乐 HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作成品 ...

  7. 带音效的计算机软件,音效增强软件哪个好用?好用的音效增强软件推荐

    谈及音效增强软件,相信那些从事直播行业的朋友都不会觉得陌生,毕竟这类软件多用于在一些需要炒热气氛的场合产生声音特效或增强设备的音效.那么,音效增强软件哪个比较好用呢?针对这一问题,小编今天为大家带来了 ...

  8. HTML5带音乐手机摇一摇抽奖代码

    HTML5带音乐手机摇一摇抽奖代码 下载地址:https://www.yujianni.top/news/comp_artinfo.html?id=113

  9. 静态HTML网页设计作品 HTML5+CSS大作业——明星个人-赵丽颖(7页)带表单带音乐表格布局

    HTML5+CSS大作业--明星个人-赵丽颖(7页)带表单带音乐表格布局 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家居. 酒店. 舞蹈. 动漫. ...

最新文章

  1. 聂聪:数据科学让我为城市规划注入创新价值 | 优秀毕业生专访
  2. mysql与php驱动,用PHP和MySQL构建一个数据库驱动的网站(四)-PHP教程,PHP基础
  3. 云原生系列「四」我为啥不看好ServiceMesh?
  4. kali 安装volatility_volatility取证学习-linux
  5. android ios logo原型,iOS关于logo和LaunchImage处理
  6. Spring-Security 自定义Filter完成验证码校验
  7. $JavaScript(3)
  8. wget for windows 下载与安装
  9. 蓝桥杯 基础练习 字母图形
  10. sendRedirect的路径
  11. 一、JDK下载安装、eclipse下载安装(带资源)
  12. 华为助力“沙漠奇迹”成为高密互联的高尔夫球场
  13. 使用Mathcad解受迫振动微分方程并画图
  14. 为什么局域网需要https加密?如何选择内网SSL证书?
  15. 屏蔽所有统计代码(51.la cnzz 百度统计 谷歌分析师adsense、屏蔽淘宝客广告代码)的方法
  16. 3年磨一剑,谷歌VR工作室新游戏Cosmonious High解析
  17. 澤山咸 (易經大意 韓長庚)
  18. 这篇文章告诉你图片转语音免费软件有哪些?
  19. memcache学习
  20. 波导Z769手机java下载_手机指令秘籍传授

热门文章

  1. JavaScript函数setInterval()和setTimeout()正确的写法
  2. web视频播放插件:Video For Everybody
  3. 小白一枚。。。记录下这种构造函数
  4. 最正确的为GridView添加删除提示的方法(转)
  5. OpenGL ES与EGL的关系(二十一)
  6. FFmpeg之获取音视频信息(二十八)
  7. FFmpeg编码支持与定制(三)
  8. UE4之ACharacter移动人物并显示动画效果
  9. Abseil之New Join API
  10. 《算法图解》——数组和链表