Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在GWT中使用HTML组件文件(.htc)来应用CSS3?_Java_Gwt_Css - Fatal编程技术网

Java 如何在GWT中使用HTML组件文件(.htc)来应用CSS3?

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

圆形边框在IE中不起作用。 我曾尝试在我的GWT web应用程序中使用CSS3,但我很难将*.htc注入到我的代码中。
如何通过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);
}