效果展示

实现原理

  1. html结构:

 <div id="contain">
<span id="share">分享</span>
</div>

  2. 外层div为要隐藏在左边的内容,要设置相对定位,并且left为负的容器宽度;鼠标可滑过的“分享”设置绝对定位,相对于外层div的位置可自定义(此处为居中)

  3. 运动函数:

    1)根据目标值和当前位置判断运动方向(设置定时器)

    2)设置运动速度

    3)根据当前位置和速度获取最新位置

    4)到达目标值后停止(清除定时器)

代码实现

HTML:

 <div id="contain">
<span id="share">分享</span>
</div>

CSS:

 * {
margin:;
padding:;
}
#contain {
width: 200px;
height: 200px;
position: relative;
left: -200px;
top:;
background: pink;
}
#share {
width: 25px;
height: 50px;
position: absolute;
left: 200px;
top: 75px;
background: lightgreen;
text-align: center;
line-height: 25px;
}

JavaScript:

 window.onload = function (){
oDiv = document.getElementById('contain');
oDiv.onmouseover = function (){
startMove(0);//0为目标值
}
oDiv.onmouseout = function (){
startMove(-200);//-200为目标值
}
}
var timer = null; function startMove(iTarget){//iTarget为offsetLeft目标值
//开始前清除所有定时器
clearInterval(timer);
var oDiv = document.getElementById('contain');
timer = setInterval(function(){
var speed = 0;
//判断运动方向和speed正负
if (oDiv.offsetLeft < iTarget) {//向右运动弹出
speed = 10;//设置定速
oDiv.style.left = oDiv.offsetLeft + speed + 'px';//现在的位置加上改变的距离
}else if (oDiv.offsetLeft > iTarget) {
speed = -10;
oDiv.style.left = oDiv.offsetLeft + speed + 'px';
}else {//oDiv.offsetLeft == iTarget时
clearInterval(timer);//到达目标值清除定时器
}
},30);
}

以上代码实现后效果如下图,物体为均速运动(speed=10),交互效果并不是最好,我们想实现的是变速运动,只需将定时器部分修改一下。

 function startMove(iTarget){//iTarget为offsetLeft目标值
//开始前清除所有定时器
clearInterval(timer);
var oDiv = document.getElementById('contain');
timer = setInterval(function(){
//设置速度(分母越小速度越快)
var speed = (iTarget - oDiv.offsetLeft) / 8;
//负-->向下取整,正-->向上取整(未达到目标值时speed不能为0)
//如果不取整最后会不能完全达到目标值(下面有效果图)
speed = speed < 0 ? Math.floor(speed) : Math.ceil(speed);
if (oDiv.offsetLeft == iTarget) {
//到达目标值清除定时器
clearInterval(timer);
}else {
//现在的位置加上改变的距离
oDiv.style.left = oDiv.offsetLeft + speed + 'px';
}
},30);
}

至此就可以达到最初变速运动效果~


*变速运动中speed未取整时运动效果(下图)

上图可以发现元素中left的值不能达到0或-200。

*参考资料来源慕课网

*有错误的地方欢迎指正

*转载请注明出处

