• ベストアンサー

CSS transformで完了後戻らないように

タイトルの通りですが、transform: translateで移動後、完了イベントでjsの処理を呼んでいるのですが その後、移動のアニメーションが初期の位置に戻ってしまいます。 -webkit-transform: translate(100px , 0px); 戻らないようにするにはどうすれば良いでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.2

bind/unbindはもう古いのでon/offを使いましょう。 検証してないけど、 $("#pic").removeClass("trans"); が原因なんじゃないですかね? こちらは何のための処理ですか? また $("#pic").removeClass("trans"); $("#pic").attr('src', ''); は $("#pic").removeClass("trans").attr('src', ''); とつなげて書くことができます。

ekekojr
質問者

お礼

removeClass消したらうまくいきました! ありがとうございます。 bindもonに変更しました! ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.1

それは何かのタイミングでcssをリセットされていると思うんですが どのように書いているんでしょうか?

ekekojr
質問者

補足

ソース全てを掲載するのは難しいのですが、 大まかには下記のような感じで書いております。 アニメーション完了後にアップロードするようなイメージです。 JavaScript--------------------------------- $("#pic").unbind(animationEndEvt); $("#pic").bind(animationEndEvt, upload); $("#pic").addClass("trans"); function upload() { //アップロード処理(省略) $("#pic").removeClass("trans"); $("#pic").attr('src', ''); $("#file").val(""); alert('送信完了!'); window.location.reload(); //ページをリロード } CSS------------------------- #pic.trans{ -webkit-transform: translate(-100px,0px); -webkit-transition-timing-function:ease-in; -webkit-transition-duration:1.5s; }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • アニメーションのプログラムの挙動の意味

    @charset "utf-8"; .box { width: 80px; height: 80px; background: pink; animation-name: move-around; animation-duration: 4s; animation-iteration-count: infinite; } ここから意味を知りたい。 @keyframes move-around { 25% { transform: translate(100px, 0); } 50% { transform: translate(100px, 100px); } 75% { transform: translate(0, 100px); } } ここまで ▢ → ▢ ↑    ↓ ▢ ← ▢ このプログラムを実行すると。 四角がこのように移動するのですが 自分の考えていた命令文と違う気がするのですが ご教示お願いしたいです、宜しくお願いします。 因みにドットインストールのアニメーション編の問題です。

    • ベストアンサー
    • CSS
  • safariでのtransformを有効にさせたい

    webデザインについてです。 BODY <div id="wrap"> <main> <h1> <ruby> <span>題</span><rt>dai</rt>名<rt>mei</rt> </h1> <hr> <nav> #page2_INFO# #page4_MAIN# #blog1_LOG# </nav> </main> </div> CSS * { -webkit-box-sizing: border-box; box-sizing: border-box; } *:before,*:after { position: absolute; content: ""; } body { text-align: center; font-family: 'Lora','IPA 明朝'; font-size: 15px; letter-spacing: 1.5px; margin: 0 auto; animation: fadeIn 2s ease 0s 1 normal; -webkit-animation: fadeIn 2s ease 0s 1 normal; } @keyframes fadeIn { 0% {opacity: 0} 100% {opacity: 1} } @-webkit-keyframes fadeIn { 0% {opacity: 0} 100% {opacity: 1} } #wrap:after { background: url(画像url) right center; z-index: -9999; position: fixed; top: 0; left: 0; width: 100vw; height: auto; min-height:100vh; background-size: cover; } h1{ font-size: 60px; font-weight: normal; line-height: 1; letter-spacing: 4px; font-family: 'Lora','IPA 明朝'; text-align: center; margin: 0 auto; } h1 span { display: block; padding-top: 8px; transform: rotateY(180deg); -webkit-transform: rotateY(180deg); -webkit-transform: -webkit-translateY (180px); -webkit-backface-visibility: visible; backface-visibility: visible; } ruby rt { font-size: 8px; letter-spacing: 8px; line-height: 1; text-align: center; } nav{ text-align: center; } nav a{ font-size: 20px; font-family: Cinzel; line-height: 2; color: #000; text-align: center; background: url(画像url); background-size: 300px; padding: 2px; margin: 0 5px; } a{ background: rgba(255,255,255,0.5); color: #000; font-size: 10px; line-height: 14px; text-decoration: none; } main { background: rgba(255,255,255,0.9); padding: 5%; margin: 100px 0; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } main hr{ width: 70%; border: 0; height: 1px; background: #333; background-image: -webkit-linear-gradient(left, #ccc, #333, #ccc); background-image: -o-linear-gradient(left, #ccc, #333, #ccc); margin-top: 10px; } (サイトタイトルや画像url等を一部ぼかしています。web fontのコードは省略しています。) この状態で、chromeやfirefoxから閲覧すると、題名の題という文字がY軸180度回転(鏡文字のような状態)になっているのですが、なぜかsafariから確認すると題という文字がすっぽりと消えてしまいます。ルビ部分はそのまま消えていません。 safariからでも題の文字の部分が鏡文字のように見える状態で閲覧するにはどうしたら良いでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • CSS
  • cssのanimationの設定の仕方

    Animationの表示タイミングが合わないので教えてください。 今回初めてcssのanimationを使ってみました。 同時に、jQuery.BgSwitcher を使って背景画像5枚を5秒間づつ表示させてループさせています。(合計25秒間)そして、cssのanimation でテキストA,B,Cの3枚を25秒間表示させています。 表示タイミングは 【背景画像1を表示 テキストAを表示 テキストBを非表示 テキストCを非表示】 【背景画像2を表示 テキストAを非表示 テキストBを非表示 テキストCを非表示】 【背景画像3を表示 テキストAを非表示 テキストBを表示 テキストCを非表示】 【背景画像4を表示 テキストAを非表示 テキストBを非表示 テキストCを非表示】 【背景画像5を表示 テキストAを非表示 テキストBを非表示 テキストCを表示】 背景画像で使用しているjQuery.BgSwitcherの表示時間は1枚5秒です。5枚ですので25秒でループです。animationが適応されているテキストA,B,Cの animation-duration: 25s; にしています。 テキスト画像A,B,Cは表示されるタイミングではopacity:1 にしてそれ以外はopacity:0で非表示にして背景画像1,2,3とテキストA,B,Cとの表示タイミングが合わせたいです。 初めはタイミングよく背景画像とテキスト画像が表示されているのですが徐々に表示タイミングずれてしまい5分ぐらいするとanimationのテキストA,B,Cの表示タイミングが背景画像と大きくずれ、例えばテキストAが背景画像5で表示されるようになってしまいます。 jQuery.BgSwitcherでの背景画像5枚の1ループの時間は25秒。animationのテキストA,B,Cのanimation-duration: 25s; なのですが、徐々にずれてしまいます。 animation側の設定に問題があるかもしれませんので教えていただけないでしょうか? 現在のテストサイトは下記です。 http://cm-creation.net/yoshida/text-anime-test/index13.html どうぞよろしくお願いいたします。Cssとhtml設定は下記です。 ■cssの設定 .bg-slider { width: 99.1vw; height: 100vh; background-position:center center; background-size: cover; display: flex; justify-content: center; position: relative; } .textA { position: absolute;   top: 5%;    left:20%; animation-name:animation1; animation-duration:25s; animation-timing-function: ease-in-out; animation-delay: 0s;    opacity: 0;    animation-iteration-count: infinite; animation-direction: normal; animation-fill-mode: forwards; } .textB { position: absolute; top: 5%;    right:20%; animation-name:animation2; animation-duration:25s; animation-timing-function: ease-in-out; animation-delay: 0s;   opacity: 0;   animation-iteration-count: infinite; animation-direction: normal; animation-fill-mode: forwards; } .textC { position: absolute; top: 5%; animation-name:animation3; animation-duration: 25s; animation-timing-function: ease-in-out; animation-delay: 0s;     opacity: 0;    animation-iteration-count: infinite; animation-direction: normal; animation-fill-mode: forwards; } @keyframes animation1 { 0% { opacity: 0; transform: translate3d(0, 30px, 0);   } 5% { opacity: 1; transform: translate3d(0, 0, 0);    } 26% { opacity: 0; transform: translate3d(0, 0, 0); } 100% { opacity: 0; transform: translate3d(0, 0, 0); } } @keyframes animation2 { 0% { opacity: 0; transform: translate3d(0, 0px, 0); } 41% { opacity: 0; transform: translate3d(0, 30px, 0); }  45% { opacity: 1; transform: translate3d(0, 0, 0); } 66% { opacity: 0; transform: translate3d(0, 0px, 0); } 100% { opacity: 0; transform: translate3d(0, 0, 0); } } @keyframes animation3 { 0% { opacity: 0; transform: translate3d(0, 0px, 0); }   81% { opacity: 0; transform: translate3d(0, 30px, 0); } 85% { opacity: 1; transform: translate3d(0, 0, 0); }   101% { opacity: 0; transform: translate3d(0, 0px, 0); }  102% { opacity: 0; transform: translate3d(0, 0, 0); } } ■html <script> jQuery(function($) { $('.bg-slider').bgSwitcher({ images: image/main10.jpg','image/main11.jpg','image/main12.jpg','image/main13.jpg','image/main14.jpg'], // 切り替える背景画像を指定 interval: 5000, // 背景画像を切り替える間隔を指定 5000=5秒 loop: true, // shuffle: false, // effect: "fade", // エフェクトの種類をfade,blind,clip,slide,drop,hideから指定 duration: 500, // エフェクトの時間を指定します。 easing: "swing" // エフェクトのイージングをlinear,swingから指定 }); }); </script> <div class="container-fluid px-0 bg-slider " > <div class="textA"><img src="image/item8.png" class="img-fluid" alt=""/></div> <div class="textB"><img src="image/item9.png" class="img-fluid" alt=""/></div> <div class="textC"><img src="image/item10.png" class="img-fluid" alt=""/></div> </div>

    • ベストアンサー
    • HTML
  • CSS/HTML で画像 2枚重ねた上に文字。

    最近ホームページを作成しているのですが、画像 2 枚を重ねて、その上にリンク付きの文字を のせるにはどのようにしたらよいでしょうか。 CSS を構い始めたのは 1 週間程度なので、基礎的なこともわかってない部分があります。 いろいろ試して、(3)が近いような気がしますが、(1)、(2)に付け加える形でもよいので、 ご教授お願いします。 以下、私が試した 3 パターンの方法です。数値、画像は適当な値です。 (1) 画像 1 枚の上に文字を入れた形。※画像 2 枚目を重ねられませんでした。 --------------------------- --- CSS --- #img1 { background-image : url(img1) ; background-repeat : no-repeat ; width : 100px; height : 100px; /* -- 各ブラウザ対応用 -- */ transform: rotate(45deg); -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); -o-transform: rotate(45deg); } --- HTML --- <DIV class="img1">タイトルなどのテキスト</div> --------------------------- (2) 画像を 2 枚重ねた形。 ※文字を上に載せれませんでした。 --------------------------- --- CSS --- #img1 { background-image : url(img1) ; background-repeat : no-repeat ; width : 100px; height : 100px; /* -- 各ブラウザ対応用 -- */ transform: rotate(45deg); -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); -o-transform: rotate(45deg); } .img2 { padding: 50px 0 0 0px; /*2枚目の画像の位置調整*/ } --- HTML --- <div id="img1"> <img class="img2" src="red-star.png" width="横" height="高さ"> </div> --------------------------- (3) 画像 2 枚を重ねた上に文字を載せた場合。 ※思ったとおりに表示できました。が、何故か<a href="#">テスト</a> のリンクができません。。。 --------------------------- --- CSS --- #img1 { position: relative; bottom :-100px; left: -80px; width : 250px; height : 80px; transform: rotate( -15deg ); -webkit-transform: rotate(-15deg); -moz-transform: rotate(-15deg); -ms-transform: rotate(-15deg); -o-transform: rotate(-15deg); z-index: 2; } #img2 { position: relative; bottom :90px; left: 80px; width : 200px; height : 40px; transform: rotate( -15deg ); -webkit-transform: rotate(-15deg); -moz-transform: rotate(-15deg); -ms-transform: rotate(-15deg); -o-transform: rotate(-15deg); z-index: 1; } #MENU { position: relative; bottom :725px; left: -25px; transform: rotate( -15deg ); -webkit-transform: rotate(-15deg); -moz-transform: rotate(-15deg); -ms-transform: rotate(-15deg); -o-transform: rotate(-15deg); z-index: 3; } --- HTML --- <div id="img1"><img src="img1" width="100" height="100"></div> <div id="img2"><img src="img1" width="100" height="100"></div> <div id="MENU"><a href="#">テスト</a></div> ---------------------------

  • スクロールで画面が読み込まれたら動くようにしたい

    下記html、cssでテキストを動くようにしたのですがjavascript(jquery)で スクロールで画面が読み込まれたら動くようにしたいのですがどうすれば良いでしょうか。 素人なのでコピペで教えて欲しいです。 html <body> <section> </section> <div class="heading"> <div> <p class="slide-up">テキスト</p> </div> <div> <p class="slide-up">テキスト</p> </div> <div> </div> </body> </body> </body> css body, html { width: 100%; font-family: 'Times New Roman', Times, serif; } section { height: 200vh; } .fadeUp { animation-name: fadeUpAnime; animation-duration: 0.5s; animation-fill-mode: forwards; opacity: 0; } .heading { margin: 80px 0 0 80px; font-size: 15em; line-height: 90%; } .heading>div { overflow: hidden; } .heading>div>p { width: -webkit-max-content; width: -moz-max-content; width: max-content; white-space: nowrap; margin: 0; } div.heading>div { -webkit-animation-delay: 1s; animation-delay: 1s; } .slide-up { -webkit-animation: slid 2s cubic-bezier(0.65, 0, 0.35, 1) both; animation: slid 2s cubic-bezier(0.65, 0, 0.35, 1) both; } @-webkit-keyframes slid { 0% { transform: translateY(300px); } 100% { transform: translateY(0); } } @keyframes slid { 0% { transform: translateY(300px); } 100% { transform: translateY(0); } }

  • スクロールで画面が読み込まれたら動くようにしたい

    html、cssでテキストを動くようにしたのですがjavascript(jquery)で スクロールで画面が読み込まれたら動くようにしたいのですがどうすれば良いでしょうか。 html <body> <section> </section> <div class="heading"> <div> <p class="slide-up">salon</p> </div> <div> <p class="slide-up">info</p> </div> <div> </div> </body> </body> </body> css body, html { width: 100%; font-family: 'Times New Roman', Times, serif; } section { height: 200vh; } .fadeUp { animation-name: fadeUpAnime; animation-duration: 0.5s; animation-fill-mode: forwards; opacity: 0; } .heading { margin: 80px 0 0 80px; font-size: 15em; line-height: 90%; } .heading>div { overflow: hidden; } .heading>div>p { width: -webkit-max-content; width: -moz-max-content; width: max-content; white-space: nowrap; margin: 0; } div.heading>div { -webkit-animation-delay: 1s; animation-delay: 1s; } .slide-up { -webkit-animation: slid 2s cubic-bezier(0.65, 0, 0.35, 1) both; animation: slid 2s cubic-bezier(0.65, 0, 0.35, 1) both; } @-webkit-keyframes slid { 0% { transform: translateY(300px); } 100% { transform: translateY(0); } } @keyframes slid { 0% { transform: translateY(300px); } 100% { transform: translateY(0); } }

  • CSSに詳しい方

    ブログで「マウスオーバーで画像を拡大」っていうのを取り入れたいのですが、上手くいきません。 画像は拡大されますが、外枠を固定できず困ってます。 http://webya-tm.com/archives/1703 こちらのページを参考に 「画像をマウスオーバーしたときに「拡大」する」がやりたいことです。 <html> ・・・ <div class="entry_body">  <p style="text-align: right;">公開日:2014/10/04</p>  <img src="http:~.jpg" alt="~" title="~" border="0" width="600" height="294" />  <本文> </div> ・・・ </html> htmlの構造的にはこういう感じになってて、 <img src="http:~.jpg" alt="~" title="~" border="0" width="600" height="294" /> の部分を <div class="img-block"> <img src="http:~.jpg" alt="~" title="~" border="0" width="600" height="294" /> </div> と書き換え、さらにCSSに .img-block { width: 600px; height: 300px; overflow: hidden; } と追記すれば上手くいきました。 ただ、すべての<img src~の部分を <div class="img-block"> <img src~ </div> と書き換えるのは、すごく大変な作業なので、その方法以外で 今のままのHTMLで、CSSを書き換えるだけで http://webya-tm.com/archives/1703 こちらのページの「画像をマウスオーバーしたときに「拡大」する」を やる方法はないでしょうか? ↓今のCSSです。 img { transition: 0.4s; } .entry_body {  width: 600x; overflow: hidden; } img:hover { -moz-transform: scale(1.2,1.2); -webkit-transform: scale(1.2,1.2); -o-transform: scale(1.2,1.2); -ms-transform: scale(1.2,1.2); } ※overflow: hidden;というのが働いてくれない状態です。

    • ベストアンサー
    • CSS
  • 背景色が重なるもしくはつかない

    こんばんは、お世話になります。 背景色が重なる、もしくは色がつかないのですが どのようにしたらよいでしょうか? 因みにヘッダーのメニューの後ろにも灰色を付けています。 ご教示お願いします。 @charset "utf-8"; body { color: lightblue; } .wrapper { width: 960px; margin: 0 auto; overflow: hidden; padding: 0px 0px 10px 10px; } .wrapper .col { float: left; width: 25%; } .wrapper .col .item { display: block; margin: 5px 5px 5px 5px; padding: 10px; } .imgbox img { width: 100%; height: 100%; object-fit: cover; vertical-align: bottom; border-radius:15%; } .fadein { opacity : 0; transform : translate(0, 100px); transition : all 1s; } .fadein.active{ opacity : 1; transform : translate(0, 0); } a.header { display: block; text-decoration: none; } .header { background-color: rgba(0,0,0,.1); margin: 0; } ul{ display: flex; flex-wrap: wrap; } .header ul { display: flex; justify-content: center; } .header li { font-size: 15px; list-style-type: none; } .header li:not(:first-of-type) { margin-left: 1rem; } .header a { color: #000; padding: 20px; } .text li{ width: 50%; padding: 20px; box-sizing: border-box; /* 透過・非表示 */ opacity: 0; visibility: hidden; /* 要素の位置指定・アニメーション */ translate: 0 20px; transition: 1s; } img{ width: 100%; height: auto; } /* クラス付与で表示する */ .is-active{ opacity: 1; visibility: visible; translate: 0 0; } header li{ opacity: 1; visibility: visible; display: block; /* 縦に並べる*/ list-style-type: none; padding: 0.5em; background: #ccc; }

    • ベストアンサー
    • CSS
  • after effects@かなり初心者の質問orzll

    エフェクト→トランジション→カードワイプで、カードワイプのアニメーションを決定した後、 そのカードワイプのエフェクトを左から右へ流すように移動したいのですがサッパリ分からずお手上げです。 当たり前ですが、トランスフォームの位置を左から右へ移動すると、そのソース(画像?)自体も移動してしまうので。画像の位置はそのままで、エフェクトだけを左から右へ移動させるのにはどうすればいいのでしょう・・。 お助けくださいませ・・・orzlll

  • W3C CSSで文法解析エラーが発生しました

    W3C CSS 検証サービスで 文法解析エラーが発生しました というエラーメッセージが出ます。 cssは次のとおりです。 .qa { color: #ffffff; /* 文字色 */ font-size: 17px; /* 文字サイズ */ font-weight: bold; /* 文字を太く */ text-align: left; .q { background: linear-gradient(-80deg, #ff65ff, #65ffff); /* グラデーションの背景色 */ border: 2px solid #ff0000; /* 線の太さ 線のタイプ 線の色 */ border-radius: 20px; /* 角を丸く */ height: 60px; padding: 15px 40px 15px 15px; position: relative; cursor: pointer; &:before { position: absolute; content: ""; display: block; width: 10px; height: 2px; background-color: #ffffff; right: 15px; top: 50%; transform: translate(0, -50%); } &:after { position: absolute; content: ""; display: block; width: 10px; height: 2px; background-color: #ffffff; right: 15px; top: 50%; transform: translate(0, -50%) rotate(90deg); } } .q.active { &:after { display: none; } } .a { background-color: #999999; border-radius: 20px; /* 角を丸く */ height: 60px; display: none; padding: 15px; } } 検証したスタイルシートを以下に示します の表示は .qa { color : #ffffff; font-size : 17px; font-weight : bold; text-align : left; } です。 どこをどのようにすれば良いでしょうか?

    • 締切済み
    • CSS
このQ&Aのポイント
  • 運賃と定期(運賃)を分割して表示したいです。現在のスクリプトでは、運賃と定期が結合された形で表示されていますが、それを分けて表示する方法を知りたいです。
  • 質問者は、現在のスクリプトでは運賃と定期が結合されて表示されているため、それを分けて表示する方法を知りたいと言っています。質問者はスクリプトについて詳しくは分からないようで、具体的なコードや追加の構文を教えてほしいという要望があります。
  • 質問者は、運賃と定期(運賃)を分割して表示したいという要望を持っています。現在のスクリプトではそれが実現できないため、新たな構文や追加のコードについて教えてほしいということです。
回答を見る

専門家に質問してみよう