UNPKG

lu2

Version:

Simple and flexible UI component library based on native HTML and JavaScript

299 lines (272 loc) 6.18 kB
/** * @layout.css * @description 一些内置布局相关 CSS * @author zhangxinxu * @create 21-01-05 **/ /* grid 布局 */ ui-grid, .ui-grid { display: grid; gap: var(--ui-gap, 0); } ui-grid[repeat], .ui-grid[repeat] { grid: auto / repeat(auto-fit, minmax(var(--ui-repeat-size, 6rem), 1fr)); } ui-grid > :not([is]), .ui-grid > :not([is]) { padding: var(--ui-space, 0); } /* 左侧项目宽度整体一致自适应的弹性表格布局 */ ui-grid[form], .ui-grid[data-form], form.ui-grid { grid: auto / auto 1fr; align-items: center; } ui-grid[form] hr, .ui-grid[data-form] hr, form.ui-grid hr, ui-grid [span="2"], .ui-grid [span="2"] { grid-column: 1 / span 2; } /* flex 布局 */ ui-flex, .ui-flex { display: flex; gap: var(--ui-gap, 0); } ui-flex[wrap], .ui-flex[data-wrap] { flex-wrap: wrap; } ui-flex[center], .ui-flex[data-center] { align-items: center; } [flex="none"] { flex: none; } [flex="1"] { flex: 1; } [flex="auto"] { flex: auto; } [order="first"], [order="1"] { order: 1; } [order="last"], [order="999"] { order: 999; } [space="between"] { justify-content: space-between; } [space="around"] { justify-content: space-around; } [space="evenly"] { justify-content: space-evenly; } [self="stretch"] { align-self: stretch; } [self="flex-start"], ui-flex [self="start"], .ui-flex [self="start"] { align-self: flex-start; } [self="start"] { align-self: start; } [self="center"] { align-self: center; } [self="end"] { align-self: end; } [self="flex-end"], ui-flex [self="end"], .ui-flex [self="end"] { align-self: flex-end; } [justify="stretch"] { justify-self: stretch; } [justify="start"] { justify-self: start; } [justify="center"] { justify-self: center; } [justify="end"] { justify-self: end; } /* ui-flex[justify="start"], .ui-flex[justify="start"] { justify-content: flex-start; } ui-flex[justify="center"], .ui-flex[justify="center"], ui-grid[justify="center"], .ui-grid[justify="center"] { justify-content: center; } ui-flex[justify="end"], .ui-flex[justify="end"] { justify-content: flex-end; } ui-grid[justify="start"], .ui-grid[justify="start"] { justify-content: start; } ui-grid[justify="end"], .ui-grid[justify="end"] { justify-content: end; } */ /* 其他布局状态 */ ui-contents, .ui-contents { display: contents; } ui-flow-root, .ui-flow-root { display: flow-root; } /* 列表布局 */ ui-list, .ui-list { background-color: var(--ui-white, #fff); box-shadow: 0 .51px var(--ui-border, #d0d0d5), 0 -.51px var(--ui-border, #d0d0d5);; position: relative; } ui-list:not([hidden]), .ui-list:not([hidden]) { display: block; } ui-list + ui-list { margin-top: -1px; } ui-list[label]::before { content: attr(label); display: block; position: static; border: none; transform: none; padding-top: 1rem; padding-bottom: .5rem; margin-left: 1rem; box-shadow: 0 .51px var(--ui-border, #d0d0d5); font-weight: bolder; } ui-list[disabled]::before { color: var(--ui-gray, #a2a9b6); } ui-list-item, .ui-list-item { display: flex; line-height: 1.5; align-items: center; padding: var(--ui-space, 0); position: relative; isolation: isolate; } .ui-list-item[space=""], ui-list-item[space=""] { --ui-space: .75rem 1rem; } ui-list-item:not(:last-child)::after, .ui-list-item:not(:last-child)::after { content: ''; position: absolute; left: 0; right: 0; left: 1rem; bottom: 0; border-top: 1px solid var(--ui-border, #d0d0d5); transform: scaleY(.51); transform-origin: bottom; z-index: 2; } ui-list-item > [type="radio"], ui-list-item > [type="checkbox"] { all: initial; width: var(--ui-place-size, 1.5rem); height: var(--ui-place-size, 1.5rem); -webkit-appearance: none; appearance: none; color: var(--ui-gray, #a2a9b6); } ui-list-item > [type="radio"]:checked, ui-list-item > [type="checkbox"]:checked { color: var(--ui-blue, #2a80eb); } ui-list-item > [type="radio"]::before, ui-list-item > [type="checkbox"]::before { content: ''; display: block; width: inherit; height: inherit; -webkit-mask: no-repeat center / var(--ui-basic-width, 1.25rem) var(--ui-basic-width, 1.25rem); mask: no-repeat center / var(--ui-basic-width, 1.25rem) var(--ui-basic-width, 1.25rem); -webkit-mask-image: var(--ui-image-default); mask-image: var(--ui-image-default); background-color: currentColor; } ui-list-item > [type="radio"]:checked::before, ui-list-item > [type="checkbox"]:checked::before { -webkit-mask-image: var(--ui-image-checked); mask-image: var(--ui-image-checked); } ui-list-item > [type="radio"]::after, ui-list-item > [type="checkbox"]::after { content: ''; position: absolute; left: 0; top: 0; width: 100%; height: 100%; } ui-list-item > [type="radio"]:active::after, ui-list-item > [type="checkbox"]:active::after { background-color: rgba(0,0,0,.05); } ui-list-item > [type="radio"]:disabled::after, ui-list-item > [type="checkbox"]:disabled::after { background-color: var(--ui-white, #fff); opacity: var(--ui-opacity, .4); } ui-list-item:not([reverse]) > [type="radio"], ui-list-item:not([reverse]) > [type="checkbox"] { margin-left: auto; margin-inline-start: auto; order: 10000; } /* 走 web 组件模式时候的占位处理 */ ui-list-item[type]:not(:defined)::before { content: ''; width: 1.5rem; height: 1.5rem; } ui-list-item[type]:not([reverse]):not(:defined)::before { margin-left: auto; margin-inline-start: auto; order: 10000; } /* labe > radio 组合列表 */ label.ui-list-item:active { background-image: var(--ui-image-active); } label.ui-list-item:not([reverse]) > [is="ui-radio"], label.ui-list-item:not([reverse]) > [is="ui-checkbox"] { order: 999; margin-left: auto; } label.ui-list-item[reverse] > [is="ui-radio"], label.ui-list-item[reverse] > [is="ui-checkbox"] { margin-right: .25rem; } ui-list-item[active] { overflow: clip; } @supports not (overflow: clip) { ui-list-item[active] { overflow: hidden; } }