$(function(){
$("#s2").click(function(){
$("#s4").animate({marginLeft:parseInt($("#s4").css("marginLeft"))-300+"px"},"slow","swing",
function(){
$("ul.s5:first").appendTo("#s4");
$("#s4").css("marginLeft","0px");
});
});
$("#s6").click(function(){
$("#s4").animate({marginLeft:parseInt($("#s4").css("marginLeft"))+200+"px"},"slow","swing",
function(){
$("ul.s5:lest").appendTo("#s4");
$("#s4").css("marginLeft","-300px");
});
});
});
左まわり?はできるんですが、逆方向がどうしてもできません。
animate({marginLeft:parseInt($("#s4").css("marginLeft"))+200+"px"},"slow","swing",
のぶぶんが実はよくわかってません。
+200+"px"の部分は回転させる方向なわけですが
だとすると、ある特定の位置までいったらappendなりprependがかかって
画像がお尻?につくという事なわけですが
逆方向はそうはならない。なぜなんだろうと納得できないわけです。
すいません。お願いします
No.1ベストアンサー
- 回答日時:
ご使用のライブラリの種類やHTNMLの構造が不明なので、まったくわかりませんが、当たるも八卦のエスパー推測で・・・
>のぶぶんが実はよくわかってません。
全体の仕組みをきちんと理解しましょう。(と言いながら、勝手な推測ですが。)
styleのmarginを変えることで要素を移動させてスライドしていると推測されます。300や200は移動量で現在の位置から相対的に計算しているのではないですか?
-300は左へ+200は右へとなると思いますが、なぜ絶対値が違うのかは質問者様にしかわかりません。
いずれにしろコールバックで最終的にmarginの値を調整していますので、現在位置からの指定をする必要もないように思えますが…
想像では、コードの前半は動作するけれど、後半部分が動作しないということでしょうか?
後半のコールバックで最後の子要素を先頭に移動し、leftの値を初期値に戻しているつもり思いますが、まずセレクタの:lestが違っていると思われます。また、appendTo()では最後に追加されるので結局なにもしません。先頭に移動する必要があるのではないでしょうか?
さらに、処理の順序を逆にしないと(移動させてからスライド)、スライド中は空白が見えていて、スライド終了時に要素が表示されることになると推測されます。
ざっと見ただけですが、アニメ処理の終了前にイベントが複数回発生した場合はどうなるんだろうか?
(キューに溜めておいてくれる方式なら良いですが、そのまま処理される場合は計算位置がずれそう…)
いちいち、要素を移動しないで最初に要素を一つ複製・追加しておいて、スライドのための値(例ではmargin)が常に一定範囲内にあるように制御しておくという方法もあると思います。
こちらのほうが、手順を気にする必要がありませんし、位置も単純にmodをとるだけですみますので、簡単といえば簡単かと。
まぁ、当たるも八卦なので、読み飛ばしてください。
この回答への補足
:lestが違っていると思われます。
このご指摘でばっちりできました。
後は位置の問題です。
一番よくわからないのが
margin:paseIntというの部分です。
のちにpxというのがでてきます。
paseIntは私の認識だと、文字つまり””の部分を数字として
とらえ時には計算をできるというのが認識です。
このプログラムの認識は私から見るとpxを
cssでいうところのpxという単位にする為にしているのでしょうか?
mariginLeftを二度しているところからすると・・
ほかの人のプログラムを参考にしてやってますので
よく解らないのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数でy=g(x)のgとは何の略です...
-
functionから別のfunctionを実...
-
idを使わずにonclickで自身の要...
-
jQueryの :not() .not() が有効...
-
jQueryでzipを解凍読み込みする...
-
jQueryの導入について
-
Javascriptの変数がうまく渡せ...
-
yuga.js 外部リンクは別ウイン...
-
JavaScript を使ってpkゲームを...
-
同じIDで定義した要素の配列を...
-
イベントが初めの一回しか起き...
-
ASP.NETのコントロールの値をJa...
-
jspからjavascriptの変数引継ぎ
-
C#テキストボックスの文字を配...
-
なぜmatchメソッドがエラーにな...
-
モーダルダイアログウィンドウ...
-
今度は全角が0.5で認識されてし...
-
パス付きサイトのjavascript解析
-
JavaScript window.openで開く...
-
class指定したHTML要素の背景色...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数でy=g(x)のgとは何の略です...
-
idを使わずにonclickで自身の要...
-
functionから別のfunctionを実...
-
jQueryの :not() .not() が有効...
-
処理前の「お待ちください」
-
jslintのエラーについて質問
-
XMLHttpRequestでキャッシュを...
-
クリックすると上に開くアコー...
-
コードをスマートにさせたい。
-
関数名をテキストから読み込む...
-
jqueryの変数を関数の外に出す方法
-
シューティングゲームの作り方
-
要素名がスペースを含む場合のj...
-
getElementByIdを使用したグロ...
-
XMLHttpRequestオブジェクトが...
-
jQueryが読み込めない
-
Ajaxでデータベース(PostgreSQL)
-
setTimeoutで、止まらない
-
jQueryでzipを解凍読み込みする...
-
CDの曲をケータイのSDに移す
おすすめ情報