私はslideToggle機能に取り組んでいます。スパンタグを使用して最初にコンテンツを非表示にし、そのスパンの親をクリックすると、クリックイベントが発生し、スライドトグルが呼び出されます。その結果は適切ではありません。スパンがスライドダウンし、すぐにスライドアップします。しかし、span の代わりに div を使用すると、slideToggle は適切に機能します。この種のスパンでの奇妙な動作の理由を知っている人はいますか?
質問する
504 次
1 に答える
1
デフォルトでは、ブロック内のレイアウトspan
に対して、インライン レイアウトの特性があります。div
舞台裏では、span
要素はdisplay: inline
CSS 宣言に含まれていますが、div
要素は でスタイル設定されていdisplay: block
ます。実際には、span
スタイル設定なしで 2 つの要素をページに配置すると、それらは隣り合って表示されますが、2 つのdiv
要素は互いの下に表示されます。CSSdisplay
プロパティの詳細については、MDNを参照してください。
slideToggle
要素のプロパティをアニメーション化し、そのプロパティを元の状態との間でwidth
切り替えます。プロパティはスタイルに適用されないため、これはインライン要素では機能しません。自分で試してみてください!display
none
width
#test {
display: inline; // Try switching this to block
width: 100px; // This only works for block elements
background: red; // Make the change visible
}
つまり、span
スタイリングがどのように適用されるかがすべてです。インライン要素に幅を与えたい場合は、次を使用できますdisplay: inline-block
。
#test {
display: inline-block; // Layout inline with other content as one block
width: 100px; // This works!
background: red;
}
于 2012-05-31T09:55:08.430 に答える