在页面上经常遇到显示个文章标题什么的.
我以前用fn:substring.但是看不到全部.有时候感觉很不舒服..所以写了这么个标签..当鼠标移动到文字上的时候,把完整的信息给显示出来..大家看看如何?帮忙提提改进的建议~~
<%--
Document : subString
Created on : 2008-5-21, 21:44:12
Author : XieLei
--%>
<%@ tag description="截断字符串显示.并在鼠标经过时提示完整信息!" pageEncoding="UTF-8"%>
<%@ tag body-content="scriptless" %>
<%@ attribute name="className" rtexprvalue="true" type="java.lang.String" description="指定提示信息的样式" %>
<%@ attribute name="width" rtexprvalue="true" type="java.lang.String" description="指定要显示的长度" %>
<%@ attribute name="text" rtexprvalue="true" type="java.lang.String" description="要显示的文本" %>
<%@ attribute name="newLine" rtexprvalue="true" type="java.lang.Boolean" description="提示完整信息是否换行,如果设置必须指定width属性" %>
<%@ attribute name="newLineClass" rtexprvalue="true" type="java.lang.String" description="设置提示信息的文本" %>
<%@ attribute name="newLineWidth" rtexprvalue="true" type="java.lang.Integer" description="长度达到width就自动换行" %>
<jsp:doBody var="content" scope="page" />
<%try{
Object xl_test_view_js_is_has = request.getAttribute("xl_test_view_js_is_has");
if(xl_test_view_js_is_has == null || !(Boolean)xl_test_view_js_is_has){
%>
<script type="text/javascript">
//全局变量,标注是否创建了元素
var xl_test_view_mp_js_has = false;
//显示元素
function xl_test_view_mp_showMp(newlineClass,event,obj,text,newline,width){
var x = event.clientX+3 + "px";
var y = event.clientY-30 + "px";
var width = width;
//如果没有创建过元素可以创建元素
if(!xl_test_view_mp_js_has){
//创建新元素
var newSpan = document.createElement("span");
//设置个id.用来删除
newSpan.id = "xl_test_view_mp";
//设置元素内容
newSpan.innerHTML = text;
//设置元素样式.根据当前鼠标位置显示
newSpan.style.fontSize = '12px';
newSpan.style.fontStyle = 'normal';
newSpan.style.fontWeight = 'normal';
newSpan.style.textDecoration = 'none';
newSpan.style.overflow = '';
newSpan.style.color = '#000000';
newSpan.style.border = '1px solid #0c2b69';
newSpan.style.background = '#b5d5f0';
newSpan.style.position = 'absolute';
newSpan.style.width = 'auto';
newSpan.style.top = y;
newSpan.style.left = x;
newSpan.style.zIndex = '1000';
newSpan.style.whiteSpace = 'normal';
newSpan.style.wordWrap = 'break-word';
newSpan.style.wordBreak = 'normal';
//如果自动换行,进行处理
if(newline){
if(width==null){
width = 500;
}
newSpan.style.width = width+'px';
}
if(newlineClass != null && newlineClass != 'empty'){
newSpan.className = newlineClass;
}
//添加元素
obj.parentNode.appendChild(newSpan);
//全局变量,标注是否创建了元素
xl_test_view_mp_js_has = true;
}
}
//删除元素
function xl_test_view_mp_hideMp(obj){
xl_test_view_mp_js_has = false;
try{
var node = document.getElementById('xl_test_view_mp');
node.parentNode.removeChild(node);
}catch(e){}
}
</script>
<%
request.setAttribute("xl_test_view_js_is_has",true);
}
}catch(Exception ex){}
%>
<div style='border:1px solid red;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width: ${width == null ? '100%' : width}'
${className == null ? "" : "class='className'"}
onmouseout="xl_test_view_mp_hideMp(this)"
onmousemove="xl_test_view_mp_showMp('${newLineClass == null ? "empty" : newLineClass}',event,this,'${text == null ? content : text}',${newLine == null ? false : true},${newLineWidth == null ? 100 : newLineWidth})">
${content}
</div>
页面使用
<%@ taglib tagdir="/WEB-INF/tags/" prefix="xl" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h2>Test NewLine</h2>
<br/>
<xl:subString width="100px" newLine="true" newLineWidth="300" text="指定提示的内容:四川的兄弟们努力!">生死不离,你的梦落在哪里。想着生活继续。天空失去美丽,你却等待明天站起。无论你在哪里,我都要找到你。血脉能创造奇迹。你的呼喊就刻在我的血液里</xl:subString>
<br/>
<xl:subString width="100px" newLine="true" newLineWidth="300">生死不离,你的梦落在哪里。想着生活继续。天空失去美丽,你却等待明天站起。无论你在哪里,我都要找到你。血脉能创造奇迹。你的呼喊就刻在我的血液里</xl:subString>
<br/>
<xl:subString width="100px">生死不离,你的梦落在哪里。想着生活继续。天空失去美丽,你却等待明天站起。无论你在哪里,我都要找到你。血脉能创造奇迹。你的呼喊就刻在我的血液里</xl:subString>
<br/>
<xl:subString width="100px" newLine="true">生死不离,你的梦落在哪里。想着生活继续。天空失去美丽,你却等待明天站起。无论你在哪里,我都要找到你。血脉能创造奇迹。你的呼喊就刻在我的血液里</xl:subString>
<br/>
<a href="#"><xl:subString width="100px" newLine="true">生死不离,你的梦落在哪里。想着生活继续。天空失去美丽,你却等待明天站起。无论你在哪里,我都要找到你。血脉能创造奇迹。你的呼喊就刻在我的血液里</xl:subString></a>
</body>
</html>
这里有我刚刚发的一个html.没有封装的.
http://www.iteye.com/topic/195439
分享到:
- 2008-05-21 23:50
- 浏览 807
- 评论(0)
- 论坛回复 / 浏览 (0 / 2405)
- 查看更多
相关推荐
标题中的“最全的USB封装及FPC封装.rar”表明这是一个关于电子设计的资源集合,主要涵盖USB(通用串行总线)和FPC(柔性印刷电路)的封装设计。这些封装是电子设计自动化(EDA)软件,如Protel AD(Altium Designer...
这个压缩包“VB将TXT功能操作封装成类文件.rar”提供了一个实用的工具,它允许开发者轻松地执行读取、写入、修改和打印TXT文件等任务,而无需每次都编写相同的代码。下面我们将详细探讨这些功能及其背后的编程概念。...
Easy Sysprep是一个功能强大的封装工具,能够智能自动处理驱动,减少封装过程中的麻烦。使用该工具可以快速完成封装过程,并且提供了默认的封装设置,方便新手使用。 自由天空ES3封装XP过程 要完成封装过程,需要...
标题中的“双层PS2封装C软件.rar”指的是一个使用Cadence 16.6软件进行设计和封装的工程,其中包含了与PS2(Peripheral Component Interconnect,外设部件互连)接口相关的双层封装技术。PS2是早期个人计算机上常见...
另一个文件名 "SOT223" 看起来像是一个错误,因为SOT223是另一种封装,它有四个或六个引脚,比SOT23大,通常用于功率晶体管或场效应管。这可能是额外的封装库文件,或者是与SOT23封装一起讨论的对比参考。 综合以上...
本项目“ios-自定义标签,类似滴滴打车评论的标签.zip”提供了一个自定义标签的实现,它模仿了滴滴打车应用中评论标签的样式,具有高度的可扩展性和灵活性,允许开发者轻松调整标签的属性以满足特定的设计需求。...
在标签中,“源码”和“工具”意味着我们将探讨这个库的内部工作原理,以及它是如何作为一个开发工具来使用的。源码分析有助于我们理解其实现细节,而不仅仅是使用API。 在文件列表中,“FileUpload--develop”可能...
根据提供的文件信息,这个文件标题为《常用封装.pdf》,描述是“常用封装标准说明,供您参考”,标签是“综合文档”。从这些信息来看,文档内容与电子元件,尤其是电容器的封装方式有关。虽然提供的部分文字内容似乎...
Swift封装MBProgressHUD是一个高效的方法,使得在Swift项目中集成和使用MBProgressHUD变得更加便捷。MBProgressHUD是一个流行的iOS加载指示器库,它提供了一种优雅的方式来显示进度或活动指示。通过将MBProgressHUD...
【App封装源码整站分发PHP源码.zip】是一个包含PHP源代码的压缩包,主要用于构建一个完整的App封装和分发系统。该系统能够处理Android与iOS应用的打包和分发工作,允许用户通过一个统一的链接进行访问。下面我们将...
RFID(无线射频识别)技术是一种非接触式的...从整体上来看,RFID封装技术研究是一个复杂的工程领域,涵盖了材料科学、电子工程、通信技术等多个学科,随着技术的不断发展,其在制造和应用层面都有着广阔的发展空间。
标题中的“AD贴片封装(部分带3D模型).rar”指的是一个包含Altium Designer(AD)中的贴片元件封装库,其中一部分封装带有3D模型。Altium Designer是一款广泛使用的PCB(印制电路板)设计软件,它允许工程师创建、...
标题中的“发布一个实用的js window封装类”指的是在JavaScript编程中,开发者为了提高代码的可维护性和复用性,通常会将一些常用的全局对象,如`window`,进行封装,形成一个自定义的类。这个类会包含`window`对象...
【标题】:“自己封装的一个checkbook工具” 这个标题暗示了一个开发者自定义的工具,它可能是一个用于处理复选框操作的程序或者库,被命名为"checkbook",可能是因为其功能与传统会计中的检查清单类似,允许用户在...
在网页设计中,"DIV+CSS封装的一个下拉框效果"是一种常见的交互设计技术,它通过结合HTML结构、CSS样式以及可能的JavaScript(如Jquery)来实现更加灵活且美观的下拉选择功能。这种技术相比传统的HTML下拉框(`...
例如,一个ExtJS的按钮组件(`Ext.button.Button`)可能会被转换为一个具有特定类名和属性的`<button>`标签。XSL文件中会包含一系列模板(templates),每个模板对应一个ExtJS组件或其属性,然后根据这些模板进行...
HTML5的语义化标签是Web开发领域...有时,传统的`<div>`标签仍然是必要的,特别是在需要一个纯粹的容器元素,而不关心其内容含义的情况下。总之,理解并恰当运用HTML5的语义化标签,是提升网页质量和专业性的关键步骤。
在本项目中,我们主要探讨如何使用Vue.js和ECharts库来实现一个可自定义标签的饼图。Vue.js是一个轻量级的前端框架,它提供了数据绑定和组件化的能力,使得开发更加高效。ECharts则是一个基于JavaScript的数据可视化...
标题中的"AD软件PCB常见封装.rar"表明这是一个关于Altium Designer(AD)软件的电子设计资源,重点在于PCB(Printed Circuit Board,印刷电路板)的常用封装。Altium Designer是一款广泛使用的PCB设计工具,封装在...
在面向对象编程中,封装是核心原则之一,它将数据和操作这些数据的方法捆绑在一起,形成一个独立的对象。在Oracle OCI封装类中,开发者通常会定义一系列的类,这些类内部实现了对OCI函数的调用,对外提供更友好的...