我想使用 Java API 在我的 Vaadin Flow 布局中直观地将布局的一个区域与另一个区域分开。
我想要类似于HTML 中的hr
水平规则的东西。我还想要等效的垂直规则(从未在 HTML 中定义)。
是否有一些简单的方法可以直观地显示布局部分之间的主题转换?
我想使用 Java API 在我的 Vaadin Flow 布局中直观地将布局的一个区域与另一个区域分开。
我想要类似于HTML 中的hr
水平规则的东西。我还想要等效的垂直规则(从未在 HTML 中定义)。
是否有一些简单的方法可以直观地显示布局部分之间的主题转换?
Hr
班级因为<hr>
有Hr
类。
verticalLayout.add(new Span("First"), new Hr(), new Span("Second"));
另一种选择是为分隔线创建类,有几种不同的方法,这里有一个例子
public class Divider extends Span {
public Divider() {
getStyle().set("background-color", "blue");
getStyle().set("flex", "0 0 2px");
getStyle().set("align-self", "stretch");
}
}
并这样使用
horizontalLayout.add(new Span("First"), new Divider(), new Span("Second"));
使用align-self
andflex
只能在 flex 布局中使用,其中包括HorizontalLayout
and VerticalLayout
。这种方法的美妙之处在于同一个类可以在两者中工作。告诉它在flex: 0 0 2px
容器方向上是 2 个像素宽,并且不会增长或缩小。它将告诉它在垂直方向上取容器的align-self: stretch
全尺寸。
我写这个答案是我对 Tazavoo 答案的评论的后续,这太棒了!我喜欢他们的自定义 Divider 类,有人问这个分隔线是否可以进一步自定义/样式化,就像在这个渐变边框页面中所做的那样。
当然,这个分隔线可以进一步设计!但是分隔线和链接中的元素的区别在于,在链接中,元素的边框是样式化的,而我们需要在此处设置实际元素本身的样式。
链接页面中的 CSS 属性:border-image
. Divider 的 CSS 属性background-image
。
(我对 CSS -webkit 属性不够熟悉,所以我不知道您是否需要的不仅仅是background-image
在所有浏览器中获得良好的可视化)
链接页面使线性渐变方向to bottom
。我们也可以使用它,但是水平使用 Divider 与垂直使用它看起来会有所不同。这就是为什么我们需要将方向设置为对角线,因此分隔线的两种用法都具有相似的梯度。在 w3schools 的 TryIt 编辑器中查看概念证明
以下是我如何使用渐变设置 Divider 类:
public class Divider extends Span {
public Divider(){
getStyle().set("background-image", "linear-gradient(135deg, #777 , rgba(0, 0, 0, 0))");
getStyle().set("flex", "0 0 2px");
getStyle().set("align-self", "stretch");
}
}
要自定义linear gradient
更多内容,请参阅w3schools 上的文档
分隔类的所有学分都转到 @Tazavoo。请去投票他们的答案