# CSS 样式定制化

系统中针对所有的控件,如按钮,输入框,表格等,都有内定的CSS样式,实施者只需要拖拽组件到页面上,不用特别关心样式问题,就可以了保证页面整体的风格统一。

但是在某些情况下,用户需要修改到部分样式,写自己的css文件。可以通过一下方式进行:

  1. 定义css文件,放到所在app项目的资源路径下,以resources/META-INF/resources/frontend作为根路径,如下图所示:

  1. 在springboot的配置文件中,配置css的路径地址,如下图所示
lumos.page.style = ./styles/style.css
  1. 在style.css中加入你需要的样式定义,例如:
html {
    --lumos-header-bg-color: #00263B; /*头部背景色*/
    --lumos-header-toogle-btn-border-color: #3D4341; /*缩起按钮边框色*/
    --lumos-header-toogle-btn-bg-image: url('../img/toggle_menu.png'); /*缩起按钮图标*/
    --lumos-sidebar-bg-color: #00263B; /*背景色*/
    --lumos-dialog-header-bg-color: #F5F5F5; /*弹框头部背景色*/
    --lumos-grid-cell-height: 34px;
    --lumos-grid-font-size: 12px;
    --lumos-button-height: 30px;
    --lumos-button-color: #333333;
}

# CSS 变量

系统抽取了很多的CSS变量,用户可以便捷的通过这些css变量做很多到快速的样式调整,如改变按钮的样式,颜色,边框;又比如该表页面顶部菜单的颜色背景,Logo等。 预定义的一些变量,你可以在你css中给这些变量重新赋值,达到覆盖的效果。

系统默认使用vaadin自带的lumo主题,你可以在下面链接中找到对其的详细介绍

https://vaadin.com/docs/v14/flow/styling/lumo/overview[]

例如:以下为lumo主题中定义的部分变量:

html {
    Size
    --lumo-size-xs: 1.625rem
    --lumo-size-s: 1.875rem
    --lumo-size-m: 2.25rem
    --lumo-size-l: 2.75rem
    --lumo-size-xl: 3.5rem

    Space
    --lumo-space-xs: 0.25rem
    --lumo-space-s: 0.5rem
    --lumo-space-m: 1rem
    --lumo-space-l: 1.5rem
    --lumo-space-xl: 2.5rem

    Font Size
    --lumo-font-size-xxxl: 2.5rem
    --lumo-font-size-xxl: 1.75rem
    --lumo-font-size-xl: 1.375rem
    --lumo-font-size-l: 1.125rem
    --lumo-font-size-m: 1rem
    --lumo-font-size-s: 0.875rem
    --lumo-font-size-xs: 0.8125rem
    --lumo-font-size-xxs: 0.75rem
    ...
}

# 样式设计

# 基础样式

  • Theme Variants

      vaadin组件本身有一些设计好样式供我们使用,可叠加使用多个。具体详见
    

    https://vaadin.com/docs/v14/flow/styling/lumo/variants

  • width/height

      配置元素的宽度,默认值 “auto”,可使用 px、em、% 等单位。
    
  • height

      配置元素的高度,默认值 “auto”,可使用 px、em、% 等单位。
    
  • min-width

      配置元素的最小宽度。默认值 “0”,可使用 px、em、% 等单位。
    
  • min-height

      配置元素的最小高度。默认值 “0”,可使用 px、em、% 等单位。
    
  • max-width

      配置元素的最大宽度。默认值 “none”,可使用 px、em、% 等单位。
    
  • max-height

      配置元素的最大高度。默认值 “none”,可使用 px、em、% 等单位。
    

# 布局相关

  • Margin

      配置元素外边距,有上下左右 4 个值
    
  • Padding

      配置元素内边距,有上下左右 4 个值
    
  • Spacing

      配置子元素之间是否需要间距。
      默认值为 `--lumo-spce-m`(可详见css变量定义部分),此属性是Layout的特有属性,如:HorizontalLayout、VerticalLayout。
    
  • justify-content

      配置元素在主轴(水平方向)上的对齐方式。
      默认值:flex-start
    

  • align-items

      配置元素在交叉轴(垂直方向)上的对齐方式。
      默认值:stretch
    

  • Alignment

      同align-items,仅适用于Layout及HorizontalLayout两个布局。
    
  • Align Right

      在父容器中是否右对齐,仅适用于HorizontalLayout布局下的子项目。
    
  • Css Properties

      自定义样式,最终以内嵌样式作用于元素。
    
  • flex-direction

      FlexLayout的特有属性,配置主轴的方向(即项目的排列方向)。
      默认值:row
    

  • flex-wrap

      FlexLayout的特有属性,配置弹性项目是否需要换行。
      默认值:row
    

  • Flex Grow

      FlexLayout的特有属性,配置在相同的容器中,项目相对于其余弹性项目的增长量。
      默认值:0
    
  • Flex Shrink

      FlexLayout的特有属性,配置固定在相同的容器中,项目相对于其余弹性项目的收缩量。
      默认值:1
    
  • Flex Basis

      FlexLayout的特有属性,配置弹性项目的初始长度。
      默认值:auto
    

