gre*_*rep 41 css3 css-transitions
是否可以使用CSS过渡来为位置设置之间的某些内容设置动画left: 0px,right: 0px以便它一直在屏幕上显示?我需要从上到下完成同样的事情.我是不是计算了屏幕宽度/对象大小?
#nav {
position: absolute;
top: 0px;
left: 0px;
width: 50px;
height: 50px;
-webkit-transition: all 0.5s ease-out;
}
.moveto {
top: 0px;
right: 0px;
}
Run Code Online (Sandbox Code Playgroud)
然后我使用jQuery .addClass
met*_*ion 26
如果您知道动画元素的宽度/高度,则可以为位置(顶部,底部,左侧,右侧)设置动画,然后减去相应的边距.
?.animate {
height: 100px;
width: 100px;
background-color: #c00;
-webkit-transition: all 1s ease;
-moz-transition: all 1s ease;
-o-transition: all 1s ease;
-ms-transition: all 1s ease;
transition: all 1s ease;
position: absolute;
left: 0; /*or bottom, top, right*/
}
Run Code Online (Sandbox Code Playgroud)
然后根据位置动画...
.animate.move {
left: 100%; /*or bottom, top, right*/
margin-left: -100px; /*or bottom, top, right */
}
Run Code Online (Sandbox Code Playgroud)
这个实现可能会更顺畅,transform: translate(x,y)但我会保持这样,所以它更容易理解.
小智 11
这在Chromium上对我有用.translate的%是指应用它的元素的边界框的大小,因此它完美地将元素提供到右下边缘,而不必切换使用哪个属性来指定它的位置.
topleft {
top: 0%;
left: 0%;
}
bottomright {
top: 100%;
left: 100%;
-webkit-transform: translate(-100%,-100%);
}
Run Code Online (Sandbox Code Playgroud)
在更现代的浏览器(包括 IE 10+)中,您现在可以使用calc():
.moveto {
top: 0px;
left: calc(100% - 50px);
}
Run Code Online (Sandbox Code Playgroud)
对于具有动态宽度的元素,可以使用transform: translateX(-100%);来计算水平百分比值。这导致了两种可能的解决方案:
过渡自:
transform: translateX(0);
Run Code Online (Sandbox Code Playgroud)
到
transform: translateX(calc(100vw - 100%));
Run Code Online (Sandbox Code Playgroud)
transform: translateX(0);
Run Code Online (Sandbox Code Playgroud)
transform: translateX(calc(100vw - 100%));
Run Code Online (Sandbox Code Playgroud)
过渡自:
transform: translateX(0);
left: 0;
Run Code Online (Sandbox Code Playgroud)
到
left: 100%;
transform: translateX(-100%);
Run Code Online (Sandbox Code Playgroud)
#viewportPendulum {
position: fixed;
left: 0;
top: 0;
animation: 2s ease-in-out infinite alternate swingViewport;
/* just for styling purposes */
background: #c70039;
padding: 1rem;
color: #fff;
font-family: sans-serif;
}
@keyframes swingViewport {
from {
transform: translateX(0);
}
to {
transform: translateX(calc(100vw - 100%));
}
}Run Code Online (Sandbox Code Playgroud)
<div id="viewportPendulum">Viewport</div>Run Code Online (Sandbox Code Playgroud)
注意:这种方法可以很容易地扩展到垂直定位。在这里访问示例。
| 归档时间: |
|
| 查看次数: |
142169 次 |
| 最近记录: |