上一篇提到的vue-styled-components
, 尝试了下, 发现它’侵入性’较大, 基本上可以改变vue
官方提供的编写css
的方式, 我还是想找个’小巧’一点的库
aphrodite
和color
库的结合两个关注量数千的库, 感觉就是好些, 为了保证vue
模板的简洁性, 我尝试了一些封装, 一定要尽量简洁, 为了UI而写大量冗余代码, 那后面的业务就更加困难了.
Using a Plugin
本次我学习了vue
的插件功能, 为Vue
添加全局功能
用法灵活, 在vue
模板中表现简洁
<div class="input" :class="css('input')"/>
<div class="input" :class="css('input', conditionally && 'input2')"/>
<div class="input" :class="css(['input', 'input2'])"/>
// 每个页面得引入封装后的styled函数, 后面可能尝试使用插件, 添加全局功能, 减少导入.
import styled, { color } from '@/utils/styled';
const css = styled(({
theme,
modeColor,
}) => ({
input: {
color: modeColor('#333'), // 开启夜间模式后, 颜色自动反转
'border-color': modeColor('#ddd'),
'caret-color': theme, // 全局的主题色
':focus': { // 轻松解决上篇提过的不能解决 pseudo class 的问题
'border-color': theme,
},
},
}));