# 外观相关

  • border-style

      配置元素的边框样式。
    

  • border-width

      配置元素的边框宽度。
    
  • border-radius

      配置元素的边框圆角大小。
    
  • border-color

      配置元素的边框颜色。
    
  • background-color

      配置元素的背景颜色。
      颜色会填充元素的内容、内边距和边框区域,扩展到元素边框的外边界(但不包括外边距)。
    
  • background-image

      配置元素的背景图片。
      默认情况,背景图像位于元素的左上角,并在水平和垂直方向上重复。
    
  • background-repeat

      配置是否及如何重复背景图像。
      默认情况,背景图像在水平和垂直方向上重复。
    

  • background-position

      配置背景图像的起始位置。
      默认情况,背景图像在水平和垂直方向上重复。
    

  • background-origin

      配置 background-position 属性相对于什么位置来定位。
    

  • background-size

      配置背景图像的尺寸。
    
  • background-attachment

      配置背景图像是否固定或者随着页面的其余部分滚动。
    

# 字体相关

  • Text Color

      配置元素字体颜色。
    
  • Text Font

      配置元素字体样式,包括是否加粗,下划线,斜体。
    
  • font-family

      配置元素的字体。
    
  • font-size

      配置元素的字体大小。
    
  • text-align

      配置元素中的文本的水平对齐方式。
    

# 组件特有属性

  1. 按钮

    • Shortcut Key

         按钮的特有属性,配置按钮的快捷键。
      
    • Shortcut Modifier

         按钮的特有属性,配置按钮的组合快捷键。
      
    • Disable On Click

         按钮的特有属性,配置按钮单击时是否禁用。
      
    • Icon

         配置元素的图标。
      
    • Icon Type

         配置元素的图标类型。
      
  2. 输入组件

    • Required

         配置元素是否必填。
      
    • Placeholder

         配置元素的缺省值。
      
    • Clear Button

         输入值后是否显示清除按钮。
      
    • Input Length

         输入值的最大长度及最小长度。
      
  3. 日期/时间选择组件

    • Show Week Numbers

         日期选择控件及时间选择控件特有属性,配置是否显示周。
      
    • Locale

         日期选择控件及时间选择控件特有属性,配置区域。
      
    • Time Range

         日期选择控件及时间选择控件特有属性,配置时间范围。
      
    • First Day of Week

         日期选择控件特有属性,配置一周的起始日。
      
  4. Advance Search Field

    • Display Area

         配置元素的显示区域。
      
    • Filter Target

         配置元素的过滤目标。
      
  5. Search Field

    • Search Page

         配置元素用于哪个页面。
      
    • Search Object

         配置元素过滤的对象。
      
  6. Password Field

    • Password Length

         配置密码的最大长度。
      
  • One Password

          配置元素是否允许只输入一次密码。
    
  1. ComboBox

    • Items DataSource

         配置元素的数据源。
      
    • Allow Custom Value

         配置元素是否允许使用用户手动输入。
      
  2. FormLayout

    • Form Responsive Steps

         配置此布局中子项目排列的响应方式。
         例如:
         配置column=2,minWidth=100px,则表示当FormLayout宽度大于100px时,子项目将按两列显示。
         配置column=3,minWidth=200px,则表示当FormLayout宽度大于200px时,子项目将按三列显示。
      
  3. Dialog

    • Resizable

         配置用户是否可以调整对话框的大小。
      
    • Draggable

         配置是否允许用户拖动对话框。
      
  4. Grid

    • Grid Multiple Choice

        配置表格是否为多选模式。
      
  5. Grid Column

    • Header

        配置表格列的标题。
      
    • Auto Width

        配置启用或禁用此列的自动宽度。
      
    • Sortable

        配置表格列的是否允许用户手动排序。
      
  6. Tab Sheet

    • Tab Sheet Closable

        配置Tab是否允许用户关闭。
      
    • Orientation

        配置Tab的排列方向。
      
  7. Menu Bar

    • Open on Hover

        配置打开根级别菜单时子菜单的响应事件。
        true:子菜单在悬停时打开;false:子菜单通过单击时打开。
      
    • MenuBar Text Color

        配置菜单的字体颜色。