JS实现的适合做faq或menu滑动效果示例

 更新时间:2016年11月17日 11:11:01   作者:wdguohui  
这篇文章主要介绍了JS实现的适合做faq或menu滑动效果,结合实例形式分析了基于JS实现的页面元素滑动渐变效果的相关实现技巧,需要的朋友可以参考下

本文实例讲述了JS实现的适合做faq或menu滑动效果。分享给大家供大家参考,具体如下:

<!CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
<!--
body,div,ul,li,p,h1,h2{ margin:0; padding:0; border:0; background:#FAFAFA; font-family:Arial, Helvetica, sans-serif,"宋体"}
body{ text-align:center; font-size:12px}
li{ list-style:none}
.rolinList{ width:402px; height:auto; margin:20px auto 0 auto; text-align:left}
.rolinList li{margin-bottom:1px;border:1px solid #DADADA}
.rolinList li h2{ width:380px; height:40px; background:#fff; font-size:14px; line-height:40px; padding-left:20px; color:#333; cursor:pointer}
.content{ height:150px;width:400px; background:#fff; background:#FAFAFA}
.content p{ margin:12px}
-->
</style>
<script type="text/javascript">
//<![CDATA[
window.onload = function() {
rolinTab("rolin")
}
function rolinTab(obj) {
var list = $(obj).getElementsByTagName("LI");
var state = {show:false,hidden:false,showObj:false};
for (var i=0; i<list.length; i++) {
var tmp = new rolinItem(list[i],state);
if (i == 0) tmp.pShow();
}
}
function rolinItem(obj,state) {
var speed = 0.0666; 
var range = 1;
var interval;
var tarH;
var tar = this;
var head = getFirstChild(obj);
var content = getNextChild(head);
var isOpen = false;
this.pHidden = function() {
if (isOpen) hidden();
}
this.pShow = show;
var baseH = content.offsetHeight;
content.style.display = "none";
var isOpen = false;
head.onmouseover = function() {
this.style.background = "#EFEFEF";
}
head.onmouseout = mouseout;
head.onclick = function() {
this.style.background = "#EFEFEF";
if (!state.show && !state.hidden) {
if (!isOpen) {
head.onmouseout = null;
show();
} else {
hidden();
}
}
}
function mouseout() {
this.style.background = "#FFF"
}
function show() {
head.style.borderBottom = "1px solid #DADADA";
state.show = true;
if (state.openObj && state.openObj != tar ) {
state.openObj.pHidden();
}
content.style.height = "0px";
content.style.display = "block";
content.style.overflow = "hidden";
state.openObj = tar;
tarH = baseH;
interval = setInterval(move,10);
}
function showS() {
isOpen = true;
state.show = false;
}
function hidden() {
state.hidden = true;
tarH = 0;
interval = setInterval(move,10);
}
function hiddenS() {
head.style.borderBottom = "none";
head.onmouseout = mouseout;
head.onmouseout();
content.style.display = "none";
isOpen = false;
state.hidden = false;
}
function move() {
var dist = (tarH - content.style.height.pxToNum())*speed;
if (Math.abs(dist) < 1) dist = dist > 0 ? 1: -1;
content.style.height = (content.style.height.pxToNum() + dist) + "px";
if (Math.abs(content.style.height.pxToNum() - tarH) <= range ) {
clearInterval(interval);
content.style.height = tarH + "px";
if (tarH != 0) {
showS()
} else {
hiddenS();
}
}
}
}
var $ = function($) {return document.getElementById($)};
String.prototype.pxToNum = function() {return Number(this.replace("px",""))}
function getFirstChild(obj) {
var result = obj.firstChild;
while (!result.tagName) {
result = result.nextSibling;
}
return result;
}
function getNextChild(obj) {
var result = obj.nextSibling;
while (!result.tagName) {
result = result.nextSibling;
}
return result;
}
//]]>
</script>
<ul id="rolin">
  <li>
  <h2>脚本之家 1</h2>
  <div <p>脚本之家--专业IT综合性网站<br /><br /><a target="_blank" href="https://www.jb51.net/">https://www.jb51.net/</a></p>
  </div>
  </li>
  <li>
  <h2>脚本之家 2</h2>
  <div <p>脚本之家--专业IT综合性网站<br /><br /><a target="_blank" href="https://www.jb51.net/">https://www.jb51.net/</a></p>
  </div>
  </li>
  <li>
  <h2>脚本之家 3</h2>
  <div <p>脚本之家--专业IT综合性网站<br /><br /><a target="_blank" href="https://www.jb51.net/">https://www.jb51.net/</a></p>
  </div>
  </li>
  <li>
  <h2>脚本之家 4</h2>
  <div <p>脚本之家--专业IT综合性网站<br /><br /><a target="_blank" href="https://www.jb51.net/">https://www.jb51.net/</a></p>
  </div>
  </li>
  <li>
  <h2>脚本之家 5</h2>
  <div <p>脚本之家--专业IT综合性网站<br /><br /><a target="_blank" href="https://www.jb51.net/">https://www.jb51.net/</a></p>
  </div>
  </li>
  <li>
  <h2>脚本之家 6</h2>
  <div <p>脚本之家--专业IT综合性网站<br /><br /><a target="_blank" href="https://www.jb51.net/">https://www.jb51.net/</a></p>
  </div>
  </li>
</ul>

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • JS typeof fn === ''function'' && fn()详解

    JS typeof fn === ''function'' && fn()详解

    最近在学习js的时候发现很多人都喜欢在JS 中存在fn && fn() 执行语句或者typeof fn === 'function' && fn(),下面这篇文章就为大家分享一下
    2020-08-08
  • JS实现浏览器状态栏显示时间的方法

    JS实现浏览器状态栏显示时间的方法

    这篇文章主要介绍了JS实现浏览器状态栏显示时间的方法,涉及JavaScript针对时间及状态栏操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • JavaScript平铺数组转树形结构的实现示例

    JavaScript平铺数组转树形结构的实现示例

    本文主要介绍了JavaScript平铺数组转树形结构的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • JavaScript中创建对象和继承示例解读

    JavaScript中创建对象和继承示例解读

    这篇文章主要介绍了JavaScript中怎样创建对象和继承,需要的朋友可以参考下
    2014-02-02
  • 一文详解JavaScript中的按值传递和按引用传递

    一文详解JavaScript中的按值传递和按引用传递

    编程语言中,把一个变量的值赋值给另一个变量,或者给函数调用传递参数有两种方式:按值传递和按引用传递,本文将给大家详细介绍JavaScript中的按值传递和按引用传递,需要的朋友可以参考下
    2024-05-05
  • js实现加载页面就自动触发超链接的示例

    js实现加载页面就自动触发超链接的示例

    下面小编就为大家带来一篇js实现加载页面就自动触发超链接的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • JavaScript一文带你玩转web表单网页

    JavaScript一文带你玩转web表单网页

    表单通常用来收集网页访问者信息,常见的表单比如搜索引擎的搜索框、各网页应用的注册或者登陆界面等,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下
    2021-10-10
  • Bootstrap路径导航与分页学习使用

    Bootstrap路径导航与分页学习使用

    这篇文章主要为大家详细介绍了Bootstrap路径导航与分页学习使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • JavaScript基础入门之错误捕获机制

    JavaScript基础入门之错误捕获机制

    初级开发人员往往很少使用js的抛出和捕获异常,但抛出和捕获异常往往是非常必要的,这篇文章主要给大家介绍了关于JavaScript基础入门之错误捕获机制的相关资料,需要的朋友可以参考下
    2021-08-08
  • JS在TextArea光标位置插入文字并实现移动光标到文字末尾

    JS在TextArea光标位置插入文字并实现移动光标到文字末尾

    JS在TextArea光标位置插入文字+移动光标到文字末尾,Firefox,Chrome,Safari以及Opera都有selectionStart和selectionEnd属性,具体实现如下,感兴趣的朋友可以参考下哈
    2013-06-06

最新评论