@_y/acss-rn

1.0.1 • Public • Published

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)};

Readme

Keywords

none

Package Sidebar

Install

npm i @_y/acss-rn

Weekly Downloads

0

Version

1.0.1

License

none

Unpacked Size

12.9 kB

Total Files

7

Last publish

Collaborators

  • zhangdroid
  • nanasun
  • ziven27