Css 更改WebView中滚动条角的颜色
我正在Windows10上使用JavaFX8。在一个有深色背景的房间里,当滚动条可见时,我可以看到浅灰色的角落Css 更改WebView中滚动条角的颜色,css,javafx,scrollbar,Css,Javafx,Scrollbar,我正在Windows10上使用JavaFX8。在一个有深色背景的房间里,当滚动条可见时,我可以看到浅灰色的角落WebView“自动管理滚动。”我已经尝试过,以及其他选择器: .corner { -fx-background-color: black; } 而且 .corner { -fx-background-color: black; } .scroll-bar > .corner { -fx-background-color: black; } .
WebView
“自动管理滚动。”我已经尝试过,以及其他选择器:
.corner {
-fx-background-color: black;
}
而且
.corner {
-fx-background-color: black;
}
.scroll-bar > .corner {
-fx-background-color: black;
}
.scroll-pane > .corner {
-fx-background-color: black;
}
.scroll-bar .corner {
-fx-background-color: black;
}
.scroll-pane .corner {
-fx-background-color: black;
}
.web-view .scroll-bar .corner {
-fx-background-color: black;
}
.web-view .scroll-pane .corner {
-fx-background-color: black;
}
但它不起作用。那我该怎么办呢
示例代码:Main类
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
webEngine.loadContent("<html><body><pre>This is a very very very very very very long string </pre><b>test</b><p>1</p><p>2</p><p>3</p></body></html>");
webEngine.setUserStyleSheetLocation("data:,body { background: black; color: white; } ");
StackPane root = new StackPane();
root.setPadding(new Insets(5));
root.getChildren().add(webView);
webView.setStyle("-fx-background-color:black;");
root.setStyle("-fx-background-color:black;");
root.getStylesheets().add("style.css");
primaryStage.setTitle("JavaFX Test");
primaryStage.setScene(new Scene(root, 300, 150));
primaryStage.show();
}
}
这也有一个可怕的行为,滚动条只在我用鼠标悬停时出现,但不管怎样。这在我的主应用程序中不会发生我只想更改角落中灰色正方形的颜色我无法在Mac OS X v10.13.6和Java v1.8.0_201上重现这种效果。因为“自动管理滚动”和@Pagbo使用
-webkit滚动条角,如建议的那样。在另一个上下文中,@DVarga建议使用-fx背景色
,如图所示。由于效果可能取决于平台/版本,我添加了一个完整的示例和屏幕截图以供参考。特别是,右下角被垂直滚动条的减量按钮覆盖。拉伸窗口以隐藏垂直滚动条将显示水平滚动条的“增量”按钮。角落总是被滚动条按钮或黑色占据
Main.java
.scroll-bar .track {
-fx-background-color: black;
}
.scroll-bar .thumb {
-fx-background-color: brown;
}
.corner {
-fx-background-color: black;
}
可能重复。请尝试以下操作:webEngine.setUserStyleSheetLocation(“数据:,正文{背景:黑色;颜色:白色;}::-webkit滚动条角{背景:#0c;}”)
实际上,如果WebView
组件来自JavaFX库,则内容不是。您不能使用JavaFXCSS来设置样式,但另一方面,这意味着您可以使用常规的css
:)。作为参考,MacOS上没有问题/更改。上面显示了什么操作系统?@user3804769:noted;JavaFX使用<代码>-建议使用webkit滚动条角
。有趣的是,在Mac上,似乎没有显示水平右箭头。实际上在windows上是这样,这就是为什么右下角出现/存在的原因。@Pagbo:Yep;在Mac上,只有当垂直滚动条自动隐藏时,水平向右箭头(增量按钮)才会出现。
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
webEngine.loadContent("<html><body><pre>"
+ "This is a very very very very very very long string<br>"
+ System.getProperty("os.name") + " v"
+ System.getProperty("os.version") + "; Java v"
+ System.getProperty("java.version")
+ "</pre><b>test</b><p>1</p><p>2</p><p>3</p></body></html>");
webEngine.setUserStyleSheetLocation("data: ,body "
+ "{ background: black; color: white; } "
+ "::-webkit-scrollbar-corner { background: #0c0c0c; } ");
StackPane root = new StackPane();
root.setPadding(new Insets(5));
root.getChildren().add(webView);
webView.setStyle("-fx-background-color:black;");
root.setStyle("-fx-background-color:black;");
root.getStylesheets().add("style.css");
primaryStage.setTitle("JavaFX Test");
primaryStage.setScene(new Scene(root, 300, 150));
primaryStage.show();
}
}
.scroll-bar .track {
-fx-background-color: black;
}
.scroll-bar .thumb {
-fx-background-color: brown;
}
.corner {
-fx-background-color: black;
}