teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

メニューの数を可変にし、円周上に乗るように修正

2015/04/07 06:58

投稿

kiri
kiri

スコア74

answer CHANGED
@@ -51,4 +51,72 @@
51
51
  </div>
52
52
  </body>
53
53
  </html>
54
+ ```
55
+
56
+ 追記します。先ほど操作をあやまって空の回答をしてしまいました、すみません。
57
+ var num がメニューの数を表しており、円周上になるように調整してみました。あとの細かい調整はしてみてください。
58
+ ```lang-html
59
+ <html>
60
+ <head>
61
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" type="text/javascript"></script>
62
+ <script>
63
+ var flg = false;
64
+ var num = 5;
65
+ $(document).ready(function() {
66
+ $('#menu').click(function() {
67
+ if (flg == false) {
68
+ $('#menus').css('visibility','visible');
69
+ var obj_rad = Math.ceil(180 / num);
70
+ var left = 0;
71
+ var top = 0;
72
+ var origin = -80;
73
+ for (var i = 0; i < num; i++) {
74
+ left = Math.cos((origin + (obj_rad * i)) * (Math.PI / 180)) * 100;
75
+ if (left < 0) left = 10;
76
+
77
+ top = Math.sin((origin + (obj_rad * i)) * (Math.PI / 180)) * 100;
78
+ $('#menu_'+i).animate({marginLeft:left+"px",top:top+"px"}, 1500);
79
+ }
80
+
81
+ flg = true;
82
+ }
83
+ else {
84
+ for (var i = 0; i < num; i++) {
85
+ $('#menu_'+i).animate({marginLeft:"0px",top:"0px"}, 0);
86
+ }
87
+ $('#menus').css('visibility','hidden');
88
+ flg = false;
89
+
90
+ }
91
+ });
92
+ });
93
+ </script>
94
+ </head>
95
+ <body>
96
+ <div id="menu_box" style="position:fixed;top:100px;">
97
+ <a id="menu">Menu</a>
98
+ <div id="menus" style="visibility:hidden;position:relative;">
99
+ <a href="#aa" id="menu_0" style="position:absolute;">
100
+ aa
101
+ </a>
102
+ <a href="#bb" id="menu_1" style="position:absolute;">
103
+ bb
104
+ </a>
105
+ <a href="#cc" id="menu_2" style="position:absolute;">
106
+ cc
107
+ </a>
108
+ <a href="#dd" id="menu_3" style="position:absolute;">
109
+ dd
110
+ </a>
111
+ <a href="#ee" id="menu_4" style="position:absolute;">
112
+ ee
113
+ </a>
114
+ </div>
115
+ </div>
116
+ <div style="height:1000px; width:100%;">
117
+ <div style="margin: 0 auto; text-align:center;">
118
+ </div>
119
+ </div>
120
+ </body>
121
+ </html>
54
122
  ```