网络编程
位置:首页>> 网络编程>> JavaScript>> js实现圆形菜单选择器

js实现圆形菜单选择器

作者:liuhao9999  发布时间:2023-09-23 19:50:54 

标签:js,菜单,选择器

本文实例为大家分享了js实现圆形菜单选择器的具体代码,供大家参考,具体内容如下

js实现圆形菜单选择器

js实现圆形菜单选择器

代码:


<head>
 <style>
   .mask{
     position: absolute;
     width: 502px;
     height: 252px;
     left:300px;
     top:350px;
     background: white;
     z-index: 999;
   }
   .con {
     width: 500px;
     height: 500px;
     overflow: hidden;
     position: absolute;
     border-radius: 100%;
     border: 1px solid black;
     user-select: none;
     cursor: pointer;
     left: 300px;
     top: 100px;
   }

.con>div {
     position: absolute;
     width: 250px;
     height: 250px;
     /* border:1px solid black; */
     top: 0;
     left: 125px;
     text-align: center;
     font-size: 16px;
     transform-origin: bottom center;
   }

.con1 {
     width: 400px;
     height: 400px;
     /* background: yellow; */

overflow: hidden;
     position: absolute;
     border-radius: 100%;
     border: 1px solid black;
     user-select: none;
     cursor: pointer;
     left: 350px;
     top: 150px;
   }

.con1>div {
     position: absolute;
     width: 200px;
     height: 200px;
     /* border:1px solid black; */
     top: 0;
     left: 100px;
     text-align: center;
     font-size: 16px;
     transform-origin: bottom center;
   }
 </style>
 <meta name="viewport"
   content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
</head>

<body>
 <div class="mask"></div>
 <div class="con">
 </div>
 <div class="con1">
 </div>
 <script>
   conRender();
   conRender1();
   function conRender() {
     var con = document.querySelector(".con");
     var len = 16;
     var deg = 360 / len;
     for (var i = 0; i < len; i++) {
       var dom = document.createElement("div");
       dom.style.transform = "rotate(-" + i * deg + "deg)";
       dom.innerHTML = "财务管理" + i;
       dom.setAttribute("index", i)
       con.appendChild(dom)
     }
     var mouseDown = false;
     var startX = 0;
     var startY = 0;
     var endX = 0;
     var endY = 0;
     var rotate = 0;
     con.addEventListener("mousedown", function (e) {
       mouseDown = true;
       startX = e.pageX;
       startY = e.pageY;
     }, false);
     con.addEventListener("mousemove", function (e) {
       if (mouseDown) {
         endX = e.pageX;
         endY = e.pageY;
         var distance = Math.sqrt(Math.pow((endX - startX), 2) + Math.pow((endY - startY), 2))
         if (endX - startX < 0 || endY - startY < 0) {
           distance = -distance
         }
         rotate += distance
         con.style.transform = "rotate(" + (rotate / 4) + "deg)";
         startX = e.pageX;
         startY = e.pageY;
         var index = Math.round((rotate / 4) / deg);
         var cons = document.querySelectorAll(".con>div")
         for (var i = 0, len = cons.length; i < len; i++) {
           cons[i].style.color = "black"
         }
         document.querySelector("div[index=\"" + index % len + "\"]").style.color = "red"
         document.querySelector(".con1").style.transform = "rotate(" + (rotate) + "deg)";
       }
     }, false);
     document.addEventListener("mouseup", function (e) { mouseDown = false; }, false);

}
   function conRender1() {
     var con = document.querySelector(".con1");
     var len = 13;
     var deg = 360 / len;
     for (var i = 0; i < len; i++) {
       var dom = document.createElement("div");
       dom.style.transform = "rotate(-" + i * deg + "deg)";
       dom.innerHTML = "财务管理" + i;
       dom.setAttribute("index1", i)
       con.appendChild(dom)
     }
     var mouseDown = false;
     var startX = 0;
     var startY = 0;
     var endX = 0;
     var endY = 0;
     var rotate = 0;
     con.addEventListener("mousedown", function (e) {
       mouseDown = true;
       startX = e.pageX;
       startY = e.pageY;
     }, false);
     con.addEventListener("mousemove", function (e) {
       if (mouseDown) {
         endX = e.pageX;
         endY = e.pageY;
         var distance = Math.sqrt(Math.pow((endX - startX), 2) + Math.pow((endY - startY), 2))
         if (endX - startX < 0 || endY - startY < 0) {
           distance = -distance
         }
         rotate += distance
         con.style.transform = "rotate(" + (rotate / 4) + "deg)";
         startX = e.pageX;
         startY = e.pageY;
         var index = Math.round((rotate / 4) / deg);
         var cons = document.querySelectorAll(".con1>div")
         for (var i = 0, len = cons.length; i < len; i++) {
           cons[i].style.color = "black"
         }
         document.querySelector("div[index1=\"" + index % len + "\"]").style.color = "red"
       }
     }, false);
     document.addEventListener("mouseup", function (e) { mouseDown = false; }, false);

}
 </script>
