css特效弧形菜单

弧度菜单说明

demo地址 :https://github.com/liu-bluesky/-menu_arc.git

  • $("#navs") 外曾大盒子
  • $("#navs li") 菜单显示盒子
    求x、y轴公式
 x1(x轴坐标) = x0 +半径 * cos(角度 * PI / 180) 
 y1(x轴坐标) = y0 + 半径 * sin(角度 * PI /180)
(function(){
	var ul=$("#navs"),li=$("#navs li"),i=li.length,n=i-1,r=300;
	ul.click(function(){
		$(this).toggleClass('active');

		if($(this).hasClass('active')){
			for(var a=0;a<i;a++){
				li.eq(a).css({
					'transition-delay':""+(50*a)+"ms",
					'-webkit-transition-delay':""+(50*a)+"ms",
					'-o-transition-delay':""+(50*a)+"ms",
					'transform':"translate("+(r*Math.cos(90/n*a*(Math.PI/180)))+"px,"+(-r*Math.sin(90/n*a*(Math.PI/180)))+"px",
					// '-webkit-transform':"translate("+(r*Math.cos(90/n*a*(Math.PI/180)))+"px,"+(-r*Math.sin(90/n*a*(Math.PI/180)))+"px",
					// '-o-transform':"translate("+(r*Math.cos(90/n*a*(Math.PI/180)))+"px,"+(-r*Math.sin(90/n*a*(Math.PI/180)))+"px",
					// '-ms-transform':"translate("+(r*Math.cos(90/n*a*(Math.PI/180)))+"px,"+(-r*Math.sin(90/n*a*(Math.PI/180)))+"px"
				});
			}
		}else{
			li.removeAttr('style');
		}
	});
})($);

代码解析关键内容xy

Math.cos求的是x轴
(r*Math.cos(90/n*a*(Math.PI/180)))
n :表示分了几份 这里就是把90度角份了 n份 即x轴坐标分了n个坐标点
Math.sin求的是y
(-r*Math.sin(90/n*a*(Math.PI/180)))
n :表示分了几份 这里就是把90度角份了 n份 即y轴坐标分了n个坐标点
y是负数 图像就在中心的右上
y是正数,图像就在右下
具体原因自己看 translate 原理

如何控制其实方向

    顺时针
    y = Math.sin(a)
    x = Math.cos(a)
    逆时针
    x = Math.sin(a)
    y = Math.cos(a)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值