鼠标滑过侧边弹出内容(JS)的更多相关文章

  1. jquery打造一款侧边弹出的垂直导航

    这是一款利用jquery动画特效和css打造的侧边弹出垂直导航,整个弹出过程比较流畅,而且代码很简单,如果你正在寻找一款带动画的垂直导航,那么可以试试这个.下面是在线demo HTML源码: 1 2 ...

  2. 右上角鼠标滑过展开收缩动画效果js代码的演示页面

    http://files.cnblogs.com/files/tanlingdangan/top_right.rar.gz 右上角鼠标滑过展开收缩动画效果js代码的演示页面http://www.51x ...

  3. 将鼠标移到文本弹出一些字幕CSS达到,不及格JS达到

    使用css实施内容流行,否js代码,下面的代码,可直接使用复制, 需要背景图到下面的地址下载,谢谢! 住址:http://download.csdn.net/detail/zurich1979/722 ...

  4. 使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码】

    项目中常常用到搜索,特别是导航类的网站.自己做关键字搜索不太现实,直接调用百度的是最好的选择.使用jquery.ajax的jsonp方法可以异域调用到百度的js并拿到返回值,当然$.getScript ...

  5. CSS实现鼠标经过网页图标弹出微信二维码

     特点 1.纯CSS实现二维码展示功能,减少加载JS: 2.使用CSS3 transform 属性: ## 第一步 在需要展示二维码的地方添加如下代码,其中<a>标签内容可以根据需要修改成 ...

  6. 使用jqMobi开发app基础:弹出内容的设计

    设计APP,因为屏幕非常小.在PC网页山能够放在一体的内容.在APP中就不能放在一起了. 比如例如以下.项目出勤人员非常多,须要弹出一个panel.然后让用户选择,怎样设计呢? 项目出勤panel的内 ...

  7. bootstrap里面的popover组件如何使鼠标移入可以对弹出框进行一系列的操作

    在bootstrap里面,有一个组件很可爱,它就是popover,它是对标签title属性的优化,奉上连接一枚:http://docs.demo.mschool.cn/components/popov ...

  8. 织梦建站:视频弹出播放JS+CSS

    需要 jquery.js 文件,JS代码一定要放在HTM下面,否则没效果罗! CSS代码: 1.fdspbf{ width:650px; height:550px; position:fixed; l ...

  9. 使用div+iframe实现弹窗及弹出内容无法显示的解决

    使用div+iframe实现弹窗 除了使用实际的弹出窗口,还可以使用控制一个div的display属性来模拟一个弹出窗口的操作,这里使用在Div里放一个iFrame的方式,主要考虑到可以在需要的时候加 ...

随机推荐

  1. PHP新特性Trait

    Trait是PHP 5.4引入的新概念,看上去既像类又像接口,其实都不是,Trait可以看做类的部分实现,可以混入一个或多个现有的PHP类中,其作用有两个:表明类可以做什么:提供模块化实现.Trait ...

  2. Java 虚拟机的内存溢出

    在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生 OutOfMemoryError 异常的可能. 在Eclipse中进行JVM参数设置 可以直接通过上方菜单栏的 ...

  3. mysql数据统计技巧备忘录

    mysql 作为常用数据库,操作贼六是必须的,对于数字操作相关的东西,那是相当方便,本节就来拎几个统计案例出来供参考! order订单表,样例如下: CREATE TABLE `t_order` ( ...

  4. C#遍历文件夹下面所有指定格式文件

    C#遍历指定文件夹中的所有文件 DirectoryInfo TheFolder=new DirectoryInfo(folderFullName);//遍历文件夹foreach(DirectoryIn ...

  5. ARM debian的图形界面安装

    这里图形界面的安装比较简单,启动系统后,登录到root账户,首先要执行更新源的命令:apt-get update  然后直接执行下面的动作: 直接安装LXDE即可: 指令: apt-get insta ...

  6. Android中getDrawable和getColor过时的替代方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 Android SDK 升级到 23 之后,getDrawable和getColor方法提示过时. 解决方案 getResources(). ...

  7. es6入门3--箭头函数与形参等属性的拓展

    对函数拓展兴趣更大一点,优先看,前面字符串后面再说,那些API居多,会使用能记住部分就好. 一.函数参数可以使用默认值 1.默认值生效条件 在变量的解构赋值就提到了,函数参数可以使用默认值了.正常我们 ...

  8. 深入理解 Java 动态代理机制

    Java 有两种代理方式,一种是静态代理,另一种是动态代理.对于静态代理,其实就是通过依赖注入,对对象进行封装,不让外部知道实现的细节.很多 API 就是通过这种形式来封装的. 代理模式结构图(图片来 ...

  9. 翻译:如何向MariaDB中快速插入数据(已提交到MariaDB官方手册)

    本文为mariadb官方手册:How to Quickly Insert Data Into MariaDB的译文. 原文:https://mariadb.com/kb/en/how-to-quick ...

  10. 基于 LWIP 建立 TCP Server 与主机通信实验

    LWIP 版本:2.0.3 上一篇文章是写如何将 LWIP 移植到板子上,今天晚上记录基于 LWIP 实现与主机的网络通信. 先是打开了原子的实验例程,大概浏览了一遍,觉得 TCP 网络网络通信也就是 ...