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


Posted in Javascript onNovember 17, 2016

本文实例讲述了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://3water.com/">https://3water.com/</a></p>
  </div>
  </li>
  <li>
  <h2>三水点靠木 2</h2>
  <div <p>三水点靠木--专业IT综合性网站<br /><br /><a target="_blank" href="https://3water.com/">https://3water.com/</a></p>
  </div>
  </li>
  <li>
  <h2>三水点靠木 3</h2>
  <div <p>三水点靠木--专业IT综合性网站<br /><br /><a target="_blank" href="https://3water.com/">https://3water.com/</a></p>
  </div>
  </li>
  <li>
  <h2>三水点靠木 4</h2>
  <div <p>三水点靠木--专业IT综合性网站<br /><br /><a target="_blank" href="https://3water.com/">https://3water.com/</a></p>
  </div>
  </li>
  <li>
  <h2>三水点靠木 5</h2>
  <div <p>三水点靠木--专业IT综合性网站<br /><br /><a target="_blank" href="https://3water.com/">https://3water.com/</a></p>
  </div>
  </li>
  <li>
  <h2>三水点靠木 6</h2>
  <div <p>三水点靠木--专业IT综合性网站<br /><br /><a target="_blank" href="https://3water.com/">https://3water.com/</a></p>
  </div>
  </li>
</ul>

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

Javascript 相关文章推荐
HTML TO JavaScript 转换
Jun 26 Javascript
javascript中的onkeyup和onkeydown区别介绍
Apr 28 Javascript
js正文内容高亮效果的实现方法
Jun 30 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
Aug 10 Javascript
微信小程序(应用号)开发新闻客户端实例
Oct 24 Javascript
解析js如何获取css样式
Dec 11 Javascript
Vue DevTools调试工具的使用
Dec 05 Javascript
vue 过滤器filter实例详解
Mar 14 Javascript
vue 组件中添加样式不生效的解决方法
Jul 06 Javascript
Vue实现按钮旋转和移动位置的实例代码
Aug 09 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
Jul 24 Javascript
js前端图片加载异常兜底方案
Jun 21 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
Nov 17 #Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
Nov 17 #Javascript
leaflet的开发入门教程
Nov 17 #Javascript
JavaScript中关于iframe滚动条的去除和保留
Nov 17 #Javascript
JS实现倒计时(天数、时、分、秒)
Nov 16 #Javascript
探讨AngularJs中ui.route的简单应用
Nov 16 #Javascript
jQuery 插件封装的方法
Nov 16 #Javascript
You might like
function.inc.php超越php
2006/12/09 PHP
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
让PHP支持断点续传的源码
2010/05/16 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
最佳JS代码编写的14条技巧
2011/01/09 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
React Native 真机断点调试+跨域资源加载出错问题的解决方法
2018/01/18 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
vue-cli配置flexible过程详解
2019/07/04 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
Python中decorator使用实例
2015/04/14 Python
python访问系统环境变量的方法
2015/04/29 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
python处理RSTP视频流过程解析
2020/01/11 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
小学语文国培研修日志
2015/11/13 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers