Styled Components


Posted by chihyu on 2021-01-25

基礎用法

參考文件:Basics

  • const 元件名稱 = styled.標籤名稱:把 CSS 寫成 component 的感覺

    const Description = styled.p`
    color: red;
    padding: 20px;
    border: 1px solid black;
    `
    
  • const 元件名稱 = styled(已存在的 style component):擴張 style,在 styled 元件再加上 style

    const RedButton = styled(Button)`
    color: pink;
    `;
    
  • props => props.參數名稱 ? value1 : value2:用 function 決定 style 的值

    const Button = styled.button`
    background: ${props => props.primary ? "palevioletred" : "white"};
    `
    <Button>Normal</Button>
    <Button primary>Custom Button</Button>
    
  • <component as="">:改變元素的標籤

    <Button>Normal</Button>
    <Button as="a" href="/">Primary</Button>
    
  • props.自訂屬性:在 styled component 自訂屬性,再把值寫到 react component 裡面

    const Button = styled.button`
    background: palevioletred;
    color: ${props => props.buttonColor || "white"};
    `
    <Button>Normal</Button>
    <Button buttonColor="rebeccapurple">Custom Button</Button>
    
  • 在 style component 開頭加上 Styled,區分 react component

    const StyledCounter = styled.div``
    
  • 在 render 的元件外面定義 styled component,不要定義在裡面

    const StyledWrapper = styled.div`
    /* ... */
    `
    const Wrapper = ({ message }) => {
    return <StyledWrapper>{message}</StyledWrapper>
    }
    
  • styled(已知的 styled component).attrs:重複利用 style 的屬性

    const Input = styled.input.attrs(props => ({
    type: "text",
    size: props.size || "1em",
    }))
    const PasswordInput = styled(Input).attrs({
    type: "password",
    })`
    
  • 使用 keyframes

    // 先引入 keyframes
    import styled, { keyframes } from 'styled-components';
    // 寫 keyframe
    const rotate = keyframes`
    from {
      transforom: rotate(0deg);
    }
    to {
      transform: rotate(360deg);
    }
    `
    // 帶入 animation 
    const Rotate = styled.div`
    display: inline-block;
    animation: ${rotate} 2s linear infinite;
    padding: 2rem 1rem;
    font-size: 1.2rem;
    `;
    

選擇器

&:hover:元件被 hover 時
& ~ &:元件同層元件(兄弟元素)
& + &:元件正旁邊的元件
&.something:元件且有 class 為 something 的元件
.something &:在 .something 裡面的元件


#Web #React #styled-components







Related Posts

Day07 Life Cycle

Day07 Life Cycle

[MSSQL] 連線字串常用及冷門屬性介紹

[MSSQL] 連線字串常用及冷門屬性介紹

Linux Curl Command 指令與基本操作入門教學

Linux Curl Command 指令與基本操作入門教學


Comments