2021鐵人賽
React
在專案資料夾內一行安裝就完成了。
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程式碼看會容易一些。
這篇很快速地做了導覽列的選單功能,主要是因為當使用手機觀看時,就可以收和導覽列的按鈕到漢堡選單內,比較不會有跑版問題。