Java 如何在GWT中使用HTML组件文件(.htc)来应用CSS3?
圆形边框在IE中不起作用。 我曾尝试在我的GWT web应用程序中使用CSS3,但我很难将*.htc注入到我的代码中。Java 如何在GWT中使用HTML组件文件(.htc)来应用CSS3?,java,gwt,css,Java,Gwt,Css,圆形边框在IE中不起作用。 我曾尝试在我的GWT web应用程序中使用CSS3,但我很难将*.htc注入到我的代码中。 如何通过GWT引用*.htc文件 1.我尝试使用ClienBundle将其作为资源文件获取。 2.我从css文件中引用了它的相对路径。 这两种方法都帮不了我。 有没有办法将CSS3与GWT结合使用? 是否有人将*.htc与GWT一起使用,或者GWT还不支持CSS3? 已更新 我想要一个圆形边框的div,比如: 我的项目结构是: } myResources.htcResour
如何通过GWT引用*.htc文件
1.我尝试使用
ClienBundle
将其作为资源文件获取。2.我从css文件中引用了它的相对路径。
这两种方法都帮不了我。
有没有办法将CSS3与GWT结合使用?
是否有人将*.htc与GWT一起使用,或者GWT还不支持CSS3?
已更新
我想要一个圆形边框的div,比如:
我的项目结构是:
}
myResources.htcResource().getUrl()//这有什么必要? Css3.css
@url myHTCFile htcResource;
.myClass {
behavoir: url(css3/myHTCFile);
border-radius:10px;
background-color:red;
padding:10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}
提前感谢 未选中,但这是我认为它应该如何与ClientBundle配合使用的: Css文件:
@url myHTCFile htcResource;
.myClass {
behavior: myHTCFile;
}
ClientBundle接口:
interface MyResources extends ClientBundle {
interface Css3Resource extends CssResource {
String myClass();
}
@Source("myHTCfile.htc")
DataResource htcResource();
@Source("Css3.css")
publicy Css3Resource css3();
}
而且myHTCfile.htc
和Css3.css
文件必须与MyResources
接口文件位于同一文件夹中
编辑:
您还需要将css引用放在ClientBundle中,请参阅上面更新的MyResources。按如下方式使用:
//Get instance
MyResources resources = GWT.create(MyResources.class);
//Make sure css is injected. This call needs to be done only once, more calls don't matter
resources.css3().ensureInjected();
//usage
roundedDiv.setStyleName(resources.css3.myClass());
行
myResources.htcResource().getUrl()代码>可以删除,因为它不起任何作用。创建一个名为public的目录,并将HTC文件放在其中:
src/
- Module.gwt.xml
- public/
- myHTCfile.htc
- other-directories/....
然后在CSS文件中,您应该能够在编译后引用HTC文件:
.cssClassName {
behavior: url(/GWT_MODULE_NAME/myHTCfile.htc);
}
只需将GWT_模块_名称替换为GWT模块的名称即可
GWT中的公共目录是放置与GWT模块关联的静态资源的好地方。您尝试过PIE吗?它似乎有一个很好的行为库,用于将CSS3注入IE:
好的,因为目标是圆角边框-如何使用一些可用的(不涉及htc文件;)?对于所有酷炫和时髦的浏览器(以及IE9;),您都使用标准CSS3边界半径(border radius
),而对于IE;,您则使用了一种难看的hack)
第二个解决方案:根据您的需要,这可能是一个可行的选择。javadocs说它只能在怪癖模式下“可靠地”工作,但他们知道什么,嗯?;)但您可能想查看它的源代码,了解如何实现您自己的解决方案:)使用类似的插件怎么样?htc文件仅从css文件中引用。服务器只需要能够处理该类型的文件。上述代码将在css文件中的位置将url注入htc文件。生成的代码如下所示:behavior:url(path/myHTCfile.htc)代码>。我假设你不是真的想将htc文件的内容注入css文件中?我已经更新了帖子,还包括使用css资源。因为如果你想使用@url
@Hilbrand,你的方法有助于通过IE中的ClientBundle引用*.htc文件。但是,它不会影响其边界。我不知道为什么,但我猜它来自url(')中的“.cache.htc”;你认为这里有什么问题?文件的重命名不应该是问题。文件是否存在于war/Css3
文件夹中?你重新编译了吗?如果文件位于css中,您可以随时使用开发人员工具签入IE,或者替换原始文件的路径(您需要将其放在war文件夹中的某个位置)看看它是否还能用。:facepalm:很抱歉拼错了名字-我真的不知道是怎么回事:D但是拼错的behavoir
也在原来的问题中(这很有感染力!),所以我想知道OP在真实的代码中是否也有这种情况。从他在该问题下的评论来看,他似乎只对圆角感兴趣(尽管这是一种为IEThanks提供CSS3功能的强大方式,但也没什么帮助。问题是如何实现跨浏览器圆角,还是如何在GWT中包含htc文件?:)第一个应该很容易在CssResource中使用条件实现。第二个问题的问题更大,如下面的答案所示;)我已经尝试了你建议的几个IE黑客。但除了这个,我几乎对所有的都不满意。我可以这样使用它:如果(isRealBrowser){使用纯CSS3}或者{使用智能角落的方法}你认为是好的还是。。。?上面我真正的问题是,对于IE6,7,8,GWT+CSS3仍然是开放的。是的,您应该在CssResources
中使用@if user.agent safari gecko1_8{…}
来“标记”那些CSS规则,以便只包含在指定的浏览器中(编译器将拆分CSS并将其包含在适当的输出文件中)。这样,现代浏览器的用户就不必下载IE黑客了:)这是一个双赢的局面,IMHO。关于CSS3-你检查过我在Hilbrand的回答中指出的拼写错误吗?你所说的CSS3是指行为
规则吗?(包括HTC文件)或者你想在IES中使用其他CSS3规则吗?是的,我已经纠正了(也包括IE规则),但还是用了方形边框。。。。我不知道为什么HTC不影响风格。但是,它适用于编写为html的同一页面。。。。奇怪……也许你可以放一个精简的应用程序示例,这样我们就可以浏览一下了?;)或者使用开发人员工具(显然是IE67:,与IE8捆绑在一起)戳戳自己。检查行为
规则是否到位,url参数是否指向现有文件。
.cssClassName {
behavior: url(/GWT_MODULE_NAME/myHTCfile.htc);
}