css - 是否有可能在 JavaFX 2 中使用 "tint"按钮

标签 css javafx-2

我有一个 JavaFX 2 应用程序,其中所有按钮都使用默认样式(灰色渐变)。在应用程序的某些特殊区域,背景颜色为红色、黄色或绿色。在这些区域,我也有按钮。

我不想用所有三种颜色重新设计按钮的所有不同状态(正常、悬停、按下),我只想为按钮提供背景色调。这可能吗?如何实现?

如果没有,是否有一种方法可以轻松地重新设计基本按钮样式,并使悬停和按下状态(伪选择器)自动从此样式派生?

如果那不可能,我愿意接受建议。我最重要的目标是避免冗余/重复声明(尤其是渐变),以防有人以后想添加不同的颜色面板,或者只是更改阴影其中一种背景颜色。

红色面板/按钮的 CSS:

#my-red-panel {
    -fx-border-width: 1;
    -fx-border-radius: 5;
    -fx-background-radius: 5;
    -fx-smooth: true;
    -fx-border-color: rgb(209, 65, 42);
    -fx-background-color: rgba(255, 78, 50, 0.89);
}

#my-red-panel .button {
  -fx-background: rgba(0, 0, 0, 0); /* Now borders look good, but button is still grey*/
}

到目前为止,我最好的选择是使用半透明渐变,如下所示:

#my-red-panel .button {
    -fx-background-color: linear-gradient(rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2));
}

我仍然必须声明每个状态,但至少我可以更改底层颜色而不必修改每个状态。主要问题是这会覆盖按钮的整个外观,所以我希望有更好的东西……:-/

最佳答案

未测试,但尝试尝试:

#my-red-panel {
  -fx-base: rgba(255, 78, 50, 0.89);
}

或者也许:

#my-red-panel .button {
  -fx-base: ... ;
}

取决于您想要的确切效果。

这里的技巧是默认的 css(JavaFX2.2 的 caspian.css 或 JavaFX8 的 modena.css)使用一些预定义的查找颜色。你可以挖掘出这些的来源,看看它们是如何使用的。如果您为场景图中的节点重新定义这些查找,新定义将传播到所有子节点。

关于css - 是否有可能在 JavaFX 2 中使用 "tint"按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20661818/

相关文章:

javascript - 用图像替换轮播指示器

javascript - 文件中的CSS和另一个文件中的JS全部编译完成后,接下来的步骤是什么?

java - 场景不适合舞台

java - 如何从 JavaFX2 中的 FileChooser 获取选定的文件扩展名?

java - 如何在容器内正确布局旋转节点?

html - 固定导航栏

html - 在我的标题 div 中准确地居中输入

JavaFX 打印

java - 如何将值插入到Java对象中

css - sass --watch 自动缩小?