iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
Modern Web

用React刻自己的投資Dashboard系列 第 25

用React刻自己的投資Dashboard Day25 - 製作漢堡選單

tags: 2021鐵人賽 React

安裝styled-components套件

在專案資料夾內一行安裝就完成了。

npm install --save styled-components

製作漢堡選單圖示

這邊是參考網路上的寫法,因為連圖示都寫實用程式碼寫在是蠻酷的,就把它複製下來了。

src\UI\Burger\Burger.js

import React from 'react';
import { StyledBurger } from './Burger.styled';

const Burger = () => {
  return (
    <StyledBurger>
      <div />
      <div />
      <div />
    </StyledBurger>
  )
}

export default Burger;

src\UI\Burger\Burger.styled.js

import styled from 'styled-components';

export const StyledBurger = styled.button`
  position: absolute;
  top: 1rem;
  right: 2rem;
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  width: 1.5rem;
  height: 2rem;
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 0;
  
  div {
    width: 2rem;
    height: 0.25rem;
    background: #787676;
    border-radius: 10px;
    position: relative;
    transform-origin: 1px;
  }

  @media screen and (min-width: 576px) {
    div {
      visibility: hidden;
    }
  }
`;

製作選單列表

點開漢堡選單的三條線圖示之後,會跳出選單列表,這邊就來製作選單列表。
src\UI\Menu\Menu.js

import React from 'react';
import { StyledMenu } from './Menu.styled';

const Menu = () => {
  return (
    <StyledMenu>
      <a href="/">
        首頁
      </a>
      <a href="/macroeconomics">
        總體經濟
      </a>
    </StyledMenu>
  )
}

export default Menu;

src\UI\Menu\Menu.styled.js

import styled from 'styled-components';

export const StyledMenu = styled.nav`
  visibility: hidden;
  width: 30%;
  box-shadow: 0px 2px 5px gray;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: #89CCE0;
  text-align: left;
  padding: 0.5rem;
  position: absolute;
  top: 61px;
  right: 0;

  a {
    font-size: 1rem;
    padding-bottom: 0.5rem;
    font-weight: bold;
    color: #787676;
    text-decoration: none;
  }
`;

將漢堡選單與選單列表插入導覽列

製作好上述兩個元件之後,就可以把它放入Navbar囉!
src\components\Navbar\Navbar.js

import React, { useState } from 'react';
import styles from './Navbar.module.css';
import Navbar from 'react-bootstrap/Navbar';
import svgIcon from './navbaricon.svg';
import Nav from 'react-bootstrap/Nav';
// 新增元件
import Burger from '../../UI/Burger/Burger';
import Menu from '../../UI/Menu/Menu';

const Topbar = (props) => {
  return (
    <Navbar className={styles.navbar}>
      ...
      <Burger />
      <Menu />
    </Navbar>
  );
};

export default Topbar;

加上選單列表的開啟與關閉功能

漢堡選單的功能通常就是點選三條線的圖示可以做選單列表的開啟與關閉,這個功能在react的實作,可以透過狀態的改變來達成這個功能,因此可想而知會用到useState hook。

因為程式碼較瑣碎一些,透過GitHub程式碼看會容易一些。

小結

這篇很快速地做了導覽列的選單功能,主要是因為當使用手機觀看時,就可以收和導覽列的按鈕到漢堡選單內,比較不會有跑版問題。


上一篇
用React刻自己的投資Dashboard Day24 - styled components
下一篇
用React刻自己的投資Dashboard Day26 - 台股技術面功能規劃
系列文
用React刻自己的投資Dashboard30

尚未有邦友留言

立即登入留言