慕课-tooltip提示框总结
在慕课上学Waynej老师的tooltip浮动提示框,老师每次讲课都会强调搬砖的流程,这点在上了老师的几节课后宝宝终于体会到了:
分析→设计→编码→优化
分析:分析该功能到底是怎样的,其实就是需求分析,具体可通过演示过程来知道;
设计:分析实现以上功能需要的技术点,详细落实html,css和js部分,分析代码结构,形成大致的样子
编码:搬砖
优化:对缩写的代码分析优化(tooltip案例中主要是缩写重复使用的方法;一些经常使用到的元素提前定义好,免得每次用都去获取一次Dom;还有就是冒泡绑定事件(避免多个事件添加到子元素,可将一些相同的方法绑定到父元素然后冒泡处理;其次冒泡允许多个操作被集中处理))
好了现在是具体哒
判断IE浏览器:
| var isIE = navigator.useAgent.indexOf('MSIE')>=0; |
但是以上方法不能判定是否是IE11,综合能判断包括IE11的代码如下:
| var isIEeleven = navigator.useAgent.indexOf('Trident') >= 0 && navigator.useAgent.indexOf('rv:11') >=0; |
判断IE8-10的如下:
| vavigator.useAgent.indexOf('MSIE') >=0 && vavigator.useAgent.indexOf('Trident') >=0; |
判断IE6-7的如下:
| vavigator.useAgent.indexOf('MSIE') >=0; |
顺手总结一下好了,上代码:
function browser(){
var ua=window.navigator.userAgent;
//*****检测IE*****//
//检测Trident引擎,IE8+
if(/Trident/.test(ua)){
//IE11+
if(/rv:(\d+)/.test(ua)){
alert('IE11');
}
//IE8-IE10
if(/MSIE (\d+)/.test(ua)){
alert('IE8-10');
}
}
//检测IE标识,IE7-
if(/MSIE (\d+)/.test(ua)){
alert('IE7-');
}
//*****检测chrome*****//
if(!/OPR/.test(ua)){
if(/Chrome\/(\S+)/.test(ua)){
alert('chrome');
}
}
//*****检测Safari*****//
//需先排除opera
if(!/OPR/.test(ua)){
//检测出chrome和safari浏览器
if(/Safari/.test(ua)){
//检测出safari
if(/Version\/(\S+)/.test(ua)){
alert('safari');
}
}
}
//*****检测Firefox*****//
if(/Firefox\/(\S+)/.test(ua)){
alert('firefox');
}
//*****检测opera*****//
if(/OPR\/(\S+)/.test(ua)){
alert('opera');
}
}
browser();
关于识别浏览器内核、版本还有操作系统、移动端设备的,详细可查看:http://www.cnblogs.com/xiaohuochai/p/4822001.html?utm_source=tuicool&utm_medium=referral 在此跪谢作者,嘻嘻~
统一绑定事件的方法:
function addEvent(element ,event ,callbackFunction){
if(elemen . addEventListener){
element.addEventListener(event , callbackFunction,false);
}
//IE
else if (element . attachEvent){
element . attachEvent('on' + event , callbackFunction);
}
}
addEvent(element , 'event' ,function( e ){
//获取event对象,其他浏览器可通过e这样一个参数来获取,而IE需要window.event
var event = e || window.event ;
//获取触发事件的源,IE不支持target
var target=event.target || evnet.srcElement
......
});
关于jQuery中 .bind \ .live\ .delegate 绑定事件:
不过从jQuery1.7开始把这些合并成了on()方法,unbind\die\undelegate合并成了 off();
bind只能对已有元素绑定,而且是直接绑定在元素上,对未来的元素不起作用,而live和delegate是通过冒泡法绑定的且能对后续新增的元素起作用;
live 和delegate的区别,看下面的例子:
$('a').live('click', function() { .... });
$(document).delegate('a', 'click', function() { .... });
实际上后者会快于前者,前者要扫描整个文档查找$('a')元素并将之存储为jQuery对象,而delegate仅需要查找并存在$('delegate')元素;所以一般更倾向于用delegate
还有几个
setTimeout:在指定毫秒数后执行函数或表达式,且只执行一次 ; 若需多次执行,应使用setInterval() 或者让code本身再次调用setTimeout,此时需要停止的话就分别用
clearInterval和clearTimeout ;
setInterval : 按指定周期来执行函数或表达式;而clearInterval()是用于取消setInterval的,一般这么用:
|
var timer=setInterval( function(){ ...... }); clearInterval(timer); |
onmouseenter和onmouseover的区别,onmouseover穿过其子元素也会触发事件,而onmouseenter不会;同理onmouseleave和onmouseout;
/*****ok , 理论上整理完毕~madamada danei*****/
话说真的好久好久好久木有撸代码了,从元旦收假后就一直在准备期末考试,十多天得时间,一学期了有的书我都没拆封的 = =。。差点残了。。。。理论上应该还是不会挂的;13号晚上到的家,哦嚯嚯~愉快搬砖
慕课-tooltip提示框总结的更多相关文章
- 纯CSS实现tooltip提示框,CSS箭头及形状之续篇--给整个tooltip提示框加个边框
在前面一篇中我们介绍了纯CSS实现tooltip提示框,通俗的讲也就是CSS箭头及形状 不过注意一点是,他始终是一个元素,只是通过CSS实现的,今天我们要说的是给这个“tooltip提示框”整体加一个 ...
- 使用css实现全兼容tooltip提示框
在上一篇文章中,使用css实现了一个全兼容的三角形图标,这个三角型图标可以使用于多种场景,比如下拉图标.多级菜单等,这篇文章我们使用这个图标通过纯css来实现一个我们常见的tooltip提示框. 最终 ...
- CSS3实现Tooltip提示框飞入飞出动画
原文:CSS3实现Tooltip提示框飞入飞出动画 我们见过很多利用背景图片制作的Tooltip提示框,但是缺点是扩展比较麻烦,要经常改动图片.还有就是利用多层CSS的叠加实现,但是效果比较生硬,外观 ...
- Echarts数据可视化tooltip提示框,开发全解+完美注释
全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...
- echarts中tooltip提示框位置控制
关键代码: position: function(point, params, dom, rect, size) { //其中point为当前鼠标的位置,size中有两个属性:viewSize和con ...
- MFC中添加ToolTip提示框
PART 1 MFC 对话框中的 Buttton添加提示 例如我们想在一个对话框中的一个button控件添加tooltip,实现的方法如下: 1. 在该对话框的类中添加一个CToolTipCtrl类型 ...
- tooltip提示框组件
Tooltip 提示框组件 可独立于其他组件通过$.fn.tooltip.defaults重写默认的defaults.当用户移动鼠标指针在某个元素上时,出现提示信息窗口来显示额外信息.提示内容可以包含 ...
- 第一百九十六节,jQuery EasyUI,Tooltip(提示框)组件
jQuery EasyUI,Tooltip(提示框)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Tooltip(提示框)组件的使用方法, ...
- echarts自定义tooltip提示框内容
1.echarts自定义tooltip提示框内容 https://blog.csdn.net/dreamsup/article/details/56667330 2.关于Echarts的formatt ...
随机推荐
- C#联接序列
1. Concat() – 串联序列(有重复项) var healthFoods = new List<string> { "fruits", "veget ...
- 什么是php扩展
PHP扩展英文为PHP Extension and Application Repository,简称pear(下面都以pear简称),中文全称为PHP扩展与应用库.是为了创建一个类似于Perl CP ...
- python3入门之基础语法
Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法 ...
- jmeter:清除本地指定目录下的所有类型文件
1,创建一个sampler 2,要在本地有一个目录的文件 3,直接上代码 String path = "C:\\临时文件\\test111" ; File file ...
- Hibernate使用时需要注意的几个小问题
今天晚上玩了一下JDBC连接数据库,之后又利用Hibernate进行了数据库的访问,感觉利用Hibernate对数据库访问在文件配置好了之后确实更加简单快捷. 但是在操作的过程中也有一些细节需要注意一 ...
- 用bootstrap和css3制作按钮式下拉菜单
利用bootstrap框架的字体图标和下拉菜单效果,以及css3的动画效果,可以做出比较优雅的按钮式下拉菜单样式 <style> .myBtnStyle .dropdown-menu sp ...
- oracle用户权限管理
oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权 1.查看当前数据库所有用户: select * from all_users; 2.查看表所支持的权限: select ...
- Pandas案例--人口密度分析
需求: 导入文件,查看原始数据 将人口数据和各州简称数据进行合并 将合并的数据中重复的abbreviation列进行删除 查看存在缺失数据的列 找到有哪些state/region使得state的值为N ...
- each of which 用法
each of which 在以下為 同位語,非關代. 1. An urn contains two balls, each of which is known to be either white ...
- P2619 [国家集训队2]Tree I(最小生成树+二分)
P2619 [国家集训队2]Tree I 每次二分一个$x$,每条白边加上$x$,跑最小生成树 统计一下满足条件的最小值就好了. to me:注意二分不要写挂 #include<iostream ...