JavaScript 幻灯片元素
我想知道滑动元素的最佳技术是什么,就像这些示例中一样:
http://demos.flesler.com/jquery/localScroll/#section1c
但是使用Pure Javascript
,所以NOT jQuery
或任何库。
示例结构
<div id="holder">
<div id="bridge" onclick="slide('content')">Click to slide</div>
<div id="content" style="display:block;">The content</div>
</div>
因此,如果我点击id=bridge
,id=content
将向上滑动
并设置其>显示
为无
,如果我再次点击它,则将其显示
设置为阻止
并向下滑动;
I want to know what's the best technique to slide an element just like in these examples:
But with Pure Javascript
so NOT jQuery
or any library.
Example structure
<div id="holder">
<div id="bridge" onclick="slide('content')">Click to slide</div>
<div id="content" style="display:block;">The content</div>
</div>
So if I click on id=bridge
the id=content
will slide up
and sets it's display
to none
and If I click on it again then sets it's display
to block
and slides down
;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
滑动动画本身,就像 JavaScript 中的所有动画一样,是使用计时器函数完成的:
setTimeout
或setInterval
。对于像这样的简单效果,我总是更喜欢setTimeout
,因为与setInterval
相比,它更容易结束动画序列。它的工作原理是使用setTimeout
更改 CSS 属性值:这本质上是 JavaScript 动画的基础知识。这个想法很简单。您可以使用任何 CSS 样式属性进行动画:顶部和左侧用于绝对或相对定位的元素,边距(如我的示例)、宽度、高度、透明度等。
现在,至于在您的具体情况下使用什么取决于您的意图。例如,执行您所描述的最简单的操作是更改 div 高度直到其变为零。类似于:
但这不是示例 jQuery 插件的做法。看起来它通过移动元素的顶部和左侧样式属性来移动元素,并通过使用带有
overflow:hidden
的容器 div 将内容隐藏在屏幕之外。The sliding animation itself, like all animation in javascript, is done using timer functions:
setTimeout
orsetInterval
. For simple effects like this I always prefersetTimeout
since it's easier to end the animation sequence compared tosetInterval
. How it works is to change CSS attribute values usingsetTimeout
:That's essentially the basics of animation in javascript. The idea is very simple. You can use any CSS style attribute for animation: top and left for absolutely or relatively positioned elements, margins like my example, width, height, transparency etc.
Now, as for what to use in your specific case depends on exactly what your intentions are. For example, the simplest thing to do what you describe would be to change the div height until it becomes zero. Something like:
But that's not how the example jQuery plugin does it. It looke like it moves the element by shifting its top and left style attribute and hides content off screen by using a container div with
overflow:hidden
.我的解决方案使用 css 过渡:
My solution uses a css transition: