前段时间遇到一个task,内容大致是这样的:
有一个flex做的组件,能够根据配置文件,数据文件和样式文件来动态显示我们的数据。其UI类似一个table,有标题栏和数据栏。且不说这个组件如何难实现。我的任务是要在鼠标移至这个控件的每一个单元格时,弹出一个div层,用来显示与此单元格有关的数据。
要弹出一个div层并不难,因为flex是支持javascript的function调用的,难点有二,一是鼠标定位,我要让弹出的window不偏不移地显示在鼠标正下方,因为是在flex组件上定位不同于在纯HTML中定位,最后的解决办法是:在flex内部计算出每个单元格的左上角的顶点坐标和单元格的高度,因为这个高度只是相对flex组件的,我还需要求出这个flex组件的左上角顶点坐标,然后我才能得出每个单元格左下角定点的坐标,进而确定弹出窗口的位置。二是要求这个弹出窗口有半透明边框,有点模糊却能看到后面的内容。找了个web designer画一个,用的是PNG格式,一开始始终不能用,在fireforks和photoshop里是透明的,但是到网页上却没有了透明效果,最后发现用GIF格式的图片可以,如果用PNG格式的话必须用8位的,而24位和32位都不行。
这两个问题解决了,我以为彻底解放了,试了试效果还挺不错。但是当我点到最后一行的某个单元格时,发现弹出窗口的下半部分被遮住了,十分难看。原因是我们做的这个网站包含了好几个组件,这个flex组件的下面是一个Applet。而我们的div层就这样被Applet无情地遮住了。
我试了div标签的z-index属性,把这个值设的很高很低都不行。然后上网查资料说Applet的层级是最高的,要想不被Applet遮住,有几个办法,一个是用iframe,另一个就是把弹出的窗口也做成flex,我采用了第一个方法,把弹出的窗口做成了一个iframe.确实被Applet遮住的问题解决了,心里暗爽了一把,但是很快又发现透明边框没有了,原来整个弹出窗口被包含进iframe之后,尽管iframe是可以设置成透明效果的,但是一旦这么做,弹出窗口上面的内容就又都没有了,这个方法被实践证明行不通。如果用透明边框包住一个iframe呢,结果透明边框有了,内容也没有丢失,但事最下面一行的最下面部分的透明边框被遮住了一部分。虽然相比前面的方法有显著的改善,但是还是没有达到目的。
最后我们小组讨论了很多方案,有说把弹出窗口用flex 实现的,有说把下面的Applet也换成flex组件,也有人建议把下面的Applet移走。我倒是有一个想法,就是当我检测到向下弹出窗口而位置不足时,我就向上弹出窗口。但是这个窗口的大小事要随着内容的大小而自适应大小的,我很难取到准确的高度和顶点坐标,结果这一想法也被否定了。
最后还是客户妥协,认为只有极少一部分透明边框被遮住是可以接受的。听到这个消息后,我不知道是该高兴呢还是伤心。本来我可以放下这个包袱去做更重要的事情,但是我是一个完美主义者,这点缺憾是我内心深处所不允许的,所以直到现在我还一直关心这件事,希望有类似经验的人看到我的这篇文章之后,能给我指点迷津。就当时抛砖引玉吧。。。。
分享到:
相关推荐
解决java Applet被Dialog遮住 的问题 跟浏览器有很大关系 升级了浏览器 可能又会出现问题 不好搞 但其中有DIV浮在java applet上的成功例子 firefox8.01已成功通过 可以参考一下
标题中的“Applet程序,含有未解决的问题”可能指的是开发者在编写或运行Applet时遇到了一些困难,这些问题可能涵盖多个方面,包括但不限于以下几点: 1. **安全性问题**:由于Applet运行在用户的机器上,因此对...
对css里的元素如:html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, ...
### Applet中文乱码问题解析及解决方案 #### 一、问题背景 在早期的Web开发中,Applet作为Java的一项关键技术被广泛应用于浏览器插件开发之中。然而,在使用Applet时,开发者经常会遇到中文显示乱码的问题。这个...
在我们的例子中,开发者遇到的问题是`div`弹出层(通常用作提示、对话框或遮罩)无法覆盖页面上的Java Applet。这可能是由于以下几个原因: 1. **Z-Index值设置不当**:确保`div`元素的Z-Index值高于Applet的默认值...
- **验证签名**:用户浏览器会验证签名的有效性,确保Applet未被篡改。 6. **安全提示** - **用户角度**:用户应谨慎对待权限请求,避免不必要的风险。 - **开发者角度**:开发者应负责任地使用权限,避免滥用...
通过以上方法,你应该能够解决Eclipse中运行Applet时图片不显示的问题。在开发过程中,遇到此类问题不要急于求成,仔细检查每个环节,通常都能找到问题的根源。同时,保持良好的代码组织和资源管理习惯,也能避免...
"applet内存泄漏问题.rar"这个压缩包包含了关于Applet内存泄漏的分析和解决方法的相关文档。 内存泄漏是指程序在申请内存后,无法释放已不再使用的内存空间,导致系统可用内存逐渐减少,性能下降,甚至可能引发程序...
随着Web技术的发展,Applet由于其安全性、兼容性和性能问题,逐渐被更现代的技术如JavaScript、Ajax、Flash以及现在广泛采用的HTML5取代。不过,理解Applet的工作原理和生命周期对于理解Java Web开发的历史和现代Web...
本文将深入探讨如何将Applet整合到Web环境,以及解决IE浏览器报找不到类错误的问题。 首先,我们需要理解Applet的生命周期,它包括初始化、加载、显示、暂停、停止和销毁六个阶段。在Web页面中,Applet通过HTML的...
它们通过`<applet>`标签或者`<object>`标签在HTML页面中被引用,从而在客户端(用户的浏览器)中执行。Applet的生命週期包括初始化、启动、绘画、停止和终止等阶段,开发者需要覆盖这些阶段的相关方法来实现具体功能...
Java的Applet实例是Java编程领域中的一个基础概念,它主要涉及到Web应用程序的早期开发技术。Applet是一种在客户端浏览器中运行的小型Java程序,它能够增强网页的交互性,提供动态内容展示。在Java的发展历程中,...
然而,开发和部署Applet时,开发者经常会遇到“找不到class”的问题,这通常是由于类路径配置不当或者文件组织结构错误导致的。本文将详细讲解如何解决这两种常见情况。 **第一种情况:Applet类不在任何包中** 当...
Applet是Java编程语言中的一种特殊类型,它允许在网页中嵌入小型的...然而,由于现代浏览器逐渐弃用了Applet技术,现在更常见的是使用Java Web Start或完全基于Web的解决方案,如JavaScript和WebGL来实现类似的功能。
初始化阶段是Applet被创建时,加载阶段是Applet的图形用户界面(GUI)组件被绘制,运行阶段是Applet开始执行其主要任务,终止阶段是Applet被销毁时。 **Applet 的主要类和方法** - `Applet` 类:所有Applet的基类...
Java Applet是Java技术在...总结,Java Applet是Java历史上的一个重要篇章,虽然现在已被其他技术取代,但它的概念和技术仍值得学习和理解。通过实践简单的Applet实例,你可以更好地掌握Java编程和Web开发的基本原理。
Java Applet是Java技术在早期Web开发中的一种应用方式...虽然现在其使用已不如从前,但掌握Java Applet的概念和技术可以帮助我们更好地理解Web客户端编程的发展历程,同时也能提升我们在现代Web开发中的问题解决能力。