tailwindcss使用总结

2021-03-10  本文已影响0人  朱传武

官网
接触tailwindcss不过两周有余,但是仅仅刚接触不到一天的时候,我已经深深的被它吸引,我从未见过一款css库可以做到如此好用、如此灵活,几乎不用自己再写css了,我觉得它比任何一款样式库都要好用。
如果您遇到的通用框架由许多组件预先设计组成,则在此TailwindCSS中,您将找不到诸如按钮,卡片,警报,轮播等其他预先设计的组件。因为TailwindCSS不是UI工具包,而是实用程序优先的框架,用于快速构建自定义界面。

简而言之,在TailwindCSS中,有许多小类代表CSS声明。因此,当您要创建组件时,则需要使用其中的一些小类来创建您要引用的组件。
发的使用方法大体如下:

<div className="md:mt-8 flex w-full flex-col items-center">
         <ShoppingCartHeader subtotal={1639.97} save={290} />
 </div>

只要你记住它的命名规则,然后在className里面拼写各个小样式的名称即可,你不用担心某些css属性tailwind会覆盖不到,我用这两周来几乎没碰到这种情况,可以去官网看下,每个属性都有详细的说明,你也不要觉得这么多小样式的名称很难记住,我几乎只用半天时间就掌握了它的命名规则,而一旦你掌握了它的命名规则,基本不用死记硬背,只要按规则去拼写就可以,当然这有个前提:你对css属性非常熟悉。

自定义宽度

基本用法就是如我上面所写,当然如果只有这些,很可能很满足不了一些情况,tailwind提供了非常丰富的自定义接口,例如:

image.png
image.png
同一个界面既要适配mobile又要适配pc,而设计为了适配性,pc端做了一些简化,但是content固定宽度是520px,mobile上宽度当然可以用w-full来搞,但是520px,这个值如果不用单独写css,如何只用tailwind来搞定呢?
image.png
可以在tailwind.config里面设置自定义width,然后用的时候直接w-520px即可,
<div className={classnames("w-full  md:w-520px")}>

如上即可表示默认宽度是w-full即(width:100%),md表示当前设备是pc端(screen宽度大于768px,当然这个断点也可以自己定义),这个样式的意思就是在移动端全屏在pc端宽度固定为520px,爽吗?这样写?

自定义最大宽度

 maxWidth: {
        sm: "424px",
      },

使用的时候就可以:

<div className="mt-2 space-y-4 md:max-w-sm">
image.png

自定义颜色

 colors: {
      // brand colors
      primary: "#cc0000",
      white: "#fff",
      black: "#292929",
      background: "#f6f8f9",

      // primary colors
      primary01: "#b20405",

      primary80: "#d53232",
      primary60: "#de6464",
      primary40: "#e89696",
      primary20: "#f1c8c8",

      // secondary colors
      secondary00: "#409aef",
      secondary01: "#ecf5fd",

      // feedback colors
      success: "#00daa1",
      warning: "#ff8b00",
      error: "#e42526",

      // neutral colors
      grey80: "#546171",
      grey60: "#969ea8",
      grey40: "#bbc0c6",
      grey20: "#dddfe3",
      grey10: "#eeeff1",

      // special colors
      star: "#fdd446",

      // chats users
      user1: "#e46a25",
      user2: "#e0e425",
      user3: "#90e425",
      user4: "#25e438",
      user5: "#25e494",
      user6: "#25e4cd",
      user7: "#25d9e4",
      user8: "#259fe4",
      user9: "#2566e4",
      user10: "#2538e4",
      user11: "#4b25e4",
      user12: "#6225e4",
      user13: "#9025e4",
      user14: "#e025e4",

      // social media colors
      facebook: "#3b5998",
      messenger: "#0084ff",
      twitter: "#00a2f9",
      whatsapp: "#75cf6c",
      pinterest: "#a5221f",
      google: "#ea4335",
      linkedin: "#0e76a8",

      inherit: "inherit",
    },

用的时候更加灵活,比如字体颜色,只需要:

 <h2 className="bold text-grey10">{"You haven't added a default purchase preference yet"}</h2>

采用text-{颜色名}即可,别的都同理了,比如背景色:bg-{颜色名}即可,比如:bg-primary01

与scss混用


定义好scss样式,


image.png

导入css,之后就可以混合使用:

<div className={classnames("mx-4", styles("shopping-cart-image"))}>

样式覆盖

定义要覆盖的样式:

const deskStyle = useMemo(() => [{ opacity: 1.0, background: "RGBA(41, 41, 41, 0.9)" }], []);
    <div className={styles("shadow-overlayer")} css={deskStyle} onClick={onDismiss}>

即可覆盖,当然用scss的方式也可以覆盖,这种相当于内联样式覆盖,优先级最高。

与js变量混合使用

<div
      className={styles("option-group", {
        "option-group--mobile": mobileOptions,
        "option-group--only-as-mobile": onlyUseAsMobile,
      })}
    >

当mobileOptions为true的时候,样式option-group--mobile才会起作用。
本文持续更新,随着我对这个库的认识的更加深入。

上一篇下一篇

猜你喜欢

热点阅读