【CSS3练习】在圆上旋转的菜单

先上效果图:就是用js计算每个小圆的位置分布到大圆的边线上,然后在让大圆旋转起来。

线上查看地址:http://dtdxrk.github.io/game/css3-demo/diffuse.html

用到了上学时基础的数学知识

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>diffuse</title>
	<style>
		*{margin:0;padding:0;list-style: none;line-height: 1;}
		/* 原始样子 */
		#diffuse{width: 300px;height: 300px;border:1px solid #ccc;margin:150px auto;border-radius: 999px;position: relative;}
		.diffuse-btn{transition: 0.2s ease-out;opacity: 1;z-index: 1; cursor: pointer;  position: absolute;top:50%;left:50%; transform: translate(-50%,-50%); text-align: center;display: block;border-radius: 999px;background-color: #f60;color: #fff;width: 100px;height: 30px;line-height: 30px;}
		.diffuse-list {position: relative;width: 300px;height: 300px;transform:scale(0);transition: 0.3s ease-out;opacity: 0;}
		.diffuse-list li{text-align: center;position: absolute;display: block;border-radius: 999px;background-color: #f60;color: #fff;width: 30px;height: 30px;line-height: 30px;transform: translate(-50%,-50%);}

		/* 动画样子 */
		.diffuse-on{-webkit-animation:rotate 10s linear 1s infinite;}
		.diffuse-on .diffuse-btn{opacity: 0;}
		.diffuse-on .diffuse-list{transform:scale(1,1);opacity: 1;z-index: 2;}

		@-webkit-keyframes rotate{
			0%   {transform:rotate(0deg);}
			100%   {transform:rotate(360deg);}
		}
	</style>
</head>
<body>
	<div id="diffuse">
		<div class="diffuse-btn" id="diffuse-btn">Click Me</div>
		<ul class="diffuse-list">
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
		</ul>
	</div>

	<script>
	/*点击开始动画*/
	document.getElementById(‘diffuse-btn‘).onclick = function(){
		document.getElementById(‘diffuse‘).className = ‘diffuse-on‘;
	};

	/*把圆点绘制到圆线上*/
	(function(window){
		var x,y,
			lis = document.querySelectorAll(‘.diffuse-list li‘),
			r = 150,/*圆半径*/
			gap = 360/lis.length, /*夹角度数*/
			radian=Math.PI/180;/*弧度*/

		for (var i = lis.length - 1; i >= 0; i--) {
			/*计算x,y*/
			x = r+r*(Math.cos(gap*i*radian));/*x= r+rcos0*/
			y = r+r*(Math.sin(gap*i*radian));/*y= r+rsin0*/

			lis[i].style.left = x+‘px‘;
			lis[i].style.top = y+‘px‘;
		};
	}(window));
	</script>
</body>
</html>

  

时间: 2024-08-27 01:08:08

【CSS3练习】在圆上旋转的菜单的相关文章

CSS3 skew倾斜、rotate旋转动画

css3出现之前.我们实现一个对象的一组连续动画须要通过JavaScript或Jquery编写,脚本代码较为复杂: 若须要实现倾斜.旋转之类的动画难度将更高(我还没试过用JavaScript或Jquery怎样实现),并且即使能实现预计花的时间代价及维护难度是非常大的,非常多时候仅仅能依靠绘图工具制作此类动画文件: 有时候在想假设不用脚本语言,也不用绘图工作制作动画文件.就能在网页上实现倾斜.旋转之类的动画效果多好. 近期挤出一些业余时间学习CSS3,当中就包括非常多动画演示样例,花了点时间学习和

iOS 程序进入后台,包含用户上拉快捷菜单导致程序失去活跃的研究

今日在使用某App时候,突然发现上拉菜单.程序视频扔在播放,咦!引起了我的兴趣. 首先,列出两个方法, 第一个方法是AppDelegate的代理.当程序进入后台时候调用 - (void)applicationDidEnterBackground:(UIApplication *)application NS_AVAILABLE_IOS(4_0); 第二个方法是.注冊系统通知,name是UIApplicationWillResignActiveNotification,当程序释放活跃的时候调用.

css3动画应用-音乐唱片旋转播放特效

css3动画应用-音乐唱片旋转播放特效 核心点: 1.设置图片为圆形居中,使图片一直不停旋转. 2.文字标题(潘玮柏--反转地球)一直从左到右不停循环移动. 3.点击图标,音乐暂停,图片停止旋转:点击图片,音乐播放,图片开始旋转. 1.动设置图片为圆形居中,使图片一直不停旋转. 核心代码: #xuanzhuan{ -webkit-animation: play 10s linear infinite; -moz-animation: play 10s linear infinite; anima

iOS 程序进入后台,包括用户上拉快捷菜单导致程序失去活跃的研究

今日在使用某App时候,突然发现上拉菜单,程序视频扔在播放,咦!引起了我的兴趣. 首先,列出两个方法, 第一个方法是AppDelegate的代理,当程序进入后台时候调用 - (void)applicationDidEnterBackground:(UIApplication *)application NS_AVAILABLE_IOS(4_0); 第二个方法是,注册系统通知,name是UIApplicationWillResignActiveNotification,当程序释放活跃的时候调用.

BZOJ 1041: [HAOI2008]圆上的整点【数论,解方程】

1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4210  Solved: 1908[Submit][Status][Discuss] Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Sample Input 4 Sample Output 4 HINT 科普视频 So

纯CSS3实现宽屏二级下拉菜单

今天我们要来分享一款基于纯CSS3的宽屏二级下拉菜单,这款菜单的子菜单在展开的时候是很宽敞的,菜单项中可以自定义格式的内容,非常实用,也很大气.由于是用纯CSS3实现,所以这款下拉菜单不用运行Javascript,展示速度当然是非常快的. 在线预览   源码下载

BZOJ 1041 [HAOI2008]圆上的整点

1041: [HAOI2008]圆上的整点 Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Sample Input 4 Sample Output 4 鸣谢:http://blog.csdn.net/csyzcyj/article/details/10044629  http://hzwer.com/1457.html 这么一到水题竟然卡了我一晚上,想起来确

CSS3实现的横向二级下拉菜单代码实例

CSS3实现的横向二级下拉菜单代码实例:横向二级下拉菜单是非常常用的效果,例如很多网站的导航栏就是这样的二级下拉菜单效果,非常好用,本章节分享一段使用CSS3实现的下拉菜单,当然当下很多浏览器都不支持,不过相信用不了多久这种现状就会被改变.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content

2016HUAS_ACM暑假集训2L - Points on Cycle(圆上的点)

一个简单的几何题,自己在纸上列出方程解出结果的表达式,再用程序表达出来就行了. 大致题意:一个圆心在原点的圆,半径未知,现在给你圆上的一点,让你在这个圆上找到另外两点,使得这三点构成的三角形的周长最长. 样例输入:(第一行为一个整数N,表示后面有N组案例,每个案例给出一组圆上点的坐标) 2 1.500        2.000 563.585    1.251 样例输出:(其他两个点的坐标) 0.982 -2.299 -2.482 0.299 -280.709  -488.704  -282.8