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

回答編集履歴

5

ランダム配置のサンプルコードを追加

2016/02/17 03:23

投稿

yamato_hikawa
yamato_hikawa

スコア2092

answer CHANGED
@@ -10,4 +10,71 @@
10
10
 
11
11
  JSにおけるランダム値の作り方はこちらを参考にどうぞ。
12
12
  min から max までの乱整数を返す関数を流用すれば、任意の幅のランダム値が作れるはずです。
13
- [Math.random()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/random)
13
+ [Math.random()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/random)
14
+
15
+ ランダム配置のサンプルコードです。
16
+ 幅960、高さ500の領域の中に収めるための座標の最小値と最大値についてですが、
17
+
18
+ top: 0〜500
19
+ left: 0〜960
20
+
21
+ となります。
22
+ なので、Math.randomのサンプルにある関数に対して、この範囲内の数値をランダムな数として出してくれるように引数を設定して実行すればいいです。
23
+
24
+ ここまでの処理では「被らないようにしたい」という点は満たしていません。
25
+ それについては、配置した後で「被っているかどうか」を判定し、「被っている場合はどうするか」という処理を追記する必要があります。
26
+
27
+ ```html
28
+ <div class="container">
29
+ <ul class="wordList">
30
+ <li>セリフサンプル1</li>
31
+ <li>セリフサンプル2</li>
32
+ </ul>
33
+ </div>
34
+ ```
35
+
36
+ ```css
37
+ .container {
38
+ margin: 0 auto;
39
+ width: 960px;
40
+ height: 500px;
41
+ background: #CCC;
42
+ position: relative;
43
+ }
44
+
45
+ .wordList > li {
46
+ background: #000000;
47
+ padding: 20px;
48
+ text-align: center;
49
+ color: #ffffff;
50
+ position: absolute;
51
+ }
52
+ ```
53
+
54
+ ```javascript
55
+ // 引数で渡した範囲内のランダムな整数を生成するための関数
56
+ var getRandomInt = function(min, max) {
57
+ return Math.floor(Math.random() * (max - min + 1)) + min;
58
+ };
59
+
60
+ // 要素の取得
61
+ var $container = $('.container'),
62
+ $wordList = $('.wordList').find('li'),
63
+ containerWidth = $container.width(),
64
+ containerHeight = $container.height();
65
+
66
+ console.log(containerWidth, containerHeight) // 960, 500
67
+
68
+ // liそれぞれをランダムに配置
69
+ $.map($wordList, function(item, index) {
70
+ var $item = $(item), // wordListのli要素が1番目から順に入ってきます
71
+ topPos = getRandomInt(0, containerHeight), // 0〜500の間でtopの座標を取得
72
+ leftPos = getRandomInt(0, containerWidth); // 0〜960の間でleft の座標を取得
73
+
74
+ // 取得したランダム座標を設定
75
+ $item.css({
76
+ top: topPos,
77
+ left: leftPos
78
+ });
79
+ });
80
+ ```

4

ランダム値の作り方

2016/02/17 03:23

投稿

yamato_hikawa
yamato_hikawa

スコア2092

answer CHANGED
@@ -6,4 +6,8 @@
6
6
  基本的にはこれらを1つ1つ片付けてゆけば出来ると思います。
7
7
  プラグインはjQueryだけで充分かもしれません。
8
8
 
9
- まずやるべきは、HTMLのコーディングと吹き出し部分のCSS設定ですね。
9
+ まずやるべきは、HTMLのコーディングと吹き出し部分のCSS設定ですね。
10
+
11
+ JSにおけるランダム値の作り方はこちらを参考にどうぞ。
12
+ min から max までの乱整数を返す関数を流用すれば、任意の幅のランダム値が作れるはずです。
13
+ [Math.random()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/random)

3

修正

2016/02/15 15:48

投稿

yamato_hikawa
yamato_hikawa

スコア2092

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  - ちらす部分の基本的なCSS設定(position:absoluteとか)
2
2
  - ふわふわさせる部分のアニメーション設定(上下動でよければCSS AnimationやCSS Transition)で出来そうです)
3
3
  1パターンだけだと統制が取れすぎるので、数パターン分設定を作ります。
4
- - ランダム配置のJS設定(divに対してCSSのleft, top値をランダムで設定する)
4
+ - ランダム配置のJS設定(それぞれの吹き出しに対してCSSのleft, top値をランダムで設定する)
5
5
 
6
6
  基本的にはこれらを1つ1つ片付けてゆけば出来ると思います。
7
7
  プラグインはjQueryだけで充分かもしれません。

2

追記

2016/02/15 13:25

投稿

yamato_hikawa
yamato_hikawa

スコア2092

answer CHANGED
@@ -4,4 +4,6 @@
4
4
  - ランダム配置のJS設定(divに対してCSSのleft, top値をランダムで設定する)
5
5
 
6
6
  基本的にはこれらを1つ1つ片付けてゆけば出来ると思います。
7
- プラグインはjQueryだけで充分かもしれません。
7
+ プラグインはjQueryだけで充分かもしれません。
8
+
9
+ まずやるべきは、HTMLのコーディングと吹き出し部分のCSS設定ですね。

1

修正

2016/02/15 13:24

投稿

yamato_hikawa
yamato_hikawa

スコア2092

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  - ちらす部分の基本的なCSS設定(position:absoluteとか)
2
- - ふわふわさせる部分のアニメーション設定(上下動でよければCSS AnimationやCSS Transition)で出来そう。1パターンだけだと統制が取れすぎるの、数パターン分設定を作りま
2
+ - ふわふわさせる部分のアニメーション設定(上下動でよければCSS AnimationやCSS Transition)で出来そうです
3
+ 1パターンだけだと統制が取れすぎるので、数パターン分設定を作ります。
3
4
  - ランダム配置のJS設定(divに対してCSSのleft, top値をランダムで設定する)
4
5
 
5
6
  基本的にはこれらを1つ1つ片付けてゆけば出来ると思います。