javascript 动态创建tip图片提示
前言:
在做前端的项目中,经常看到移动一个小图标上显示这个图标对应的大图的提示,之前的做法是在小图标的位置后面添加一个div,然后移动到小图标然后显示这个图标的图片!但是这个方法做的时候发现,如果提示图片很多,要控制大图片的定位样式要写好多,很费时,效率也不好!
后来想过利用在小图标的上添加一个自定义属性,js通过读取这个图标的上自定义属性自动创建一个大图的div,而且生成相应的位置!移出小图标还可以删除这个div!
1、实现方式
html结构:
<a href="javascript:;" class="tooltip zmxl" rel="http://cache.zuixiaoyao.com/act/special/yinuo/images/sub/tip1.jpg"></a>
2、js实现
计算元素的绝对位置
unction GetAbsoluteLocation(element) { if ( arguments.length != 1 || element == null ) { return null; } var offsetTop = element.offsetTop; //获取元素距离父元素顶部的高度var offsetLeft = element.offsetLeft; //获取元素距离父元素左部的距离var offsetWidth = element.offsetWidth; //获取元素自身的宽度var offsetHeight = element.offsetHeight; //获取元素自身的高度while( element = element.offsetParent ) { //如果有上级元素,继续叠加运算offsetTop += element.offsetTop; offsetLeft += element.offsetLeft; } return { absoluteTop: offsetTop, absoluteLeft: offsetLeft, offsetWidth: offsetWidth, offsetHeight: offsetHeight }; //返回这个元素的位置对象}
主体实现
$('.tooltip').each(function(i){$(this).hover(function(){var _this = $(this)[0];//当前元素的dom对象var pos = GetAbsoluteLocation(_this);//计算位置var div = document.createElement('div');//创建一个divvar p = document.createElement('p');//创建一个p标签p.innerHTML = '<img src="http://cache.zuixiaoyao.com/act/special/yinuo/images/sub/loading.gif" width="50" height="54"/>';//loading图片div.appendChild(p);//添加p到div中div.id = 'pos_h_cread';//给div添加一个IDdiv.style.position = 'absolute';div.style.zIndex = 9999999;div.style.left = pos.absoluteLeft + 'px';if($(this).attr('pos') == 'r'){div.style.left = pos.absoluteLeft - 60 + 'px';}div.style.top = (pos.absoluteTop + pos.offsetHeight)+ 'px';document.body.appendChild(div);var image = new Image();//创建一个image对象image.onload = function(){var _w = this.width;//获取图片的宽度var _h = this.height;//获取图片的高度div.innerHTML = '<img src='+ sr_img +' width='+ _w +' height='+ _h +'/>';}; image.src = $(this).attr('rel');//指定urlvar sr_img = image.src;},function(){$('#pos_h_cread').remove();}) });
3、原生js实现
var tooltip = {getpos:function(element){if ( arguments.length != 1 || element == null ) { return null; } var offsetTop = element.offsetTop; var offsetLeft = element.offsetLeft; var offsetWidth = element.offsetWidth; var offsetHeight = element.offsetHeight; while( element = element.offsetParent ) { offsetTop += element.offsetTop; offsetLeft += element.offsetLeft; }return { absoluteTop: offsetTop, absoluteLeft: offsetLeft, offsetWidth: offsetWidth, offsetHeight: offsetHeight }; },isSelector:function(){return !! document.querySelector ? true : false;},init:function(){var box = [];if(this.isSelector()){box = document.querySelectorAll('.tooltip');}else{var a = [];var elm = document.getElementsByTagName('*');var _l = elm.length;for(var i=0;i<_l;i++){if(/\s*tooltip\s*/.test(elm[i].className)){a.push(elm[i]);}}box = a;}for(var i=0;i< box.length;i++){box[i].onmouseover = function(){var _this = this;var pos = tooltip.getpos(_this);var div = document.createElement('div');var p = document.createElement('p');p.innerHTML = '<img src="http://cache.shumenol.com/act/plugin/tooltip/loading.gif" width="50" height="54"/>';div.appendChild(p);div.id = 'pos_h_cread';div.style.position = 'absolute';div.style.zIndex = 9999999;div.style.left = pos.absoluteLeft + 'px';div.style.top = (pos.absoluteTop + pos.offsetHeight)+ 'px';document.getElementsByTagName("body")[0].appendChild(div);var image = new Image();image.src = _this.getAttribute('rel');image.src = _this.rel;var sr_img = image.src;image.onload = function(){var _w = this.width;var _h = this.height;div.innerHTML = '<img src='+ sr_img +' width='+ _w +' height='+ _h +'/>';}; image.src = _this.getAttribute('rel');image.src = _this.rel;sr_img = image.src;}box[i].onmouseout = function(){var n = document.getElementById('pos_h_cread');if(n && n.parentNode && n.tagName != 'BODY'){ n.parentNode.removeChild(n); } }}} } tooltip.init();
转载于:https://www.cnblogs.com/shizhouyu/p/4952634.html
javascript 动态创建tip图片提示相关推荐
- javascript动态创建可拖动、最大化、最小化的层
javascript动态创建可拖动.最大化.最小化的层 2010-02-06 13:19 用Javascript实现div层的拖动是很常见的一种操作,比如弹出提示对话框,快捷登录等等.之前用隐藏层的方 ...
- QT通过JavaScript动态创建QML对象
QT通过JavaScript动态创建QML对象 通过JavaScript动态创建QML对象 动态创建对象 动态创建组件 从QML字符串创建对象 维护动态创建的对象 动态删除对象 通过JavaScrip ...
- Javascript动态创建SVG圆弧
Javascript动态创建SVG圆弧 0. 起源 需要做一个展示统计数据(百分比)的小部件,默认情况下该小部件是隐藏的.页面右边放置一个圆形的按钮,当点击按钮时小部件从右边滑出显示. 本着尽可能多的 ...
- html表单通过js提交表单提交,JavaScript动态创建form表单并提交的实现方法
本文实例讲述了JavaScript动态创建form表单并提交的实现方法.分享给大家供大家参考,具体如下: 页面布局有些复杂的情况下,可能需要在页面中动态创建一个 form,JavaScript 创建 ...
- javascript动态创建表格:新增、删除行和列
利用js来动态创建表格有两种格式,appendChild()和insertRow.insertCell().两种方式其实差不多,但第一种有可能在IE上有问题,所以推荐大家使用第二种了,直接说吧. 1. ...
- javascript 动态创建表格:新增、删除行和单元格
2019独角兽企业重金招聘Python工程师标准>>> 利用js来动态创建表格有两种格式,appendChild()和insertRow.insertCell().两种方式其实差不多 ...
- 利用javascript动态创建表格
//说明:实现功能.原理上文相同.不过这次是利用已有的简单的方法创建行和列,并实现内容行鼠标移入变色功能! 效果图: /*两个方法 1. trNode table.insertRow(-1) ...
- javascript动态创建radio button元素支持IE/Firefox
我们都知道在IE中创建表单元素可以有三种方式 var oInput = document.createElement("input"); var oInput = document ...
- php动态增加div,JavaScript动态创建div等元素实例
js动态创建div等元素实例 var Test={ createDiv:function(){ var div = document.createElement('div'); div.id=&quo ...
最新文章
- Skia的SkCamera.cpp的doUpdate() 算法。
- java免安装工具包_Java1.8安装及环境变量配置
- 二十年最强悍病毒排行榜
- win2008修改远程端口
- MockPlus原型设计介绍
- OpenShift 4 - DevSecOps (4) - 实现一个 CICD Pipeline,并用 RHACS 发现安全隐患
- JavaScript中的函数表达式
- ConfigParser.InterpolationSyntaxError: ‘%‘ must be followed by ‘%‘ or ‘(‘, found: “%‘“
- oracle数据库静态启动,ORACLE数据库的连接
- 架构篇:高可用 Redis 服务架构分析与搭建
- make_classification参数
- java图书管理系统(MySQL)
- 计算力学:显式积分与隐式积分小结
- java实习生面试一些技巧
- python如何计算平均分_python脚本如何输入成绩求平均分?
- Domino V12 Beta新玩法
- 数据可视化:科研论文配色
- ksh 命令退出状态
- 指数函数,幂函数记录
- @Scheduled使用及讲解