@_y/acss-rn
v1.0.1
Published
基于React Native实现的Atomic CSS,用于快速简易地便编写RN对象样式。
Downloads
5
Readme
ACSS RN版本
基于React Native实现的Atomic CSS,用于快速简易地便编写RN对象样式。
安装
npm install --save @_y/acss-rn
用法
基础版本
import React from 'react';
import { V, T } from '@_y/acss-rn'
export default class App extends React.Component {
render() {
return (
<V mt="40">
<T c="#123212">测试测试</T>
</V>
);
}
}
进阶版本
封装组件,并传递props样式
import React from 'react';
import { V, T } from '@_y/acss-rn'
// Button
export default function(props) {
return (
<V {...props}><T c_fff={props.c_fff}>这是一个按钮</T></V>
);
}
//调用
import Button from './components/Button'
export default class App extends React.Component {
render() {
return (
<V mt="40">
<Button bg={"yellow"} c_fff w="50" d="block"></Button>
<Button bg={"gray"} c_fff w="50" d="block"></Button>
<Button bg={"blue"} c_fff w="50" d="block"></Button>
<Button bg={"red"} c_fff w="50" d="block"></Button>
</V>
);
}
}
详情API查询
styled-components
|对外API|对应|作用|使用|
|:--:|:--:|:--:|:--:|
|V|View|类似于HTML中的div|<Div mt="10"></Div>
|
|T|Text|不同与HMTL中的P,类似于span|<P mt="10">aaaaaa</P>
|
|Img|Image|HTML中的img|
|ImgBg|ImageBackground|||
|ComponentStyled|/|封装对象,使其拥有ACSS样式|CustomStyle(View)|
|SpeedCustomComponent|/|快速创建组件|SpeedCustomComponent(View)|
自定义样式组件
方式一
快速创建组件
定义
const V = SpeedCustomComponent(View)
使用
<V mt="50"><T>快速创建组件</T></V>
方式二
自定义属性类型
定义组件,以Text为例子
首先封装成带有ACSS样式的组件
const TStyled = styled(Text)`${props => Acss(props)};`;
再封装成高阶组件,可处理props,最后返回自定义的组件。
const T = ({ ttu, ttc, children, ...otherProps }) => {
let text = children;
// 安卓设置了这个属性文字直接就不显示了
let isAndriod = Platform.OS !== "ios" ? true : false;
if (ttu && isAndriod) {
//变成小写
text = text.toUpperCase();
} else if (ttc && isAndriod) {
//变成大写
text = titleCase(text);
}
return (
<TStyled
ttu={isAndriod ? false : ttu}
ttc={isAndriod ? false : ttc}
{...otherProps}
>
{text}
</TStyled>
);
};
单位转换问题
根据屏幕大小给予不同dp 基数320px的屏幕16px为基准。
|屏幕大小|size| |:--:|:--:| |<320|14px| |<361|16px~18px| |<414|18px~22px| |<1001|18px~22px|
ppx, rpx, dpx, spx, toPpx, toRpx, toDpx, toSpx, vh, vw, statusBarHeight
二维码体验Demo
安装expo app:https://expo.io/tools
ACSS支持API一览
不对应命名规则的各类API
特殊单位
|API|对应|
|:--:|:--:|
|wp|width:${props.wp};
单位是%|
|hp|height:${props.hp};
单位是%|
|wrap|margin-left:${toPpx(16)}px; margin-right:${toPpx(16)}px
|
|row|padding-left:${toPpx(16)}px; padding-right:${toPpx(16)}px
|
其余按照命名规则存在的API
background
|API|对应| |:--:|:--:| |bg|background| |bgc|background-color|
text transform
|API|对应| |:--:|:--:| |tac|text-align:center;| |tar|text-align:right;| |ttu|text-transform: uppercase| |ttc|text-transform: capitalize|
flexbox
|API|对应|
|:--:|:--:|
|asfe|align-self: flex-end;
|
|aifs|align-items: flex-start;
|
|fdr|flex-direction: row;
|
|fdc|flex-direction: column;
|
|fwn|flex-wrap: nowrap;
|
|aic|align-items: center;
|
|jcsb|justify-content: space-between;
|
|jcc|justify-content: center;|
|jcfe|
justify-content: flex-end;|
|f1|
flex:1;`|
font
|API|对应|
|:--:|:--:|
|fs|font-size: ${toPpx(props.fs)}px;
|
|fw|font-weight:${props.fw};
|
|c| color: ${props.c};
|
|c_l|color: ${color.l};
|
|c_m|color: ${color.m};
|
|c_s|color: ${color.s};
|
|c_xs|color: ${color.xs};
|
|c_000|color: #000;
};
|c_fff|color: #fff;
};
|c_primary|color: ${color.primary}
font-weight:${props.fw};
|c_danger|
color: ${color.danger}|
|c_success|
color: ${color.success}|
|c_warning|color: ${color.warning}
|
position
|API|对应|
|:--:|:--:|
|pr|position:relative;
|
|pa |position:absolute;
|
|t0|top:0;
|
|l0|left:0;
|
|r0|right:0;
|
|b0|bottom:0;
|
border
|API|对应|
|:--:|:--:|
|br|border-radius:${props.br}px;
|
宽高
|API|对应|
|:--:|:--:|
|w|width:${toPpx(props.w)}px;
|
|h|height:${toPpx(props.h)}px;
|
|lh|line-height:${toPpx(props.lh)}px;
|
margin
|API|对应|
|:--:|:--:|
|mt|margin-top:${toPpx(props.mt)}px;
|
|mr|margin-right:${toPpx(props.mr)}px;
|
|mb|margin-bottom:${toPpx(props.mb)}px;
|
|ml|margin-left:${toPpx(props.ml)}px;
|
padding
|API|对应|
|:--:|:--:|
|p|padding:${toPpx(props.p)}px;
|
|pt|padding-top:${toPpx(props.pt)}px;
|
|pr|padding-right:${toPpx(props.pr)}px;
|
|pb|padding-bottom:${toPpx(props.pb)}px
|
|pl|padding-left:${toPpx(props.pl)}px;
|
opacity
|API|对应|
|:--:|:--:|
|o|opacity:${toPpx(props.o)};
|