</body>

</html>

来源:https://blog.csdn.net/liuhao9999/article/details/110470057

0
投稿

猜你喜欢

  • 什么是存储过程呢?定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程
  • 一。存储过程的创建和使用1.创建程序包,并在程序中创建存储过程create or replace PACKAG
  • 1、存储过程基本语法: create procedure sp_name() begin ...... end; 2、如何调用: call
  • 这个话题是应腾讯ISD同仁之邀在WebReBuild三周年交流会上做的主题分享。由于临场等原因有些问题当时没有讲明白,回来后按原有思路形成了
  • 如何制作一个倒计时的程序?    见下:<%CountdownDate = #1/1
  • 1,exists和in的理解exists:如果子查询中包括某一行,那么就为TRUE in:如果操作数为TRUE等于表达式列表中的一个,那么就
  • 最近在内部讨论关于”完美三栏”的话题,看到一篇”In Search of the Holy Grail“,相当的好.故此翻译之.In Sea
  • 分享几个字体设计:1.巧克力2.绿野邂逅是人间四月天3.去年花开的时候4.仲夏梦之夜5.芊芊茉莉香6.玫瑰人生7.真情告白8.遮掩锋芒
  • 写这个的目地,主要是系统理下目前产品设计的流程,提醒自己尽量去避免一些常见的问题,也能让大家系统的了解天极网的产品设计流程。当然,不保证任何
  • Usuage:  go run kNN.go --file="data.txt"关键是向量点的选择和阈值的判定
  • 最近对H1的讨论很多(在文章内容页中),大致有以下两种情况:H1应该用于文章的标题上H1应该用于站点的标题上相信大多数人都偏向第一种方式:用
  • 1、图片防盗链在一些大型网站中,比如百度贴吧,该站点的图片采用了防盗链的规则,以至于使用下面代码会发生错误。简单代码:<!DOCTYP
  • 昨天ie8正式发布了,偶也去下载了一个,感觉很爽, 还在美的时候,突然发现很多网页都出问题,更可气的是自己的网站编辑器eWebEditor也
  • 在ASP编程中,身份认证可以说是常要用到的。但怎么样才能做到认证的安全呢?表单提交页面:sub.htm     
  • 1. 确认已经安装了NT/2000和SQL Server的最新补丁程序,不用说大家应该已经安装好了,但是我觉得最好还是在这里提醒一下。2.
  • 1、关于页面元素的引用通过jquery的$()引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且
  • 很简单,我们用两个文件就可以实现这一功能:login.htm<% @ Language=JavaScript&nb
  • 当1980年Three Rivers公司第一次推出图形用户界面Perq,产生GUI这个概念的时候,不知道他们有没有想过今天图形界面设计竟然会
  • 最近一直在做Dnn模块的开发,过程中碰到这么一个问题,需要同时插入N条数据,不想在程序里控制,但是SQL Sever又不支持数组参数.所以只
  •     这段程序的方法是利用XMLHTTP来读取腾讯网站的相应HTML代码获取QQ的头像,根据这个想法,我们还
手机版 网络编程 asp之家 www.aspxhome.com