92日目
15900 ワード
[react]reactを使用して下部ナビゲーションを作成する
完了した下部ナビゲーション
プロセス
1.5つのボタンを作成する
BottomNavに下部ナビゲーション要素を配置します.jsxという名前のファイルを作成し、次のように印刷します.位に示すように5 button字が出現した. 2.CSS水平位置合わせを適用する
BottomNav.cssをjsxのBottomNavに適用した.cssファイルを生成し、以下のように印刷します.ナビゲーションの形態が形成されている. 3.ナビゲーションアイコンの適用
現在のボタンで出力されたテキストをアイコンで置き換えます.
https://fontawesome.com/v6.0/iconsの上のサイトで提供されているアイコンを使用しました.reactで使用できるからです. 使用方法
https://fontawesome.com/v6.0/docs/web/use-with/react/
上のサイトにログインします.
設定中の小包を追加します.
パッケージのインストールが完了すると、FontAwesomeは使用するアイコンを管理します.jsxファイルの作成
font awesome使用するアイコンをライブラリに入れます.上記のすべての使用するアイコンをライブラリに入れると、これらのアイコンを使用する構成部品からロードできます. BottomNav.jsx
ナビゲーションバーにアイコンが表示されます.
4.ナビゲーションバーの下部に移動
5.選択したアイコンの色を変更する
アイコンの色は変わりません.ユーザーは今どのページも見えません.アイコンを押して、色を変えます.
BottomNav.jsx
ステータスを管理するActiveNavを宣言し、現在選択されているアイコンを決定します.
アイコンリンクごとにonClickイベントを選択するたびにactiveNavが置き換えられます.
ActiveNavが各アイコンの番号と同じ場合、classNameにactiveを追加します.
BottomNav.css nav-itemのデフォルトカラーをグレーに設定し、プロジェクトをクリックするとアクティブクラスのカラーを設定します. で選択したアイコンの色が変更されます.
完了した下部ナビゲーション
プロセス
1.5つのボタンを作成する
BottomNavに下部ナビゲーション要素を配置します.jsxという名前のファイルを作成し、次のように印刷します.
import React from "react";
const BottomNav = () => {
return (
<nav className="wrapper">{/* 하단 네비게이션 최상위 태그 */
<div>button1</div> {/* 네비게이션을 구성하고 있는 하나의 버튼 */}
<div>button2</div>
<div>button3</div>
<div>button4</div>
<div>button5</div>
</nav>
);
};
export default BottomNav;
BottomNav.cssをjsxのBottomNavに適用した.cssファイルを生成し、以下のように印刷します.
/* nav태그 아래의 자식들을 수평정렬하기 위한 설정 */
nav {
overflow: hidden;
}
/* nav태그 아래의 div태그들을 수평정렬 및 세로길이 설정 */
nav > div {
/* 수평정렬, 5개의 button을 각각 20% width만큼 할당 */
text-align: center;
float: left;
width: 20%;
/* 세로길이 설정 */
height: 45px;
line-height: 45px;
}
現在のボタンで出力されたテキストをアイコンで置き換えます.
https://fontawesome.com/v6.0/icons
https://fontawesome.com/v6.0/docs/web/use-with/react/
上のサイトにログインします.
パッケージのインストールが完了すると、FontAwesomeは使用するアイコンを管理します.jsxファイルの作成
// 라이브러리
import { library } from "@fortawesome/fontawesome-svg-core";
// 사용할 아이콘 import
import { faPlus } from "@fortawesome/free-solid-svg-icons";
import { faUser } from "@fortawesome/free-solid-svg-icons";
import { faMedal } from "@fortawesome/free-solid-svg-icons";
import { faCompass } from "@fortawesome/free-solid-svg-icons";
import { faHome } from "@fortawesome/free-solid-svg-icons";
// 사용할 아이콘을 라이브러리에 추가
library.add(faPlus, faUser, faMedal, faCompass, faHome);
import React from "react";
import "./BottomNav.css";
// 사용할 아이콘 import
import "./FontAwesome";
// FontAwesomIcon 컴포넌트를 사용하기 위해 import
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
const BottomNav = () => {
return (
<nav className="wrapper">
{/* 하단 네비게이션 최상위 태그 */}
<div>
<FontAwesomeIcon icon="home" /> {/* 네비게이션을 구성하고 있는 하나의 버튼 */}
</div>
<div>
<FontAwesomeIcon icon="compass" />
</div>
<div>
<FontAwesomeIcon icon="plus" />
</div>
<div>
<FontAwesomeIcon icon="medal" />
</div>
<div>
<FontAwesomeIcon icon="user" />
</div>
</nav>
);
};
export default BottomNav;
FontAwesome iconをインポートし、buttonをアイコンに変換します.ナビゲーションバーにアイコンが表示されます.
4.ナビゲーションバーの下部に移動
/* 네비바 하단 고정 밑 세로 길이 설정 */
.wrapper {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 45px;
}
/* nav태그 아래의 자식들을 수평정렬하기 위한 설정 */
nav {
overflow: hidden;
border-top: 2px solid grey;
}
/* nav태그 아래의 div태그들을 수평정렬 및 세로길이 설정 */
nav > div {
/* 수평정렬, 5개의 button을 각각 20% width만큼 할당 */
float: left;
width: 20%;
text-align: center;
/* 세로길이 설정 */
height: 45px;
line-height: 45px;
}
一番上のパッケージクラスを下に移動し、position:fixedオプションを使用して画面に固定します.5.選択したアイコンの色を変更する
アイコンの色は変わりません.ユーザーは今どのページも見えません.アイコンを押して、色を変えます.
BottomNav.jsx
import React, { useState } from "react";
import "./BottomNav.css";
import { Link } from "react-router-dom";
// 사용할 아이콘 import
import "./FontAwesome";
// FontAwesomIcon 컴포넌트를 사용하기 위해 import
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
const BottomNav = () => {
// 현재 선택된 아이콘을 관리하는 state
const [activeNav, setActiveNav] = useState(1);
return (
<nav className="wrapper">
{/* 하단 네비게이션 최상위 태그 */}
<div>
<Link to="/first" className="nav-link" onClick={() => setActiveNav(1)}>
<FontAwesomeIcon
icon="home"
className={activeNav === 1 ? "nav-item active" : "nav-item"}
/>
{/* 네비게이션을 구성하고 있는 하나의 버튼 */}
</Link>
</div>
<div>
<Link to="/second" className="nav-link" onClick={() => setActiveNav(2)}>
<FontAwesomeIcon
icon="compass"
className={activeNav === 2 ? "nav-item active" : "nav-item"}
/>
</Link>
</div>
<div>
<Link to="/third" className="nav-link" onClick={() => setActiveNav(3)}>
<FontAwesomeIcon
icon="plus"
className={activeNav === 3 ? "nav-item active" : "nav-item"}
/>
</Link>
</div>
<div>
<Link to="/fourth" className="nav-link" onClick={() => setActiveNav(4)}>
<FontAwesomeIcon
icon="medal"
className={activeNav === 4 ? "nav-item active" : "nav-item"}
/>
</Link>
</div>
<div>
<Link to="/fifth" className="nav-link" onClick={() => setActiveNav(5)}>
<FontAwesomeIcon
icon="user"
className={activeNav === 5 ? "nav-item active" : "nav-item"}
/>
</Link>
</div>
</nav>
);
};
export default BottomNav;
ステータスを管理するActiveNavを宣言し、現在選択されているアイコンを決定します.
アイコンリンクごとにonClickイベントを選択するたびにactiveNavが置き換えられます.
ActiveNavが各アイコンの番号と同じ場合、classNameにactiveを追加します.
/* 네비바 하단 고정 밑 세로 길이 설정 */
.wrapper {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 45px;
}
/* nav태그 아래의 자식들을 수평정렬하기 위한 설정 */
nav {
overflow: hidden;
border-top: 2px solid grey;
}
/* nav태그 아래의 div태그들을 수평정렬 및 세로길이 설정 */
nav > div {
/* 수평정렬, 5개의 button을 각각 20% width만큼 할당 */
float: left;
width: 20%;
text-align: center;
/* 세로길이 설정 */
height: 45px;
line-height: 45px;
}
/* 하단 네비바의 메뉴를 눌렀을 때 색상 변경*/
.nav-item {
color: grey;
}
/* 하단 네비바의 메뉴를 눌렀을 때 색상 변경*/
.active {
color: #ef5c89;
}
Reference
この問題について(92日目), 我々は、より多くの情報をここで見つけました https://velog.io/@minkuk90/92일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol