/* Kole UI Mobile · Picker 样式 — 对齐移动端规格 §43 选择器:底部滚轮浮层,单列或多列联动;选项行高 ≥44px;选中项品牌色高亮。 选中值的真源是 aria-selected 与文本(不依赖视觉滚动位置)。 演示页触发器(非组件交付样式)见本文件末尾。 */ .kole-m-picker__mask { position: fixed; inset: 0; z-index: 2000; background: var(--kole-color-mask); opacity: 0; pointer-events: none; transition: opacity var(--kole-m-duration-slide) var(--kole-m-ease-slide); } .kole-m-picker__mask.is-open { opacity: 1; pointer-events: auto; } .kole-m-picker { /* 组件级变量:业务侧可在容器上覆盖 */ --kole-m-picker-column-height: 200px; /* 单列可视高度(约 4.5 行) */ --kole-m-picker-option-height: var(--kole-m-touch-target); /* 选项行高(≥44px 触控最小边长) */ position: fixed; left: 0; right: 0; bottom: 0; z-index: 2001; box-sizing: border-box; display: flex; flex-direction: column; width: 100%; padding-bottom: var(--kole-m-safe-bottom); background: var(--kole-color-card-bg); color: var(--kole-color-text-body); font-family: var(--kole-font-family); font-size: var(--kole-m-font-size-body); transform: translateY(100%); transition: transform var(--kole-m-duration-slide) var(--kole-m-ease-slide); } .kole-m-picker.is-open { transform: translateY(0); } /* 变体 mode=single:只有一列,占满整个宽度 */ .kole-m-picker--single .kole-m-picker__column { flex: 1 1 100%; } /* 变体 mode=multiple:多列等分(联动时后一列随前一列重建) */ .kole-m-picker--multiple .kole-m-picker__column { flex: 1 1 0; } /* 变体 round=true:靠内容一侧切圆角 */ .kole-m-picker--round { border-start-start-radius: var(--kole-radius-large); border-start-end-radius: var(--kole-radius-large); } /* 状态 disabled:整块置灰且不响应(点选与确认都被拦下) */ .kole-m-picker.is-disabled .kole-m-picker__btn { color: var(--kole-color-text-disabled); } .kole-m-picker.is-disabled .kole-m-picker__option { color: var(--kole-color-text-disabled); } .kole-m-picker__header { display: flex; align-items: center; justify-content: space-between; gap: var(--kole-space-8); padding: var(--kole-space-8) var(--kole-m-gutter); border-bottom: 1px solid var(--kole-color-border); font-size: var(--kole-m-font-size-body); } .kole-m-picker__title { color: var(--kole-color-text-title); font-weight: 500; } .kole-m-picker__btn { box-sizing: border-box; min-height: var(--kole-m-touch-target); padding: 0 var(--kole-space-8); border: 0; border-radius: var(--kole-radius-base); background: none; color: var(--kole-color-brand); font-family: inherit; font-size: var(--kole-m-font-size-label); line-height: 1; cursor: pointer; touch-action: manipulation; } .kole-m-picker__btn:focus-visible { outline: 2px solid var(--kole-color-focus-ring); outline-offset: 2px; } .kole-m-picker__btn:active { background: var(--kole-color-brand-bg); } .kole-m-picker__btn--confirm { font-weight: 500; } .kole-m-picker__columns { display: flex; align-items: stretch; gap: 1px; padding: 0 0 var(--kole-space-8); background: var(--kole-color-card-bg); } .kole-m-picker__column { flex: 1 1 0; min-width: 0; max-height: var(--kole-m-picker-column-height); margin: 0; padding: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; list-style: none; } .kole-m-picker__option { box-sizing: border-box; display: flex; align-items: center; justify-content: center; min-height: var(--kole-m-picker-option-height); padding: 0 var(--kole-space-4); color: var(--kole-color-text-body); font-size: var(--kole-m-font-size-label); line-height: 1.3; text-align: center; cursor: pointer; touch-action: manipulation; } .kole-m-picker__option:active { background: var(--kole-color-table-header-bg); } /* 状态 selected:当前选中项(品牌色高亮,与 aria-selected 同步) */ .kole-m-picker__option.is-selected { color: var(--kole-color-brand); font-weight: 500; } .kole-m-picker__option[aria-selected="true"] { color: var(--kole-color-brand); font-weight: 500; } /* 状态 disabled:选项不可选(置灰且不响应) */ .kole-m-picker__option.is-disabled { color: var(--kole-color-text-disabled); cursor: not-allowed; } .kole-m-picker__option.is-disabled:active { background: none; } .kole-m-picker__option:focus-visible { outline: 2px solid var(--kole-color-focus-ring); outline-offset: -2px; } /* 演示页触发器(非组件交付样式) */ .kole-m-picker__trigger { min-height: var(--kole-m-touch-target); padding: 0 var(--kole-m-gutter); border: 1px solid var(--kole-color-border); border-radius: var(--kole-radius-base); background: var(--kole-color-card-bg); color: var(--kole-color-text-body); font-family: inherit; font-size: var(--kole-m-font-size-label); cursor: pointer; touch-action: manipulation; } .kole-m-picker__trigger:focus-visible { outline: 2px solid var(--kole-color-focus-ring); outline-offset: 2px; }