0.3.1 • Published 3 months ago

unocss-preset-scrollbar v0.3.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

unocss-preset-scrollbar

NPM version npm

unocss 的滚动预设,一个简单的实例

简体中文 | English

安装

npm i unocss-preset-scrollbar unocss -D

使用

// unocss.config.ts
import { defineConfig, presetAttributify, presetUno } from 'unocss'
import { presetScrollbar } from 'unocss-preset-scrollbar'

export default defineConfig({
  presets: [
    presetUno(),
    presetAttributify(),
    presetScrollbar({
      // config
    }),
  ],
})
<div 
  class="scrollbar scrollbar-rounded scrollbar-w-4px scrollbar-radius-2 scrollbar-track-radius-4 scrollbar-thumb-radius-4"
/>

上述代码将生成如下的 css 代码:

/* layer: shortcuts */
.scrollbar::-webkit-scrollbar{width:var(--scrollbar-width);height:var(--scrollbar-height);}
.scrollbar{overflow:auto;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);--scrollbar-track:#f5f5f5;--scrollbar-thumb:#ddd;--scrollbar-width:8px;--scrollbar-height:8px;--scrollbar-track-radius:4px;--scrollbar-thumb-radius:4px;}
.scrollbar-rounded::-webkit-scrollbar-thumb{border-radius:var(--scrollbar-thumb-radius);}
.scrollbar-rounded::-webkit-scrollbar-track{border-radius:var(--scrollbar-track-radius);}
.scrollbar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);}
.scrollbar::-webkit-scrollbar-track{background-color:var(--scrollbar-track);}
/* layer: default */
.scrollbar-radius-2{--scrollbar-track-radius:0.5rem;--scrollbar-thumb-radius:0.5rem;}
.scrollbar-thumb-radius-4{--scrollbar-thumb-radius:1rem;}
.scrollbar-track-radius-4{--scrollbar-track-radius:1rem;}
.scrollbar-w-4px{--scrollbar-width:4px;}

你也可以使用 Attributify Mode

<div
  scrollbar="~ rounded"
/>

或者使用 @apply

import { defineConfig, presetAttributify, presetUno, transformerDirectives } from 'unocss'
import { presetScrollbar } from 'unocss-preset-scrollbar'

export default defineConfig({
  presets: [
    presetUno(),
    presetAttributify(),
    presetScrollbar({
    }),
  ],
+  transformers: [
+    transformerDirectives(),
+  ],
})
.my-custom-scrollbar {
  @apply scrollbar scrollbar-rounded
}

配置

配置项默认值说明
scrollbarWidth8px默认的滚动条宽度
scrollbarHeight8px默认的滚动条高度
scrollbarTrackRadius4px默认的滚动条轨迹的圆角
scrollbarThumbRadius4px默认的滚动条滑块的圆角
scrollbarTrackColor#f5f5f5默认的滚动条轨迹的背景色
scrollbarThumbColor#ddd默认的滚动条滑块的背景色
numberToUnitvalue => `${value / 4}rem`捕获到的数字转化成单位的方法
varPrefix''该预设生成的css变量的前缀
prefix''该预设生成的shortcuts加上前缀
noCompatible'true'如果为 false 的话 会使用 scrollbar-widthscrollbar-color 这两个规则,能够在Firefox上兼容, 但是scrollbar-hscrollbar-w 以及 scrollbar-raidus 会失效

举个例子

<div class="scrollbar scrollbar-w-4">

如果你使用默认的配置,scrollbar-w-4 将会转化成 --scrollbar-width: 1rem

而如果你自定义 numberToUnit 项:

export default defineConfig({
  presets: [
    presetUno(),
    presetScrollbar({
      numberToUnit: value => `${value}px`,
    }),
  ],
})

将转化成 --scrollbar-width: 4px

规则

scrollbar

scrollbar-thin

.scrollbar-thin {
  scrollbar-width: thin; // 如果 noCompatible 为 true, 则不会生成该行
  --un-scrollbar-width: 8px;
  --un-scrollbar-height: 8px;
}

scrollbar-none

.scrollbar-none {
  scrollbar-width: none;
}

.scrollbar-none::-webkit-scrollbar {
  display:none;
}

rounded

scrollbar-rounded

使滚动条有圆角

颜色

scrollbar-(track|thumb)-color-<color>

设置轨迹或滑块的背景色

size

scrollbar-(radius|w|h|track-radius|thumb-radius)-(\d+?)([a-zA-Z]*?)

对应key说明
raidus设置轨迹和滑块的圆角
w设置滚动条宽度
h设置滚动条高度
track-radius设置轨迹圆角
thumb-radius设置滑块圆角

注意如果以数字结尾,则会通过 numberToUnit 转化成带有单位的长度,反之直接生成对应的单位长度。

注意想要设置滚动条的圆角,必须先使用 scrollbar-rounded

例如:

  • scrollbar-w-4 -> --scrollbar-width: 1rem
  • scrollbar-w-4px -> --scrollbar-width: 4px
  • scrollbar-w-4rem -> --scrollbar-width: 4rem

other

base starter-ts

License

MIT License © 2021 kkopite