【问题标题】:How to reverse the direction of the jquery UI fold effect?jquery UI折叠效果如何反转方向?
【发布时间】:2013-10-22 14:48:11
【问题描述】:

我在切换时使用 jquery UI 折叠效果作为参数,如下所示:

$(textDivChild).toggle( "fold");

效果很好,我只有一个问题。 div 从右到左折叠而不是从左到右折叠,这就是我想要的。而且我在选项对象中看不到方向选项...我尝试了各种其他方法,例如slide,slideUp(在jquery核心中)和slideDown,但它们都没有做我想要的。如果幻灯片有一个“向左”滑动的方向选项,而不仅仅是“向上”,我可以使用它。我的最终目标是让容器看起来像是在折叠/展开到按钮中/从按钮中出来——如果我可以反转方向,折叠将非常有用。

另外,我尝试将 div 与相对/绝对定位右对齐,但它对方向没有影响。无论如何我都无法做到这一点,因为我无法定位正确,因为我在顶部执行此操作的应用程序如何工作......无论如何我只能使用“左”和“顶部”CSS定位。

【问题讨论】:

  • @isherwood 我已多次阅读该问题及其答案。 slideToggle() 没有改变方向的功能,slideUp() 和 slideDown() 也没有,尽管它们的名字。
  • 您看过提供的演示吗? jsfiddle.net/QDUQk/1
  • 我将撤回我的近距离投票,因为我将错误的问题作为重复项放入,但这已经被问及并回答了。
  • @isherwood 你读过我的问题吗?幻灯片不剪,我已经试过了。我需要在屏幕上的中心点进出扩展/收缩(想想 x 和 y 轴上的一个点)。幻灯片只允许您从一个方向扩展/收缩。折叠旨在从中心点扩展/收缩,只有您不能反转方向(我的问题)。附言在提出我的问题之前,我已经彻底搜索了这个问题并阅读了大约一个小时的文章。

标签: jquery


【解决方案1】:

使用 CSS,您可以使用 float 属性使其成为 look like it's folding to the right

#textDivChild {
    float: right;
}

所有这一切都是为了将​​所有内容对齐,因此即使动画的发生与之前完全相同,它也会看起来好像向右折叠。

【讨论】:

  • 这是一个可能的解决方案。如果只有我在上面执行所有这些操作的应用程序允许我使用 float 属性(这很复杂)。让我看看我是否可以将它包装在一个用 float:right 定位的虚拟 div 中......我会回来报告。
  • 不幸的是,这对我来说不是一个可行的解决方案......浮动权利需要大量的代码重写,我什至不确定它是否会工作(不确定我的应用程序是否允许我将某物漂浮在它所在的位置)。我必须使用 CSS 来更改 javascript 函数的工作方式,这有点糟糕。在我看来,应该有一个反转折叠方向的选项。
  • 但除此之外,这是一个完美的解决方案。如果我有足够的声誉(新帐户),我会支持你。
  • @ChrisScott 没问题,您可以访问哪些 CSS 属性?
【解决方案2】:

你可以做到。您只需要使用一些特殊的 CSS 格式。

我所做的是设置一个“位置:绝对;”并用“右/上/左/下”指向位置。

  • 如果您设置左侧 - 将从左侧开始

  • 如果您设置正确 - 它将从右侧开始

  • 如果您设置顶部,它将从顶部开始

  • 如果您设置底部,它将从底部开始

您还可以决定先从什么开始 - 像这样水平或垂直

$('#hover_settings').toggle({effect: "fold", horizFirst: false}, 500);

$('#hover_settings').toggle({effect: "fold", horizFirst: true}, 500);

最后一个参数显然是——生效时间。 :)

jsfiddle

$(function() {
    function t(){
         $('#hover_settings')
        .toggle({effect: "fold", horizFirst: false}, 500);
    }
    
    
$('#button_settings1').click(function(){
    $('#hover_settings')
        .css('left','1.4em')
        .css('bottom','3em')
        .css('right','initial')
        .css('top','initial')    
   t(); 
});

$('#button_settings2').click(function(){
        $('#hover_settings')
        .css('right','2em')
        .css('top','2em')
        .css('left','initial')
        .css('bottom','initial')
   t(); 
});

    
});
#settings_wrapper{
	position:relative;
	background: aliceblue;
	display:inline-block;

}

#hover_settings{
	position: absolute;
	/*right: -20em;
	top: -6em;*/
	background: antiquewhite;
	border-radius: 20px;
	border: 2px solid #ccc;
	width: 10em;
	height: 5em;
	text-align: center;	
	display: none;
	/*left: 1.4em;*/
	/*bottom: 3em;*/
}
<link href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="//code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<br><br><br><br><br><br>        
<div id='settings_wrapper'>
    <button id='button_settings1'>btn1</button>
    ..............................................
    <button id='button_settings2'>btn2</button>
    <div id='hover_settings'>
        Settings
    </div>
</div>

【讨论】:

  • 这个解决方案比“浮动”更好,原因有很多。 1) 不仅可以设置水平方向,还可以设置垂直方向。 2)在“浮动”对象中,您不能使用垂直对齐。
猜你喜欢
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 2011-12-18
  • 2014-03-12
  • 1970-01-01
相关资源
最近更新 更多