效果展示

实现原理

  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. UnicodeDecodeError:utf-8codeccantdecodebyte0xb9inposition0:invalidstartbyte

    相信这个问题大家都会以为是编码的问题,当然原本我也以为是编码问题! 然后试了各种方案!都是以失败告终!     哈哈哈,后来解决了,原来真是闹了个大笑话............         这是因 ...

  2. Enum扩展特性,代替中文属性

    由于对英语的天生缺陷,在枚举时一直使用中文,这样就不用看注释就知道枚举意思,今天看到博文 https://www.cnblogs.com/emrys5/p/Enum-rename-htmlhelper ...

  3. bootstrap treeview实现菜单树

    本博客,介绍通过Bootstrap的treeview插件实现菜单树的功能. treeview链接:http://www.htmleaf.com/Demo/201502141380.html ORM框架 ...

  4. SPA架构的优点和缺点以及一些思考

    SPA是什么? 全称是单页面应用. 一个SPA就是一个WEB应用,它所需的资源(HTML CSS JS等),在一次请求中就加载完成,也就是不需刷新地动态加载. 用术语“单页”就是因为页面在初始化加载后 ...

  5. Spring Boot 2.1.0 已发布,7 个重大更新!

    距离<重磅:Spring Boot 2.0 正式发布!>已经过去大半年了,而 Spring Boot 2.1.0 在 10 月底就发布了,我们来看下 Spring Boot 2.1.0 都 ...

  6. Java异常处理 10 个最佳实践

    异常处理是Java 开发中的一个重要部分.它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等.Java提供了几个异常处理特性,以try,catch 和 ...

  7. 持续集成工具之Jenkins

    Jenkins是一个很好的持续集成工具,不光可以帮助开发进行自动打包,自动验证升级和安装,也可以帮助测试人员定时执行测试任务,或者在开自动打包安装之后自动执行测试任务,实现打包-安装-测试一条线服务, ...

  8. ubuntu16.04 在线安装docker ce

    官方文档:https://docs.docker.com/install/linux/docker-ce/ubuntu/   ubuntu创建普通用户: adduser dk001 给该用户添加sud ...

  9. 【Android基础】Fragment 详解之Fragment生命周期

    上一篇文章简单介绍了一下Fragment,这一篇文章会详细的说一下Fragment的生命周期和创建一个用户界面. Fragment的主要功能就是创建一个View,并且有一个生命周期来管理这个View的 ...

  10. Java 容器 & 泛型:六、容器讲到为什么要使用泛型

    Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket ArrayList是集合类中无处不在的,泛型也是,泛型对集合类尤其有用.但是为啥要使用泛型?理解好了这 ...