54 lines
4.3 KiB
HTML
54 lines
4.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh-CN" data-end="vue2" data-slug="cascader">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>cascader · Vue 2 预渲染</title>
|
|
<link rel="stylesheet" href="../../.design_library/kole-ui/colors_and_type.css">
|
|
<link rel="stylesheet" href="../../frameworks/Cascader.css">
|
|
<style>
|
|
/* 演示页的 body 口径(见 frameworks/*.html 的 <style>):组件 CSS 不写 body 样式,
|
|
而 .btn 这类 inline-flex 元素的高度依赖行高与留白,缺了就会塌成 0 高。 */
|
|
body { margin: 0; padding: 24px; background: var(--kole-color-page-bg); color: var(--kole-color-text-body);
|
|
font-family: var(--kole-font-family); font-size: 14px; line-height: 22px; }
|
|
#kole-end-preview { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
|
|
html.kole-dark body { background: var(--kole-color-page-bg); color: var(--kole-color-text-body); }
|
|
</style>
|
|
<style>
|
|
|
|
.kole-cascader { position: relative; display: inline-block; min-width: 200px; font-family: var(--font-family, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif); color: #262626; }
|
|
.kole-cascader-trigger { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 32px; padding: 0 12px; background: #fff; border: 1px solid #E8ECF1; border-radius: 4px; cursor: pointer; font-size: 14px; transition: border-color .15s, box-shadow .15s; }
|
|
.kole-cascader-trigger:hover { border-color: #2F54EB; }
|
|
.kole-cascader-trigger.is-open { border-color: #2F54EB; box-shadow: 0 0 0 2px rgba(47,84,235,0.2); }
|
|
.kole-cascader-trigger .placeholder { color: #767676; }
|
|
.kole-cascader-trigger .caret { color: #6E6E6E; transition: transform .15s; flex-shrink: 0; }
|
|
.kole-cascader-trigger.is-open .caret { transform: rotate(180deg); }
|
|
.kole-cascader-tags { display: flex; flex-wrap: wrap; gap: 4px; }
|
|
.kole-cascader-tag { background: #F0F5FF; color: #2F54EB; font-size: 12px; padding: 1px 8px; border-radius: 2px; white-space: nowrap; }
|
|
.kole-cascader-panel { position: absolute; z-index: 100; top: calc(100% + 4px); left: 0; background: #fff; border: 1px solid #E8ECF1; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.12); display: flex; }
|
|
.kole-cascader-col { min-width: 140px; max-height: 240px; overflow: auto; border-right: 1px solid #E8ECF1; padding: 4px 0; }
|
|
.kole-cascader-col:last-child { border-right: none; }
|
|
.kole-cascader-opt { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 12px; cursor: pointer; font-size: 14px; color: #262626; }
|
|
.kole-cascader-opt:hover { background: #F5F7FA; }
|
|
.kole-cascader-opt.is-active { background: #F0F5FF; color: #2F54EB; font-weight: 500; }
|
|
.kole-cascader-opt .arrow { color: #6E6E6E; font-size: 12px; }
|
|
.kole-cascader-opt .box { width: 14px; height: 14px; border: 1px solid #E8ECF1; border-radius: 3px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; color: #fff; font-size: 10px; }
|
|
.kole-cascader-opt.is-checked .box { background: #2F54EB; border-color: #2F54EB; }
|
|
.kole-cascader-search { position: absolute; z-index: 101; top: calc(100% + 4px); left: 0; width: 260px; background: #fff; border: 1px solid #E8ECF1; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.12); padding: 8px; }
|
|
.kole-cascader-search input { width: 100%; box-sizing: border-box; height: 30px; padding: 0 8px; border: 1px solid #E8ECF1; border-radius: 4px; font-size: 13px; outline: none; }
|
|
.kole-cascader-search input:focus { border-color: #2F54EB; box-shadow: 0 0 0 2px rgba(47,84,235,0.2); }
|
|
.kole-cascader-search input::placeholder { color: #767676; }
|
|
.kole-cascader-results { max-height: 200px; overflow: auto; margin-top: 8px; }
|
|
.kole-cascader-result { padding: 6px 8px; cursor: pointer; font-size: 14px; color: #262626; }
|
|
.kole-cascader-result:hover { background: #F5F7FA; }
|
|
.kole-cascader-empty { padding: 16px 8px; text-align: center; color: #767676; font-size: 13px; }
|
|
|
|
</style>
|
|
</head>
|
|
<body class="kole-end-preview-body">
|
|
<!-- 该端实现(frameworks/Cascader.vue2.vue)的离线预渲染产物。类名与该端源码一致(tools/build-end-preview.mjs 断言)。 -->
|
|
<div id="kole-end-preview" data-end="vue2" data-slug="cascader">
|
|
<div data-server-rendered="true" class="kole-cascader"><div class="kole-cascader-trigger"><span>请选择</span> <span class="caret">▾</span></div> <!----> <!----></div>
|
|
</div>
|
|
</body>
|
|
</html>
|