插入内联元素并设置向左移动的动画
Insert inline element and animate shift to left
我已经试着解决这个问题一周了,它看起来很基本,所以我可能错过了一些东西。
我想让一个div位于屏幕(或其容器)的中心,然后在它的右边插入第二个div,这样之后它们两个就居中了(两边的空间相等)。
插入第二个div不是问题,但我需要第一个块在插入新块后滑动到它的位置
http://jsfiddle.net/rdbLbnw1/
.container {
width:100%;
text-align:center;
}
.inside {
border:solid 1px black;
width:100px;
height:100px;
display:inline-block;
}
$(document).ready(function() {
$("#add").click(function() {
$(".container").append("<div class='inside'></div>");
});
});
<div class="container">
<div class="inside"></div>
</div>
<input id="add" type="button" value="add"/>
我需要明确计算原始长方体的终点,然后设置动画吗?或者有更好的方法吗?
我喜欢你的问题,所以决定写这个:
$(document).ready(function() {
var isInAction = false;
var intNumOfBoxes = 1;
var intMargin = 10;
$containerWidth = $(".container").width();
$insideWidth = $(".inside").width();
$(".inside").css('margin-left',($containerWidth - $insideWidth - intMargin)/2 + 'px');
$("#add").click(function() {
if (!isInAction){
isInAction = true;
intNumOfBoxes +=1;
$(".current").removeClass("current");
$(".container").append("<div class='inside current'></div>");
$('.inside').animate({
'margin-left': '-=' + ($insideWidth + intMargin)/2 + 'px'
}, 300, function () {
$(".current").css('margin-left',($containerWidth + ((intNumOfBoxes - 2) * ($insideWidth + intMargin)))/2 + 'px');
$(".current").fadeIn(500,function(){
isInAction = false;
});
});
}
});
});
也在CSS:中添加此类
.current {
display:none;
}
除了intMargin
之外,您不需要更改JS代码中的变量。您可以更改这个var来设置框之间的边距。
注意:此代码在较旧的浏览器上也可以正常工作,不需要支持transition
等CSS3功能。
更新:修复了一些类似重复点击的错误。
检查JSFiddle演示
首先,我们只能对具有显式数值(如宽度、左侧或边距)的事物进行动画处理。我们不能动画化对齐之类的东西(实际上使用了相同的margin属性,但隐含地,更不用说了)。所以,若我们知道插入的div的宽度,就把它添加到我们的容器中。
1) 让我们将容器本身居中,并将转换添加到
.container {
width: 102px; /* set explicit width; 102 - because of borders */
margin: auto; /* set margin to 'auto' - that will centre the div */
transition: width 0.5s;
}
2) 然后在添加div 时增加宽度
$(".container").width($(".container").width() + 102);
3) 但是等一下!如果我们将div添加到太窄的容器中,它将被添加到底部而不是右侧。因此,我们需要在之前将另一个容器设置为适当的宽度。
请参阅JSFiddle上的最后一个示例。
顺便说一句,当你使用内联块时,从你的代码中删除所有的换行符和制表符,因为这会在你的块之间造成空格。
相关文章:
- 移除类(如果移动)
- 在下拉导航中将文本向左移动
- 滑块向左移动一定量时触发警报
- 将页面内容向左移动时显示/隐藏右侧面板
- jQuery而不是向左移动.它会褪色.滑块
- Python左移(符号问题)
- Twitter Bootstrap Carousel 在向左或向右滑动控制时不断向上移动
- 在 JavaScript 中算术左移 30 次
- 当用户将鼠标移到屏幕/图表上时,自动滚动将暂停.如果鼠标移动停止,自动滚动将再次恢复
- 如何在jquery中从右、从左、从下移动css元素
- JavaScript 零位左移和右移等效于 Python 中的
- 带字符串的左移数字
- Javascript左移操作符是如何工作的
- 计算顺序规则左移Lsh"在Javascript
- 按位左移和右移计算在javascript
- 我试着把盒子从左移到右,然后再移回来,但它在几个周期后崩溃了
- Javascript中的左移计数为负
- 我怎样才能让图像从右到左横向移动浏览器
- Javascript逐位左移的终结性问题
- 在 Clojure 中实现 JavaScript 的左移运算符