GWT - 更改 CSS 悬停 属性
GWT - Changing CSS hover property
我是 GWT 的新用户,我正在寻找有关 "theme management" 的建议。
我必须制作一个可以处理主题更改的网站。我的意思是用户可以通过填写表格来制作自己的主题,然后网站会自动动态地改变它的颜色来显示新的。
我想对所有静态属性使用 CSS sheet 并使用一些 GWT 行(例如 label.getElement.getStyle.setColor(...))来更改颜色。但是我有很多 "hover" 属性,我认为创建很多 MouseOverHandler 不是一个好主意......
有没有办法动态编辑 CSS sheet 或魔术?
谢谢。
无需重新加载整个应用程序即可更改主题的最简单方法是将主题 class 分配给 body
元素。
您希望在您的应用中为每个 CSS class 添加特定主题,例如:
.theme1 .myClass {
color: red;
}
.theme2 .myClass {
color: blue;
}
然后将特定主题应用到 body
元素:
<body class="theme1">
当你想改变主题时,你必须改变 body
class 所以它会变成:
<body class="theme2">
这样,每个具有 class myClass
的元素的颜色将从红色变为蓝色。
您不能动态编辑 CSS 文件,但您可以将 CSS 样式作为新的 CSS 文件或直接注入到您的文档中。
例如,您可以在 "main.css" 文件中定义所有关键 CSS 规则,然后将用户定义的规则直接添加到主机 HTML 页面中 style
标签。
您有很多选择 - 最直接的(对我而言)是利用 GWT 引入的现有 CSS classes。如果查看 GWT 提供的任何小部件的 javadoc,您会注意到 CSS Style Rules
部分。例如,Button
:
.gwt-Button
the outer element
这意味着您添加到页面的每个 Button
都应用了 .gwt-Button
样式。如果您使用覆盖此样式的规则注入 CSS 样式表:
.gwtButton {
background: red;
}
你所有的按钮都会变成红色。您可以使用 StyleInjector
注入样式表。动态创建样式表的内容取决于您 - 但它只是文本,应该不难(但请确保生成的 CSS 规则有效!)。
为了让您开始,请尝试将此代码连接到某个按钮,看看单击它是否会触发将页面上的所有 Buttons
更改为红色:
StyleInjector.inject(".gwt-Button { background: red; }");
如果您有想要不同样式的自定义小部件,只需向它们添加一个 class(.customWidgetWhatever
,例如 Button
有 .gwt-Button
,等等)您将包含在您的自定义样式表中。
确保您了解 CSS 的工作原理以及它可以为您做什么。例如,如果您希望每个按钮的样式相同,则不必单独更改每个按钮的样式,只需使用:
button {
background: green;
}
所有 <button>
都会变成绿色。
我是 GWT 的新用户,我正在寻找有关 "theme management" 的建议。
我必须制作一个可以处理主题更改的网站。我的意思是用户可以通过填写表格来制作自己的主题,然后网站会自动动态地改变它的颜色来显示新的。
我想对所有静态属性使用 CSS sheet 并使用一些 GWT 行(例如 label.getElement.getStyle.setColor(...))来更改颜色。但是我有很多 "hover" 属性,我认为创建很多 MouseOverHandler 不是一个好主意......
有没有办法动态编辑 CSS sheet 或魔术?
谢谢。
无需重新加载整个应用程序即可更改主题的最简单方法是将主题 class 分配给 body
元素。
您希望在您的应用中为每个 CSS class 添加特定主题,例如:
.theme1 .myClass {
color: red;
}
.theme2 .myClass {
color: blue;
}
然后将特定主题应用到 body
元素:
<body class="theme1">
当你想改变主题时,你必须改变 body
class 所以它会变成:
<body class="theme2">
这样,每个具有 class myClass
的元素的颜色将从红色变为蓝色。
您不能动态编辑 CSS 文件,但您可以将 CSS 样式作为新的 CSS 文件或直接注入到您的文档中。
例如,您可以在 "main.css" 文件中定义所有关键 CSS 规则,然后将用户定义的规则直接添加到主机 HTML 页面中 style
标签。
您有很多选择 - 最直接的(对我而言)是利用 GWT 引入的现有 CSS classes。如果查看 GWT 提供的任何小部件的 javadoc,您会注意到 CSS Style Rules
部分。例如,Button
:
.gwt-Button
the outer element
这意味着您添加到页面的每个 Button
都应用了 .gwt-Button
样式。如果您使用覆盖此样式的规则注入 CSS 样式表:
.gwtButton {
background: red;
}
你所有的按钮都会变成红色。您可以使用 StyleInjector
注入样式表。动态创建样式表的内容取决于您 - 但它只是文本,应该不难(但请确保生成的 CSS 规则有效!)。
为了让您开始,请尝试将此代码连接到某个按钮,看看单击它是否会触发将页面上的所有 Buttons
更改为红色:
StyleInjector.inject(".gwt-Button { background: red; }");
如果您有想要不同样式的自定义小部件,只需向它们添加一个 class(.customWidgetWhatever
,例如 Button
有 .gwt-Button
,等等)您将包含在您的自定义样式表中。
确保您了解 CSS 的工作原理以及它可以为您做什么。例如,如果您希望每个按钮的样式相同,则不必单独更改每个按钮的样式,只需使用:
button {
background: green;
}
所有 <button>
都会变成绿色。