`

自定义html title属性

阅读更多
转自网络,可直接copy使用。
在实际的开发过程中,如过不想新出明细的页面,就可以用title的属性把明细信息都让鼠标悬浮的时候显示出来,但title属性显示出来可能会影响本来页面的信息展示(覆盖原有信息),请结合实际的场景进行使用。
代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>JS控制TITLE悬停效果 - veryhuo.com</title>
<script type="text/javascript">
/**
* className 类名
* tagname HTML标签名,如div,td,ul等
* @return Array 所有class对应标签对象组成的数组
* @example
<div class="abc">abc</div>
var abc = getClass('abc');
for(i=0;i<abc.length;i++){
abc[i].style.backgroundColor='red';
}
*/
function getClass(className,tagname) {
//tagname默认值为'*',不能直接写成默认参数方式getClass(className,tagname='*'),否则IE下报错
if(typeof tagname == 'undefined') tagname = '*';
if(typeof(getElementsByClassName) == 'function') {
return getElementsByClassName(className);
}else {
var tagname = document.getElementsByTagName(tagname);
var tagnameAll = [];
for(var i = 0; i < tagname.length; i++) {
if(tagname[i].className == className) {
tagnameAll[tagnameAll.length] = tagname[i];
}
}
return tagnameAll;
}
}
/**
* JS字符切割函数
* @params     string                原字符串
* @params    words_per_line        每行显示的字符数
*/
function split_str(string,words_per_line) {
//空串,直接返回
if(typeof string == 'undefined' || string.length == 0) return '';
//单行字数未设定,非数值,则取默认值50
if(typeof words_per_line == 'undefined' || isNaN(words_per_line)){
words_per_line = 50;
}
//格式化成整形值
words_per_line = parseInt(words_per_line);
//取出i=0时的字,避免for循环里换行时多次判断i是否为0
var output_string = string.substring(0,1);
//循环分隔字符串
for(var i=1;i<string.length;i++) {
//如果当前字符是每行显示的字符数的倍数,输出换行
if(i%words_per_line == 0) {
output_string += "<br/>";
}
//每次拼入一个字符
output_string += string.substring(i,i+1);
}
return output_string;
}
/**
* 鼠标悬停显示TITLE
* @params     obj        当前悬停的标签
*
*/
function titleMouseOver(obj,event,words_per_line) {
//无TITLE悬停,直接返回
if(typeof obj.title == 'undefined' || obj.title == '') return false;
//不存在title_show标签则自动新建
var title_show = document.getElementById("title_show");
if(title_show == null){
title_show = document.createElement("div");                            //新建Element
document.getElementsByTagName('body')[0].appendChild(title_show);    //加入body中
var attr_id = document.createAttribute('id');                        //新建Element的id属性
attr_id.nodeValue = 'title_show';                                    //为id属性赋值
title_show.setAttributeNode(attr_id);                                //为Element设置id属性
var attr_style = document.createAttribute('style');                    //新建Element的style属性
attr_style.nodeValue = 'position:absolute;'                            //绝对定位
+'border:solid 1px #999999; background:#EDEEF0;'                //边框、背景颜色
+'border-radius:2px;box-shadow:2px 3px #999999;'                //圆角、阴影
+'line-height:18px;'                                            //行间距
+'font-size:12px; padding: 2px 5px;';                            //字体大小、内间距
try{
title_show.setAttributeNode(attr_style);                        //为Element设置style属性
}catch(e){
//IE6
title_show.style.position = 'absolute';
title_show.style.border = 'solid 1px #999999';
title_show.style.background = '#EDEEF0';
title_show.style.lineHeight = '18px';
title_show.style.fontSize = '18px';
title_show.style.padding = '2px 5px';
}
}
//存储并删除原TITLE
document.title_value = obj.title;
obj.title = '';
//单行字数未设定,非数值,则取默认值50
if(typeof words_per_line == 'undefined' || isNaN(words_per_line)){
words_per_line = 50;
}
//格式化成整形值
words_per_line = parseInt(words_per_line);
//在title_show中按每行限定字数显示标题内容,模拟TITLE悬停效果
title_show.innerHTML = split_str(document.title_value,words_per_line);
//显示悬停效果DIV
title_show.style.display = 'block';
//根据鼠标位置设定悬停效果DIV位置
event = event || window.event;                            //鼠标、键盘事件
var top_down = 15;                                        //下移15px避免遮盖当前标签
//最左值为当前鼠标位置 与 body宽度减去悬停效果DIV宽度的最小值,否则将右端导致遮盖
var left = Math.min(event.clientX,document.body.clientWidth-title_show.clientWidth);
title_show.style.left = left+"px";            //设置title_show在页面中的X轴位置。
title_show.style.top = (event.clientY + top_down)+"px";    //设置title_show在页面中的Y轴位置。
}
/**
* 鼠标离开隐藏TITLE
* @params    obj        当前悬停的标签
*
*/
function titleMouseOut(obj) {
var title_show = document.getElementById("title_show");
//不存在悬停效果,直接返回
if(title_show == null) return false;
//存在悬停效果,恢复原TITLE
obj.title = document.title_value;
//隐藏悬停效果DIV
title_show.style.display = "none";
}
/**
* 悬停事件绑定
* @params    objs        所有需要绑定事件的Element
*
*/
function attachEvent(objs,words_per_line){
if(typeof objs != 'object') return false;
//单行字数未设定,非数值,则取默认值50
if(typeof words_per_line == 'undefined' || isNaN(words_per_line)){
words_per_line = 50;
}
for(i=0;i<objs.length;i++){
objs[i].onmouseover = function(event){
titleMouseOver(this,event,words_per_line);
}
objs[i].onmouseout = function(event){
titleMouseOut(this);
}
}
}
// Downloads By http://www.veryhuo.com
//初始化,当页面onload的时候,对所有class="title_hover"的标签绑定TITLE悬停事件
window.onload = function(){
attachEvent(getClass('title_hover'),18);    //行字数设定为18
}
</script>
</head>
<body>
<style>
tr{float:left; margin:0 50px;}
</style>
<table>
<tr>
<td title="这个是默认的TITLE这个是默认的TITLE这个是默认的TITLE这个是默认的TITLE这个是默认的TITLE这个是默认的TITLE">鼠标悬停[原生版本]</td>
</tr>
<tr>
<td title="这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE"
onmouseover="titleMouseOver(this,event,15);" onmouseout="titleMouseOut(this);">鼠标悬停[直接调用函数版本,设定行字数]</td>
</tr>
<tr>
<td class="title_hover" title="ABCTesterABCTesterABCTesterABCTesterABCTesterABCTesterABCTester">鼠标悬停[class控制版本]</td>
</tr>
<tr>
<td title="这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE"
onmouseover="titleMouseOver(this,event);" onmouseout="titleMouseOut(this);">鼠标悬停[直接调用函数版本,默认行字数]</td>
</tr>
</table>
</body>
</html><div style="text-align:center;margin:30px 0 0 0;"><hr style="color:#999;height:1px;">如不能显示效果,请按Ctrl+F5刷新本页。</div>
分享到:
评论

相关推荐

    React项目动态设置title标题的方法示例

    1.在定义路由时增加title属性。 { path: /regularinvestment, component: Loadable({ loader: () =&gt; import('./../../business/Regularinvestment/index'), loading: PageLoading }), title: 这是自定义的

    关于HTML5的data-*自定义属性的总结

    本文讲述了关于HTML5的data-*自定义属性。分享给大家供大家参考,具体如下: 一、关于html元素的特性 1.html元素都存在一些标准的特性:  id 元素在文档中的唯一标识符;  title 有关元素的附加说明信息,一般...

    vue2.0获取自定义属性的值

    这里都会给记录下来,今天要说的是怎么获取自定义属性的值。 HTML &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; [removed][removed] &lt;meta charset=utf-8&gt; &lt;title&gt;JS Bin&lt;/title&gt; &lt;/head&...

    title-tooltip:自动将HTML标题属性转换为更好的更好的工具提示

    将标题属性转换为工具提示 :backhand_index_pointing_right: :backhand_index_pointing_left: 如果您想拥有自定义工具提示,而现在仅拥有title属性,并且您不想更改标记中的任何内容,那么此解决方案将自动显示ustom...

    asp无限分类使用简单功能强大生成HTML自定义表单

    系统支持无限级分类、采集、生成静态HTML、ajax 自定义表单 系统标签说明: 的标签结构形如(ror标签): #{…/} 或 #{…}***{/} 内嵌标签: 标签: ##.../# 如同#{…/} 在#{…/}中使用 字段值:[$$$/] 其中 … ...

    AnalyticsDataHTML:书签以在Alma Analytics Columns属性中添加自定义HTML数据格式

    AnalyticsDataHTML 书签以在Alma Analytics Columns属性中添加自定义HTML数据格式安装转到此网址,然后按照说明进行操作: 如何使用要添加和应用html格式的数据视图,只需打开“列”属性,转到“数据格式”选项卡,...

    AngularJS优雅的自定义指令

    NG内置了许多自定义指令,但是它们有时并不能满足你的要求,这是需要我们创建自定义属性。 二、自定义指令 接下来,我们来做一个小案例,当鼠标单击加价后,列表项自动递增,当然列表也是通过指令自动添加的,它...

    JQUERY的属性选择符和自定义选择符使用方法(二)

    属性选择符就是通过HTML元素的属性选择元素。如获取所有链接的TITLE属性,可以用$('a[title]')

    原生js和jQuery随意改变div属性style的名称和值

    一些简单的例子,用原生js和jQuery实现随意改变div属性,和重置。代码如下: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8"/&gt; &lt;title&gt;函数传参,改变Div任意属性的值&lt;/title...

    Vue自定义指令实现checkbox全选功能的方法

    最近做的一个项目需要用到Vue实现全选功能,参考了一下网上的做法,发现用属性计算的复用性不高,于是选用自定义指令,但网上的做法大多是会对原始数据有一定的格式要求,而且没有返回结果,于是做了改进。...

    HTML中不支持静态Expando的元素的问题

    在使用脚本统一处理一批页面的时候,我希望通过被处理页面的TITLE元素取到文档的标题和我自定义的一些属性。这些附加的属性是我在服务器端通过Attributes集合添加的,可是运行的结果和我的期望老是相去甚远,怎么我...

    jquery获取自定义属性(attr和prop)实例介绍

    $(“form”).attr(“check”);...html xmlns=”http://www.w3.org/1999/xhtml”&gt; &lt;head runat=”server”&gt; &lt;title&gt;&lt;/title&gt; [removed][removed] &lt;/head&gt; &lt;body&gt; &lt;divlang=”

    客至上自助建站手机网CMS系统.rar

    3.SEO站内优化考量:URL静态化处理,URL,Title,Descrption自定义功能,网站结构优化处理.内链结构考量. 二.HTML5手机网站特点 1.手机网站建设简单:灵活更换手机网站模板,图标自定义,自定义栏目,支持二次开发. ...

    从入门到精通HTML5——PDF——网盘链接

     14.2.4 使用setCustomValidity方法自定义  错误信息 268  14.3 增加的页面元素 269  14.3.1 新增的figure元素 270  14.3.2 新增的details元素 271  14.3.3 新增的mark元素 272  14.3.4 新增的progress元素 ...

    jQuery万能浮动框插件,REL属性、鼠标跟随等效果.rar

    4、自定义浮动提示,模拟title的tip提示显示,右上角固定位置的操作提示层(ajax请求中提示,页面跳转中提示等)。 5、自定义容器装载外部图片,无柔化投影。 6、鼠标跟随效果,智能垂直方向、水平方向跟随。 烈火...

    html入门到放弃笔记

    1、创建一个 div 标记 ,增加属性 ,设置 align 属性的值为 center ,设置 id 属性的值为 container,设置 title 属性的值为 这是一个div &lt;div align="center" id="container" title="这是一个div"&gt; 四大标准...

    基于Vue的SPA动态修改页面title的方法(推荐)

    1,App.Vue里面设置title属性,然后页面title去绑定,所有子组件修改标题就通过 this.$root.data.title=xxxxx;去修改 缺点:App.Vue默认的el只是body的一个DIV,这样干需要绑定整个html 2,通过自定义指令实现 Vue....

    透明与窗体的设置

    Android除了可以为指定的Activity设置显示风格,此外也可以为指定的Activity设置一些特效,比如自定义Title,没有Title的Activity或者增加一个ICON等。 有意思的一点是,这些特效并不是你想设置的时候就行设置,你...

    JavaScript+Canvas实现自定义画板的示例代码

    最近研究了HTML5一些新的元素属性,发现确实好用,特别是里面的Canvas这个新的标签元素。官方介绍:Canvas API(画布)是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用...

    前端html5框架ZUI1.2版

    13、Chosen选项及分组支持title属性,Chosen弹出列表支持自定义宽度,调整多选Chosen中选项的样式 14、修复Chosen中特定情况下placeholder无法显示的问题 15、日期时间选择器将能够自动从html标签中获取页面语言设置...

Global site tag (gtag.js) - Google Analytics