- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 JavaFX CSS 更改 TextField
的背景和边框颜色。我不明白为什么 -fx-border-color
会重置 TextField 的边框半径?
如您所见,第二个 TextField
没有边框半径。
示例/style.css:
.validation-error {
-fx-background-color: #FFF0F0;
-fx-border-color: #DBB1B1;
}
示例/Main.java
package sample;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
TextField txtWithoutStyle = new TextField();
txtWithoutStyle.setText("Without Style");
TextField txtWithStyle = new TextField();
txtWithStyle.setText("With Style");
txtWithStyle.getStyleClass().add("validation-error");
VBox root = new VBox();
root.setPadding(new Insets(14));
root.setSpacing(14);
root.getChildren().addAll(txtWithoutStyle, txtWithStyle);
root.getStylesheets().add("/sample/style.css");
Scene scene = new Scene(root, 300, 275);
primaryStage.setTitle("Hello World");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
更新 1
附加问题:为什么 -fx-background-color
删除 TextField 边框(只需从 style.css
中删除 -fx-border-color
重现它)?
最佳答案
default stylesheet通过使用“嵌套背景”而不是边框将边框应用于文本字段(以及几乎所有其他控件)。
默认样式表中 TextInputControl
的一些设置是:
-fx-background-color: linear-gradient(to bottom, derive(-fx-text-box-border, -10%), -fx-text-box-border),
linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background);
-fx-background-insets: 0, 1;
-fx-background-radius: 3, 2;
这基本上设置了两种背景颜色(均由线性渐变定义),一种(“外部”颜色)的颜色基于 -fx-text-box-border
,另一种颜色基于 -fx-control-inner-background
。 “外部”背景位于“内部”背景之外,因为它们分别具有 0
和 1
的插入;通过分别为每个背景设置 3
和 2
的半径来创建最终明显边界的弯曲边缘。
至少据传闻,这比在 CSS 中使用实际边框更有效,因此选择这种技术是出于性能原因。
因此,为了保留边框的半径,您可以使用相同的技术,只需覆盖两种背景颜色即可:
.validation-error {
-fx-background-color: #DBB1B1, #FFF0F0 ;
}
请注意,您也可以只替换“looked-up-colors”,这也将保留正在使用的细微线性渐变:
.validation-error {
-fx-text-box-border: #DBB1B1 ;
-fx-control-inner-background: #FFF0F0 ;
}
为了在聚焦时突出显示,默认使用名为 -fx-focus-color
和 -fx-faint-focus-color
的颜色:所以在后一个版本中你会可能也想重新定义它们:
.validation-error {
-fx-text-box-border: #DBB1B1 ;
-fx-control-inner-background: #FFF0F0 ;
-fx-focus-color: #FF2020 ;
-fx-faint-focus-color: #FF202020 ;
}
关于javafx - 为什么 -fx-border-color 重置 TextField 的边框半径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29396105/
有没有办法像 super 速记样式一样在 CSS 中组合 border-top,border-right,border-left,border-bottom。 例如: border: (1px sol
这个问题在这里已经有了答案: Combining border-top,border-right,border-left,border-bottom in CSS (4 个答案) 关闭 3 年前。
所以,我是那些以始终使用最新版本的浏览器而自豪的人之一(当然 Internet Explorer 除外 - 我说的不是那个浏览器)。 我遇到了 this awesome CSS3 website详细介
border-top-color 是 #9b9c9d 而 border-bottom-color 是 #f6f9fc .渐变旨在在border-left 和border-right 上将顶部颜色过渡到
我将开始开发一个新网站,并准备处理浏览器用于计算元素宽度和高度的不同方法 (box model stuff)。不知何故,我想到了:如果我只是将 box-sizing 应用于网站中的所有元素会怎么样?
这是 fiddle :http://jsfiddle.net/3Ys2d/ CSS div{ border: solid 3px blue; border-left-color: re
这个接缝很容易,但我还没有找到任何方法来做到这一点。我有 3 个 div(但解决方案必须适用于 n 个 div),如下图所示: |分区 1 ||分区 2 ||第 3 部分 | 例如: 我想要这样的普通
由于视网膜显示器具有如此高的像素密度,因此在这些显示器上 1 像素的边框看起来非常大。正如 Brad Birdsall 所建议的,CSS box-shadow属性可用于创建“0,5 px”边框,在
我可以这样写边框的样式: border: 2px solid #DDDDDD; 或者像这样: -moz-border-bottom-colors: none; -moz-border-left-col
当在已经有 1px 边框的 div 中覆盖 border-bottom 的大小时,Firefox 和 Chrome 呈现 border-left 和 border-right 不正确: HTML C
我是CSS3新手,最近在学习border-image属性,在看W3C文档的时候: http://dev.w3.org/csswg/css-backgrounds/#border-image-width
我正在尝试在使用 border-radius 属性的 div 上使用 border 属性。 这是我的 CSS: #page { border: 1px solid #beb2b2; w
我只想在已经具有顶部和底部边框(1px 纯灰色)的 div 上添加一个左边框(5px 纯蓝色)。我希望 border-left 位于 border-top 和 border-bottom 之上,但浏览
我有一个使用 border-radius 的带有圆 Angular 的流体宽度 div,以及 div 一侧的大边框,颜色不同。 当浏览器窗口足够小时,所有边框都会正常运行。但是,当我放大窗口大小时,我
导致“错误”的 Css: div { width: 100px; height: 100px; background-color: transparent; box-s
Border-bottom长度小于border-right怎么办? img { border-bottom: 5px solid #02a8d8; border-right:1px s
我是一名优秀的程序员,十分优秀!