【发布时间】:2021-12-26 18:05:55
【问题描述】:
我正在用一个按钮在 JavaFX 中构建一个自定义复合 UI 控件,如果将鼠标悬停在控件上的某个位置,它应该从 0 淡入到 0.1 不透明度。如果将鼠标悬停在按钮本身上,不透明度应更改为 1.0,这可以通过 CSS 轻松实现。
这里是 FadeTransition:
// unfortunately, animations cannot be defined in CSS yet
FadeTransition fadeInButton =
new FadeTransition(Duration.millis(300), settingsButton);
fadeInButton.setFromValue(0);
fadeInButton.setToValue(0.1);
这里是按钮的 CSS:
.settings-button {
-fx-background-image: url("settings_32_inactive.png");
-fx-background-repeat: no-repeat;
-fx-background-position: center center;
-fx-opacity: 0; /* button shall be initially invisible, will be faded in */
}
.settings-button:hover {
-fx-background-image: url("settings_32.png");
-fx-opacity: 1.0; /* why is this ignored if used together with animations? */
}
animation 和 CSS 属性单独工作时效果很好。不幸的是,结合起来,动画似乎覆盖了 CSS 文件中的 -fx-opacity 属性。任何想法如何使动画和 CSS 属性一起工作?
【问题讨论】:
-
只是一个建议,为什么不在按钮的鼠标悬停事件上使用相同的淡入淡出动画淡化 1.0。
-
这可能行得通,但我想通过 CSS 尽可能多地做(更容易更改,即使在生产中,也无需重新编译,...)。
标签: css animation javafx-2 fadein conflict