在项目中使用UnoCSS时,实现移动端1px精细边框适配
适配规则定义:
- 1bdr 四边框
- 1bdr-t 上边框
- 1bdr-b 下边框
- 1bdr-l 左边框
- 1bdr-r 右边框
要实现上面的规则,可以unocss中自定义规则 unocss 规则
在 uno.config.ts
中定义 rules
js
import {
type Preset,
defineConfig,
toEscapedSelector,
} from 'unocss'
export default defineConfig({
...
rules: [
[
/^1bdr(-[t|b|r|l])?$/,
([, poi], { rawSelector }) => {
const color = 'rgba(0, 0, 0, 0.15)'
const positions = ['-top', '-bottom', '-right', '-left']
const pos = positions.find((v) => v.startsWith(poi))
const bdr = `border${pos}: 1px solid ${color};`
// console.log(poi, bdr)
const selector = toEscapedSelector(rawSelector)
return `
${selector} {
position: relative;
}
${selector}::after {
content: " ";
position: absolute;
width: 200%;
height: 200%;
top: 0;
left: 0;
${bdr}
transform: scale(0.5);
transform-origin: 0 0;
pointer-events: none;
border-radius: inherit;
}
`
},
],
]
...
})
使用
html
// 可适配 border-radius
<div class="1bdr rounded-2 p-2 m-2"></div>
<div class="1bdr-b p-2 m-2"></div>