我正在研究slideToggle功能。如果我最初使用span标签来隐藏我的内容,并且点击该span的父级我点击事件并在其中调用slide Toggle。结果不合适。跨度向下滑动并立即向上滑动。但是如果我使用div而不是span,则slideToggle可以正常工作。 有没有人知道为什么这种奇怪的行为有跨度?
答案 0 :(得分:1)
默认情况下,span
具有内联布局特征,而div
是块中的布局。在幕后,span
元素在其CSS声明中具有display: inline
,而div
元素在display: block
中设置了样式。实际上,如果您在页面上放置两个span
元素而没有样式,它们将彼此相邻,而两个div
元素将显示在彼此之下。有关CSS display
属性的更多信息,请参见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;
}