同位素和 jquery UI 碰撞
我正在做一个砖石风格的页面,其中的框在单击时会展开。 我已经编写了 javascript 代码,以便当单击另一个框时,所有其他框将默认为其原始大小;也就是说:一次只会扩展一个盒子。
效果很好!
问题是同位素不会调整盒子的大小,只会调整位置!
因此,我调用了 jquery UI 插件来为切换类函数设置动画,这样不仅元素的重新定位将被动画化,而且元素本身的扩展也会被动画化。
但可惜的是,jquery UI 和 isotope 中的某些东西不太适合在一起,这意味着元素的重新定位在某种程度上会混乱。
这些示例的 javascript 代码是这样的:
首先是有效的:
$(document).ready(function() {
var $container = $('#masonrycontainer');
$($container).isotope({
masonry : {
columnWidth : 100
}
});
// change size of clicked element
$container.delegate( '.isotopeelement', 'click', function(){
$('.isotopeelement').not(this).removeClass('maxsize');
$(this).toggleClass('maxsize');
$container.isotope('reLayout');
return false;
});
});
然后是无效的(请注意,毫秒是两个示例之间的唯一区别):
$(document).ready(function() {
var $container = $('#masonrycontainer');
$($container).isotope({
masonry : {
columnWidth : 100
}
});
// change size of clicked element
$container.delegate( '.isotopeelement', 'click', function(){
$('.isotopeelement').not(this).removeClass('maxsize', 300);
$(this).toggleClass('maxsize', 300);
$container.isotope('reLayout');
return false;
});
});
有谁知道问题是什么,或者如何解决它?预先非常感谢大家。
//一个。
I am doing a masonry-style page with boxes that expand when clicked.
I have made the javascript code so that all other boxes will default to their original size when another box is clicked; that is: only one box will be expanded at a time.
It works fine!
The thing is that isotope doesn't animate the resizing of boxes, only the repositioning!
So I've invoked the jquery UI plugin to animate that toggle class function, so that not only the repositioning of elements will be animated, but also the very expanding of the element itself.
BUT alas, something in jquery UI and isotope doesn't quite fit together, meaning that the repositioning of elements somehow messes up.
The javascript code for the examples is this:
First the one that works:
$(document).ready(function() {
var $container = $('#masonrycontainer');
$($container).isotope({
masonry : {
columnWidth : 100
}
});
// change size of clicked element
$container.delegate( '.isotopeelement', 'click', function(){
$('.isotopeelement').not(this).removeClass('maxsize');
$(this).toggleClass('maxsize');
$container.isotope('reLayout');
return false;
});
});
Then the one that doesn't work (notice that the milliseconds is the only difference between the two examples):
$(document).ready(function() {
var $container = $('#masonrycontainer');
$($container).isotope({
masonry : {
columnWidth : 100
}
});
// change size of clicked element
$container.delegate( '.isotopeelement', 'click', function(){
$('.isotopeelement').not(this).removeClass('maxsize', 300);
$(this).toggleClass('maxsize', 300);
$container.isotope('reLayout');
return false;
});
});
Does anyone know what the problem is, or how to solve it? Thank you all very much in advance.
//A.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请参阅同位素 - 动画项目大小。它包含一个 4 分钟的视频,介绍您遇到的问题。
See Isotope - Animating item sizes. It features a 4 minute video on the problem you're running into.