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 相关文章推荐
javascript 新浪背投广告实现代码
Jul 07 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
Apr 18 Javascript
教你在heroku云平台上部署Node.js应用
Jul 30 Javascript
jquery实现鼠标悬浮停止轮播特效
Aug 20 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
May 03 Javascript
js判断某个字符出现的次数的简单实例
Jun 03 Javascript
基于vue-element组件实现音乐播放器功能
May 06 Javascript
详解如何在vue-cli中使用vuex
Aug 07 Javascript
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
Node 代理访问的实现
Sep 19 Javascript
在vue项目中封装echarts的步骤
Dec 25 Vue.js
JavaScript实现滚动加载更多
Dec 27 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
?算你??的 PHP 程式大小
2006/12/06 PHP
PHP面向对象编程快速入门
2006/12/14 PHP
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
Codeigniter发送邮件的方法
2015/03/19 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
js截取函数(indexOf,join等)
2010/09/01 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
JS中使用media实现响应式布局
2017/08/04 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
vue 动态创建组件的两种方法
2020/12/31 Vue.js
python 多进程通信模块的简单实现
2014/02/20 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
利用指针变量实现队列的入队操作
2012/04/07 面试题
测试驱动开发的主要步骤是什么
2014/12/10 面试题
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL
详解Redis集群搭建的三种方式
2021/05/31 Redis
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL
python神经网络 使用Keras构建RNN训练
2022/05/04 Python