加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

WordPress导航菜单的滚动和淡入淡出效果的实现要点

发布时间:2020-12-13 02:59:22 所属栏目:PHP教程 来源:网络整理
导读:《:WordPress导航菜单的滚动和淡入淡出效果的实现要点》要点: 本文介绍了:WordPress导航菜单的滚动和淡入淡出效果的实现要点,希望对您有用。如果有疑问,可以联系我们。 滚动导航菜单 滚动菜单,顾名思义是以滚动的方式显示和暗藏菜单的. 其实跟淡入淡出

《:WordPress导航菜单的滚动和淡入淡出效果的实现要点》要点:
本文介绍了:WordPress导航菜单的滚动和淡入淡出效果的实现要点,希望对您有用。如果有疑问,可以联系我们。

滚动导航菜单
滚动菜单,顾名思义是以滚动的方式显示和暗藏菜单的. 其实跟淡入淡出菜单和滚动菜单的原理是一样的,前者是在触发事件的时候改变菜单的透明度,而后者则是改变菜单的高度. 那为什么后者的处理难度会比前者高呢? 这正因为菜单高度的处理比透明度有更高的技巧要求. 下面我们就讨论一下该如何处理,并难在什么地方.PHP实例

初期化处理
为了处理更加灵活,我们需要为它定义一个作为参数的滑动速度,也就是每一个单位时间间隔,菜单高度的改变幅度. 另外,我们需要将菜单的初始高度定为 0.PHP实例

// 速度来自参数,默认没个时间单位移动 10px
this.speed = speed || 10;
// 设定初始化高度
this.util.setStyle(this.body,'height','0');

展开和折叠
展开和折叠的方法对应淡入淡出菜单的加强和减小不透明度,只是处理对象不一样,原理是一样的. 要注意将获取的高度转为整型再进行计算.PHP实例

expand: function() {
 // 获取当前高度,并整型化
 var height = parseInt(this.util.getStyle(this.body,'height'));
 // 在时间单位内加上速度,直到高度等于或超过最大高度
 height += this.speed;
 if(height >= this.height) {
 height = this.height;
 // 取消循环调用
 clearTimeout(this.tid);
 }
 // 重新设定菜单高度
 this.util.setStyle(this.body,height + 'px');
}
 
/**
 * 折叠菜单,直到高度为 1 时暗藏菜单
 */
collapse:function() {
 // 获取当前高度,'height'));
 // 在时间单位内减去速度,直到高度等于或小于 1
 height -= this.speed;
 if(height <= 1) {
 height = 1;
 // 暗藏菜单
 this.util.setStyle(this.body,'visibility','hidden');
 // 取消循环调用
 clearTimeout(this.tid);
 }
 // 重新设定菜单高度
 this.util.setStyle(this.body,height + 'px');
}

激活菜单的瞬间
十分十分十分重要,滚动菜单中最具技巧,也最有意思的一部分.
本程序中,我对获取高度的方法进行了封装,获取高度其实是返回元素的 offsetHeight. 按我的理解 (不知道是否正确),offsetHeight 会优先去获取 CSS 样式中的高度并返回,当样式为空时才会去获取元素的实际高度. 所以有以下代码:PHP实例

// 获得初始高度,当鼠标在菜单标题上时获得展开时的初始高度,当鼠标在菜单体上时取得菜单的实际高度
var initHeight = this.util.getStyle(this.body,'height');
// 获得实际高度,必须先清空样式的高度,否则只会得到样式中的高度
this.util.setStyle(this.body,'');
this.height = this.util.getHeight(this.body);
// 重新设定初始高度
this.util.setStyle(this.body,initHeight);

淡出淡入导航菜单
实施操作PHP实例

前面的分析说得有点铝,还是看看代码吧. :) 为了突出改动的部分,我在代码中加入了一些 Log.PHP实例

初始化
初始不透明度为 0,而最大不透明度为被设定值或者 1.PHP实例

// 定义透明度,默认透明
this.opacity = 0;
this.maxopacity = opacity || 1;

激活
先进行前期处理,再对菜单的透明度进行处理.PHP实例

/**
 * 激活方法
 * 当鼠标移动到菜单标题是激活
 */
activate: function() {
 // 获取当前菜单体的位置
 var pos = this.util.cumulativeOffset(this.title);
 var left = pos[0];
 var top = pos[1] + this.util.getHeight(this.title);
 
 // 定义激活时样式
 this.util.setStyle(this.body,'left',left + 'px');
 this.util.setStyle(this.body,'top',top + 'px');
 this.util.setStyle(this.body,'visible');
 this.util.setStyle(this.body,'opacity',this.opacity);
 this.util.setStyle(this.body,'filter','alpha(opacity=' + this.opacity * 100 + ')');
 
 if(this.tid) {
 clearTimeout(this.tid);
 }
 // 不断加强菜单的不透明度
 this.tid = setInterval(this.util.bind(this,this.appear),30);
}

加强菜单的不透明度,直到透明度到达最大不透明度.PHP实例

/**
 * 加强不透明度,直到最大不透明度
 */
appear: function() {
 this.opacity += 0.1;
 if(this.opacity >= this.maxopacity) {
 this.opacity = this.maxopacity;
 // 取消循环调用
 clearTimeout(this.tid);
 }
 // 重新设定透明度
 this.util.setStyle(this.body,'alpha(opacity=' + this.opacity * 100 + ')');
}

解除
对菜单的透明度进行处理.PHP实例

/**
 * 解除方法
 * 当鼠标移动出菜单标题是激活
 */
deactivate: function(){
 if(this.tid) {
 clearTimeout(this.tid);
 }
 // 不断减弱菜单的不透明度
 this.tid = setInterval(this.util.bind(this,this.fade),30);
}

减弱菜单的不透明度,直到透明度为 0 并暗藏菜单.PHP实例

/**
 * 减小不透明度,直到完全透明暗藏菜单
 */
fade:function() {
 this.opacity -= 0.1;
 if(this.opacity <= 0) {
 this.opacity = 0;
 // 暗藏菜单
 this.util.setStyle(this.body,'hidden');
 // 取消循环调用
 clearTimeout(this.tid);
 }
 // 重新设定透明度
 this.util.setStyle(this.body,'alpha(opacity=' + this.opacity * 100 + ')');
}

编程之家培训学院每天发布《:WordPress导航菜单的滚动和淡入淡出效果的实现要点》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读