CSS3やjQueryで、要素の幅を0から100%までアニメートし、その要素とラッパーを必要な幅だけ、事前に設定した幅なしで表示する
2023-12-03 02:07:30
質問
http://jsfiddle.net/nicktheandroid/tVHYg/
ホバーリング時
.wrapper
にカーソルを合わせると、その子要素である
.contents
からアニメーションする必要があります。
0px
から自然な幅になるようにアニメーションします。そして、マウスが
.wrapper
からマウスを離すと、それはアニメーションで
0px
. このとき
.wrapper
要素は必要なだけの幅にする必要があります (これにより
.contents
が大きくなるように)、そのため
.wrapper
のように幅が伸びたり縮んだりするはずです。
.contents
がそうであるように。の幅は設定されるべきではありません。
.contents
. 私はCSS3を使っていますが、jQueryでも実現できますので、それで結構です。
問題点です。 JSfiddleを参照してください。
-
.wrapper
は必要なだけの幅があるわけではありません。 -
になると
.contents
が成長し、ほぼ全幅になったところで次の行にジャンプします。 -
の下にカーソルを置くと
.wrapper
,.contents
へとアニメーションするはずなのに、消えてしまう。0px
.wrapper {
display: inline-block;
height: 20px;
width: auto;
padding:10px;
background:#DDD;
}
.contents {
display:inline-block;
width:0%;
white-space:nowrap;
overflow:hidden;
background:#c3c;
}
.wrapper:hover .contents {
-webkit-transition: width 1s ease-in-out;
-moz-transition: width 1s ease-in-out;
-o-transition: width 1s ease-in-out;
transition: width 1s ease-in-out;
width:100%;
}
<div class="wrapper">
<span>+</span>
<div class="contents">These are the contents of this div</div>
</div>
どのように解決するのですか?
できたと思うのですが。
.wrapper {
background:#DDD;
display:inline-block;
padding: 10px;
height: 20px;
width:auto;
}
.label {
display: inline-block;
width: 1em;
}
.contents, .contents .inner {
display:inline-block;
}
.contents {
white-space:nowrap;
margin-left: -1em;
padding-left: 1em;
}
.contents .inner {
background:#c3c;
width:0%;
overflow:hidden;
-webkit-transition: width 1s ease-in-out;
-moz-transition: width 1s ease-in-out;
-o-transition: width 1s ease-in-out;
transition: width 1s ease-in-out;
}
.wrapper:hover .contents .inner {
width:100%;
}
<div class="wrapper">
<span class="label">+</span><div class="contents">
<div class="inner">
These are the contents of this div
</div>
</div>
</div>
へのアニメーション
100%
へのアニメーションの場合、ボックスが利用可能な幅(100% から +
とそれに続く空白を引いた100%)よりも大きいため、折り返しが発生します。
代わりに、内部要素をアニメーション化することができます。
100%
の幅の合計が
.contents
.
関連
-
[解決済み] jquery - is not a function エラー
-
[解決済み] jQuery UIダイアログのクローズボタンを削除するには?
-
[解決済み] jQuery に何かを実行する前にすべての画像の読み込みを待つように指示する公式な方法
-
[解決済み] jQueryで複数のCSS属性を定義するには?
-
[解決済み] 動的に生成された要素でクリックイベントが動作しない [duplicate]
-
[解決済み] クリックボタンでクリップボードにコピー
-
[解決済み] val()を使ってselectの値を設定しても、jqueryのchangeイベントが発生しないのはなぜですか?
-
[解決済み] jQueryで、ある要素を他の要素に対して相対的に配置するには?
-
[解決済み】display:flexを使って残りの縦幅をCSSで埋める。
-
[解決済み] Jqueryのコードはヘッダーとフッターのどちらに入れるべきですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScript - 二重引用符のエスケープ
-
[解決済み] jQueryのイベントハンドラを削除する最良の方法?
-
[解決済み] jQueryのSELECT要素で特定のオプションを選択するにはどうすればよいですか?
-
[解決済み] jQuery に何かを実行する前にすべての画像の読み込みを待つように指示する公式な方法
-
[解決済み] jQueryで複数のCSS属性を定義するには?
-
[解決済み] CSSを使用してSVG画像の色を変更する方法(jQuery SVG image replacement)とは?
-
[解決済み] JSONPとは何か、素人目にもわかるように説明してくれる人はいませんか?[重複)。
-
[解決済み] jQuery removeClass ワイルドカード
-
[解決済み] jquery input select all on focus
-
[解決済み】jQueryがリクエストボディに有効なjsonを投稿する。