我正在研究 slideToggle 功能。如果我最初使用 span 标签隐藏我的内容,并且在单击该 span 的父级时,我会触发 click 事件并在其中调用 slide Toggle。结果不正确。跨度向下滑动并立即向上滑动。但是,如果我使用 div 而不是 span,则 slideToggle 可以正常工作。有谁知道为什么这种带有跨度的奇怪行为?
问问题
504 次
1 回答
1
默认情况下,span
具有内联布局特征,而div
在块中布局。在幕后,span
元素display: inline
在其 CSS 声明中,而div
元素的样式是display: block
. 实际上,如果您span
在页面上放置两个没有样式的元素,它们将彼此相邻出现,而两个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 回答