在 DOM 中添加新元素后,保留元素屏幕位置
Retain element screen position after adding a new element before it in DOM
我有一个包含两个跨度的div,它们包含文本:
<div class="jumbotron">
<span id="span-one" class="name-letters">One</span>
<span id="span-two" class="name-letters">Two</span>
</div>
我在这些跨度上执行CSS动画以将一个元素从另一个元素移开(去掉浏览器前缀以获得更好的可读性( JSFiddle:
#span-two {
animation-delay: 3s;
animation-duration: 3s;
animation-name: slide;
animation-fill-mode: forwards;
}
@keyframes slide {
from {
margin-left: 0%;
}
to {
margin-left: 25%;
}
}
例:
开始:
One Two
停:
One Two
现在,我想在动画完成后,在第一个跨度旁边添加第三个跨度。但是,我希望第二个跨度保持其动画结束位置。
例:
我想要什么:
One Three Two
我得到什么: JSFiddle
One Three Two
这是因为我添加到第二个跨度的左边距属性,使其在动画中移动。因此,当我在它之前添加一个新元素时,第二个跨度会进一步移动以满足设置的左边距值。我的问题:在添加第三个跨度后,如何在不移动第二个跨度位置的情况下实现此目的?
您可以将范围 #3 设置为绝对定位(或fixed
(,但不指定top
和left
值 (!(:
#span-three {
position: absolute;
}
和
span.id = "span-three";
演示:http://jsfiddle.net/gcgtveo5/2/
我不能写纯 javascript,但你能做这样的事情而不是绝对定位的跨度吗?
.HTML:
<div>
<div class="container">
<span id="span-one" class="name-letters">One</span>
</div>
<div class="container" id="spanThreeContainer">
</div>
<div class="container">
<span id="span-two" class="name-letters">Two</span>
</div>
.CSS:
.container {width:33.33%; float:left;}
然后将您的新跨度附加到"#spanThreeContainer"?
相关文章:
- Jquery html() 和保留元素名称
- 单击其他元素或鼠标向上时隐藏输入框,但保留一次焦点
- 如何在页面刷新后保留动态创建的html元素及其数据/值
- 在正文中保留附加的相对元素
- 将所有元素保留在同一位置
- 如何添加动态表单元素但保留其值(JS)
- 从数组中删除元素,然后保留其状态以备将来使用,而不使用全局变量
- 单击按钮后如何保留元素
- 使用链接截断html中的文本以显示更多/更少并将元素保留在里面
- AngularJS 1.2.0 $http不保留数组元素
- 在开发元素被确认后,在开发元素下方保留一个单击按钮
- 在谷歌修饰的前元素中保留 html 字符
- 保留列表中移动元素的顺序
- 如何将附加的元素保留在父元素中
- 如何计算坐标以将元素保留在用户屏幕的区域中
- 当浏览器调整大小时,将元素保留在父视图中
- 为动态更改的元素保留事件
- 将DOM元素保留在页面上还是根据需要重新呈现它们更有效
- 重新添加的画布元素保留内容
- 如何在jQuery移除时将奇数/偶数元素保留在左侧或右侧