前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原生JS TitleTip

原生JS TitleTip

作者头像
Marco爱吃红烧肉
发布2021-07-23 15:15:59
6.2K0
发布2021-07-23 15:15:59
举报
文章被收录于专栏:无敌小笼包无敌小笼包

自用笔记:本文属于自用笔记,不做详解,仅供参考。在此记录自己已理解并开始遵循的前端代码规范。What How Why

原生JS TitleTip

为了实现对特定的A标签Title的美化,使其可以按照我们想要的样式显示。

方案一:

Demo

代码语言:javascript
复制
<a href="#" class="TitleTip" title="BI Scp" >A标签TitleTip</a>
代码语言:javascript
复制
<script type="text/javascript">
	var Common = {
		getItself: function(id) {
			return "string" == typeof id ? document.getElementById(id) : id;
		},
		getTextSize: function(text) {
			var span = document.createElement("span");
			var result = {};
			result.width = span.offsetWidth;
			result.height = span.offsetWidth;
			span.style.visibility = "hidden";
			document.body.appendChild(span);
			if (typeof span.textContent != "undefined") span.textContent = text;
			else span.innerText = text;
			result.width = span.offsetWidth - result.width;
			result.height = span.offsetHeight - result.height;
			span.parentNode.removeChild(span);
			return result;
		}
	}
	var TitleTip = {
		showTitleTip: function(param, linkObj, e) {
			var div;
			if (document.getElementById("TitleTipDiv")) {
				document.body.removeChild(document.getElementById("TitleTipDiv"));
			}
			div = document.createElement("div");
			div.id = "TitleTipDiv";
			// div.style.cssText = "text-align: center; color: #fff; background: rgba(0,0,0,.8); position: absolute; z-index: 100; padding: 5px 15px; font-size: 12px; line-height: 20px; transform: translate(-50%); border-radius: 6px;";
			div.innerHTML = linkObj.tip;
			document.body.appendChild(div);

			if (param && param.width) { //如未设置,默认一行显示
				if (Common.getTextSize(div.innerHTML).width < param.width) {
					div.style.maxWidth = param.width + "px";
				} else {
					div.style.width = param.width + "px";
				}
			}

			//must before set opr to get offsetHeight...
			div.style.display = ""; 

			///set TitleTip position
			// console.log("a W"+linkObj.offsetWidth);
			// console.log("a H"+linkObj.offsetHeight);
			// console.log("a X"+linkObj.offsetTop);
			// console.log("a Y"+linkObj.offsetLeft);
			// console.log("Tip W"+div.offsetWidth);
			// console.log("Tip H"+div.offsetHeight);

			div.style.top = linkObj.offsetTop + linkObj.offsetHeight + 8 + "px";
			div.style.left = linkObj.offsetLeft + linkObj.offsetWidth/2 + "px";

			///hide TitleTip after some time
			if (param && param.time) {
				setTimeout(this.hidTitleTip, param.time);
			}
		},
		hidTitleTip: function() {
			if (document.getElementById("TitleTipDiv")) {
				document.getElementById("TitleTipDiv").style.display = "none";
			}
		},
		addTips: function(param) {
			var linkArr = document.getElementsByTagName("a");
			if (!linkArr) {
				return false;
			}
			for (i = 0; i < linkArr.length; i++) {
				if (linkArr[i].className == "TitleTip") {
					linkArr[i].tip = linkArr[i].title;
					var tipObj = this;
					linkArr[i].onmouseover = function(e) {
						tipObj.showTitleTip(param, this, e);
					}
					linkArr[i].onmouseout = tipObj.hidTitleTip;
					if (param && param.moveable == true) { //默认不滚动
						linkArr[i].onmousemove = function(e) {
							tipObj.showTitleTip(param, this, e);
						}
					}
					linkArr[i].title = "";
				}
			}
		}
	}
	window.onload = function() {
		TitleTip.addTips({
			width: 200
		}); 
		// time:5000, moveable: true 
	}
</script>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原生JS TitleTip
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档