【发布时间】:2014-10-15 02:40:54
【问题描述】:
我有一个隐藏的 div,我需要用不同的 CSS 样式平滑地显示它,除了“显示”之外,所有样式都可以轻松更改。但是这个属性很关键,因为当它开始出现时,它会以不同的方式移动页面上的其他元素。这将取决于出现元素的“显示”属性。下一个元素将向右或向下移动。
我有 2 个按钮 - (将 div 显示为块)和(将 div 显示为内联块)它应该可以工作,但它不是。
这里是另一个jsfiddle,展示了如何更改可见 div 上的显示属性。我需要在隐藏 div 时更改它,然后使用简单的“.toggle(500);”以新的显示属性平滑地显示它。
$("#f").hide();
$(".toggle_h").bind("click", function(){
$("#f").hide();
})
$(".toggle_b").bind("click", function(){
$("#f")
.removeClass('i')
.addClass('b')
.toggle(500);
return false;
})
$(".toggle_i").bind("click", function(){
$("#f")
.removeClass('b')
.addClass('i')
.toggle(500);
return false;
})
.b{
display:block;
background:red;
}
.i{
display:inline-block;
background:blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div class="b">block1 block</div>
<div id='f' >block2 flexible</div>
<div class="i">block3 inline</div>
<br>
<a href="#" class="toggle_b">show as block</a><br>
<a href="#" class="toggle_i">show as inline</a><br>
<a href="#" class="toggle_h">hide</a><br>
【问题讨论】:
-
从一个非常快速的实验来看,当 jquery 隐藏和元素时,它会记住以前的
disaplay值并将该值恢复为内联样式。我使用 Firebug for Firefox 来检查元素的变化。 -
我同意,但就没有解决方案而言,我提出了自己的“不可能”的答案。如果您同意该声明,您可以“+1”。
-
您希望元素从
display: block平滑过渡到display: inline? -
不,我需要在元素隐藏时更改“显示”属性,然后才能顺利显示。它必须以不同方式开始出现和移动页面上的其他元素,具体取决于出现元素的“显示”属性。
标签: javascript jquery html css