(JavaFX8)css按钮边框和背景色问题
我正试图通过css创建一个类似于Fallout 4的按钮样式,它具有简单的背景色和边框属性,实际上效果很好。唯一的问题是边框并没有覆盖整个按钮。按钮底部有一块背景突出。(见截图1) 当我点击按钮并按住鼠标时,它消失了,尽管不是完全消失。(见截图2) 以下是我的css的一部分:(JavaFX8)css按钮边框和背景色问题,java,css,button,javafx,Java,Css,Button,Javafx,我正试图通过css创建一个类似于Fallout 4的按钮样式,它具有简单的背景色和边框属性,实际上效果很好。唯一的问题是边框并没有覆盖整个按钮。按钮底部有一块背景突出。(见截图1) 当我点击按钮并按住鼠标时,它消失了,尽管不是完全消失。(见截图2) 以下是我的css的一部分: .button { -fx-background-color:transparent ; -fx-background-radius:0; -fx-border-color:transparen
.button {
-fx-background-color:transparent ;
-fx-background-radius:0;
-fx-border-color:transparent;
-fx-border-width: 0 3 3 0;
}
.button:hover {
-fx-background-color:lime;
-fx-background-radius:0;
-fx-border-color:black;
-fx-border-width: 0 3 3 0;
}
你知道这是什么原因吗?这里有一个简单的程序,你想使用下面的css。虽然这个问题不能用这个来重现
public class test extends Application
{
public static void main(String[] args)
{
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception
{
BorderPane pane = new BorderPane();
pane.getStylesheets().add(
getClass().getResource("test.css").toExternalForm()
);
Button test = new Button("Back");
test.setPrefWidth(120);
pane.setCenter(test);
Scene scene = new Scene(pane, 150, 150);
primaryStage.setScene(scene);
primaryStage.setTitle("csstest");
primaryStage.show();
}
}
test.css
@font-face{
src: url('roboto.ttf');
}
.root {
-fx-background-color:black;
}
.text {
-fx-font-family: "Roboto Condensed";
-fx-fill: lime;
-fx-font-size: 20;
}
.button {
-fx-background-color:transparent ;
-fx-background-radius:0;
-fx-border-color:transparent;
-fx-border-width: 0 3 3 0;
}
.button:hover {
-fx-background-color:lime;
-fx-background-radius:0;
-fx-border-color:black;
-fx-border-width: 0 3 3 0;
}
.button:hover .text{
-fx-fill: black;
}
为了重现问题,需要在场景中使用多个按钮节点。当按钮未聚焦时,由于背景插入而产生视觉效果。为避免这种情况,请添加
-fx背景插图:0在按钮上选择code>:将鼠标悬停在CSS规则上,问题将得到解决
.button:hover {
-fx-background-color:lime;
-fx-background-radius:0;
-fx-border-color:black;
-fx-border-width: 0 3 3 0;
-fx-background-insets: 0;
}
不确定,但为了解决这个问题,你可以总是使边界变厚。我也发现了这个链接,这里的人似乎认为某些FX css不能正常工作,并且给了你一些替代方案。我无法重现上面描述的视觉问题。请发布一个我们可以使用的最小可运行程序。@JKostikiadis说实话,我自己不能复制它。。。我只是在一个边框窗格的中心放了一个按钮,然后应用了css,结果就像我第一篇文章中的第二个屏幕截图一样。@Matt我已经尝试过让边框变厚,但不幸的是,这没有解决任何问题。使用插入实际上会导致这样的问题,之前我在测试东西,但在我的cssWow中没有任何线条设置插入,它真的很简单。。。很高兴知道,谢谢大家!