質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

3547閲覧

斜めに傾けた要素を綺麗に無限ループさせたい

t-book

総合スコア29

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2015/06/25 08:13

編集2015/06/25 15:42

いつもお世話になっています。

回転させた要素を斜めに移動させたく、以下の計算式を使用することで上手くいきました。

lang

1 x += Math.cos(deg * Math.PI / 180) * 5; 2 y += Math.sin(deg * Math.PI / 180) * 5;

移動させる要素がある程度進んだところで、位置を初期の方に戻し無限ループしているような表現をしたいのですが、単純に初期値を入れるだけでは切り替わりの際にガクッとズレてしまいました。

どのようにしたら綺麗につながって、ループしているように見えますでしょうか。

補足

  • 要素は横長の画像です。
  • 画像を一つclone()して前方に横並びとして繋げています
  • 横スライダーの斜めバージョンのようなイメージです

アドバイスの程よろしくお願いいたします。

補足2

言葉では上手く説明できないと思うので、やりたいことを具体的にコードにしてみました。
https://jsbin.com/wosivi/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

「要素を A の位置から少しずつずらして行って B の位置まで行ったら、また A に戻す」のを
繰り返し、B から A に戻す時ガクッとしないで滑らかに見せたいということでしょうか。

滑らかに見せるには、B から A の移動を一気にしないで、逆方向に動かせばよいと思います。
+= を -= にすれば、逆方向に移動します。 * 5 の係数を大きくすれば、移動速度を速くできます。
例えば
x -= Math.cos(deg * Math.PI / 180) * 50;
とすれば、A → B の10倍の速さで B → A に移動します。

投稿2015/06/25 09:31

mie

総合スコア229

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t-book

2015/06/25 09:47

ありがとうございます! ちょっと言葉では上手く説明できませんでしたので、補足を追加してみました。 お手数ですが確認いただけますと幸いです!
mie

2015/06/26 05:34

すっかり勘違いしていました。ごめんなさい。 rossi46hiroさんも書いていらっしゃるように、-100という境界値が正しくないためです。 abcdefgabcdefg を画像と考えると abcdefgabcdefg abcdefgabcdefg abcdefgabcdefg とずらして行って abcdefgabcdefg まで来たら次は初期位置に戻す ★ abcdefgabcdefg ということですよね。この時の★の位置(x=-100)が正しくないと思います。 斜めになっていることを考慮して 境界値の値を定数 limit = -itemWidth / 2 * Math.cos(deg * Math.PI / 180 ) として if ( x > limit ) にするのが正しいと思います。 「変数を使って汎用性を持たせること」はよいことです。 -100とか *3 とか、実際の数値や文字列などをプログラムの中に書いてしまうのは ハードコーディングと言って(数値の場合はマジックナンバーとも言います) コーディングのお作法として”やってはいけないこと”の1つです。
mie

2015/06/26 05:41

スペース入れたのに、ずれていませんでした abcdefgabcdefg を画像と考えると . abcdefgabcdefg . . abcdefgabcdefg . . . abcdefgabcdefg とずらして行って(. は無視してください) . . . . . . . abcdefgabcdefg まで来たら次は初期位置に戻す ★ abcdefgabcdefg
t-book

2015/06/26 06:04

ありがとうございます! そうです!境界値を算出する方法が知りたかったのでした! 境界値を少しずつ調整していけばそのうちある程度自然なループができたので、どうやってその値を出したらよいものか、と思っていました ですがすみません、ご提示いただきました式を当てはめてみても、やはりガクッとなってしまうようです・・・。何か根本的に間違っているのでしょうか。 重ね重ねお手数をお掛けしますが、どうぞよろしくお願いいたします。 ↓コード直してみました。 https://jsbin.com/wosivi/
mie

2015/06/26 07:16

ちょっと間違っていました。 × 境界値の値を定数 limit = -itemWidth / 2 * Math.cos(deg * Math.PI / 180 ) として ではなくて、初期位置からの移動距離が itemWidth / 2 * Math.cos(deg * Math.PI / 180 ) となる点が境界値のはずです。 画像が傾いていないのであれば、画像の横幅の半分 itemWidth / 2 ですが 傾いているのでその分の係数 Math.cos(deg * Math.PI / 180 ) を掛けます。 初期位置から ↑ の距離移動した点 limit = 初期値 + itemWidth / 2 * Math.cos(deg * Math.PI / 180 ) が境界値です。 これでダメだったら、境界値以外の別の問題になってしまいます。 三角関数の基本なので、図を書いて考えてみるとわかりやすいと思います。
t-book

2015/06/26 08:21

うーん、思うようにいきません。おっしゃるとおり境界値以外の画像の切れ目とかせいかもしれません。もう少し自分なりに試してみます。 長々とお付き合いいただきありがとうございました!
guest

0

回転とか斜めとかちょっと???状態ですが、スライダーのようなものを画像でやる場合は、スライダー幅分画像が重複している必要がありますよ。

投稿2015/06/25 09:13

rossi46hiro

総合スコア992

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t-book

2015/06/25 09:47

ありがとうございます! ちょっと言葉では上手く説明できませんでしたので、補足を追加してみました。 お手数ですが確認いただけますと幸いです!
rossi46hiro

2015/06/25 11:54

loop()のif( x > -100 )をif( x > -65 )でガクッとならないかと思います。 ただこれだと画像の幅が足りないので、足らない分の画像を追加、その際、$target.width(itemWidth * 2)などはそのままで これでいけると思いますがいかがでしょうか?
t-book

2015/06/25 12:34

ありがとうございます! すみません。。2つほど質問よろしいでしょうか。 1. 足らない分の画像を追加とは、具体的にどこにどのような処理を行えばよろしいのでしょうか。。 2. x > -65の値ですが、こちら変数を使って汎用性を持たせることは可能でしょうか。 回転する角度や始まる位置を柔軟に変えたい、との意図がございます。 説明・理解力が足りずに申し訳ありません。 よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問