鼠标滑过侧边弹出内容(JS)
效果展示

实现原理
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)的更多相关文章
- jquery打造一款侧边弹出的垂直导航
这是一款利用jquery动画特效和css打造的侧边弹出垂直导航,整个弹出过程比较流畅,而且代码很简单,如果你正在寻找一款带动画的垂直导航,那么可以试试这个.下面是在线demo HTML源码: 1 2 ...
- 右上角鼠标滑过展开收缩动画效果js代码的演示页面
http://files.cnblogs.com/files/tanlingdangan/top_right.rar.gz 右上角鼠标滑过展开收缩动画效果js代码的演示页面http://www.51x ...
- 将鼠标移到文本弹出一些字幕CSS达到,不及格JS达到
使用css实施内容流行,否js代码,下面的代码,可直接使用复制, 需要背景图到下面的地址下载,谢谢! 住址:http://download.csdn.net/detail/zurich1979/722 ...
- 使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码】
项目中常常用到搜索,特别是导航类的网站.自己做关键字搜索不太现实,直接调用百度的是最好的选择.使用jquery.ajax的jsonp方法可以异域调用到百度的js并拿到返回值,当然$.getScript ...
- CSS实现鼠标经过网页图标弹出微信二维码
特点 1.纯CSS实现二维码展示功能,减少加载JS: 2.使用CSS3 transform 属性: ## 第一步 在需要展示二维码的地方添加如下代码,其中<a>标签内容可以根据需要修改成 ...
- 使用jqMobi开发app基础:弹出内容的设计
设计APP,因为屏幕非常小.在PC网页山能够放在一体的内容.在APP中就不能放在一起了. 比如例如以下.项目出勤人员非常多,须要弹出一个panel.然后让用户选择,怎样设计呢? 项目出勤panel的内 ...
- bootstrap里面的popover组件如何使鼠标移入可以对弹出框进行一系列的操作
在bootstrap里面,有一个组件很可爱,它就是popover,它是对标签title属性的优化,奉上连接一枚:http://docs.demo.mschool.cn/components/popov ...
- 织梦建站:视频弹出播放JS+CSS
需要 jquery.js 文件,JS代码一定要放在HTM下面,否则没效果罗! CSS代码: 1.fdspbf{ width:650px; height:550px; position:fixed; l ...
- 使用div+iframe实现弹窗及弹出内容无法显示的解决
使用div+iframe实现弹窗 除了使用实际的弹出窗口,还可以使用控制一个div的display属性来模拟一个弹出窗口的操作,这里使用在Div里放一个iFrame的方式,主要考虑到可以在需要的时候加 ...
随机推荐
- 8.快速索引、listview
实现这样的效果 布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
- 吴恩达机器学习笔记34-模型选择和交叉验证集(Model Selection and Train_Validation_Test Sets)
假设我们要在10 个不同次数的二项式模型之间进行选择: 显然越高次数的多项式模型越能够适应我们的训练数据集,但是适应训练数据集并不代表着能推广至一般情况,我们应该选择一个更能适应一般情况的模型.我们需 ...
- 基于 jq 实现拖拽上传 APK 文件,js解析 APK 信息
技术栈 jquery 文件上传:jquery.fileupload,github 文档 apk 文件解析:app-info-parser,github 文档 参考:前端解析ipa.apk安装包信息 - ...
- 一文总结 Linux 虚拟网络设备 eth, tap/tun, veth-pair
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Linux 虚 ...
- Hadoop面试题
1.把数据仓库从传统关系数据库转到hadoop有什么优势? 原关系存储方式昂贵 空间有限 hadoop支持结构化(例如 RDBMS),非结构化(例如 images,PDF,docs )和半结构化(例如 ...
- 解决ios关于:ERROR Internal navigation rejected - <allow-navigation> not set for url='about:blank'
在mac上,cordova打包ionic项目为苹果手机app出现 这个问题:ERROR Internal navigation rejected - <allow-navigation> ...
- 解决关于 在android studio 出现的 DELETE_FAILED_INTERNAL_ERROR Error while Installing APK 问题
在ionic2开发中,用android studio 打包apk的时候出现DELETE_FAILED_INTERNAL_ERROR Error while Installing APK. 我的andr ...
- sql server 锁与事务拨云见日(上)
一.概述 讲到sql server锁管理时,感觉它是一个大话题,因为它不但重要而且涉及的知识点很多,重点在于要掌握高并发要先要掌握锁与事务,涉及的知识点多它包括各式各样的锁,锁的组合,锁的排斥,锁延伸 ...
- [Linux][Mac]如何使用SSH登陆远程Linux服务器&使用SCP下载远程终端文件
--------------------------- 2017-01-16 初版 2017-01-17 增加ssh登录端口修改 -------------------------- 一.使用ssh ...
- 微信支付之手机H5支付实践
最近项目中支付部分涉及到微信支付,使用的是h5支付,官方文档中是没有demo的,所以摸着石头过河,将踩过的坑记录如下. 一 应用场景 H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前 ...