鼠标滑过侧边弹出内容(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的方式,主要考虑到可以在需要的时候加 ...
随机推荐
- Javascript高级编程学习笔记(25)—— 函数表达式(3)模仿块级作用域
昨天写了闭包 今天就来聊聊块级作用域的事情 在绝大多数编程语言中,都有块级作用域这个概念 什么是块级作用域呢? 前面我们在刚开始讲的时候说过,JS中的大括号(不在赋值运算符的后面)表示代码块 块级作用 ...
- 转载----开发者大杀器 —— 刨根问底,揪出 Android App 耗电的元凶代码
转载文章地址:http://www.jianshu.com/p/27ba2759b221
- PHP调用百度天气接口API
//百度天气接口API $location = "北京"; //地区 $ak = "5slgyqGDENN7Sy7pw29IUvrZ"; //秘钥,需要申请,百 ...
- 第75节:Java的中的JSP,EL和JSTL
第75节:Java中的JSP,EL和JSTL 哭吧看不完的!!! Cookie和`Session 请求转发和重定向的区别: 地址不一样 请求次数也不一样 数据无法传递 4.跳转范围有限制 效率 请求转 ...
- OAuth2简易实战(四)-Github社交联合登录
1. OAuth2简易实战(四)-Github社交联合登录 1.1. 用到的第三方插件 https://github.com/spring-projects/spring-social-github ...
- android用OkHttp和okio包通信的坑--气死我了
今天新建了个项目,想要用用okhttp包来实现Android和tomcat的通信, 于是就根据记忆,把以前可以用的代码复制过来了,然后呢,出现这个.... 图有点大,不知到怎么调小 很莫名其妙,我看了 ...
- .NET Core SDK在Windows系统安装后出现Failed to load the hostfxr.dll等问题的解决方法
这次无论如何也要记录下,原因是今天在一台Windows2008R2的电脑上安装.NET Core SDK后再命令行执行dotnet --info 居然爆出了"Failed to load t ...
- vue axios 简单封装以及思考
先安装 axios npm install axios axios的详细介绍以及用法 就不多说了请 移步 github ➡️ https://github.com/axios/axios 下面是简单 ...
- 【python】版本35 正则-非库-爬虫-读写xlw文件
#交代:代码凌乱,新手一个,论坛都是高手,我也是鼓了很大勇气,发出来就是被批评和进步的 #需求:需要对某网站的某id子标签批量爬取,每个网页的id在xlw里,爬取完,再批量存取到这xlw里的第6行 ...
- spring-boot-starter大力出奇迹
一.前言 上篇文章我们已经聊了SpringBoot的启动过程中的各类扩展点,那么从http://start.spring.io上我们生成的demo项目中,到目前就剩下了maven工程的pom.xm ...