Вот предварительный просмотр того, что мы собираемся создать
Вот живой предварительный просмотр сайта и ссылка на репозиторий GitHub. Это руководство является частью серии, и в этой части мы сосредоточимся только на дизайне сайта.
УСТАНОВКА
ШАГ 1
Начните с создания нового проекта Next.js, если он у вас еще не создан. Наиболее распространенный подход — использовать Create Next App.
npx create-next-app my-project
cd my-project
ШАГ 2
Установите tailwindcss и аналогичные зависимости через npm, а затем выполните команду init для генерации tailwind.config.js и postcss.config.js.
ШАГ 3
Добавьте пути ко всем файлам шаблонов в файл tailwind.config.js.
module.exports = {
content: [
"./pages/**/*.{js,ts,jsx,tsx}",
"./components/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [require("tailwind-scrollbar-hide")],
}
ШАГ 4
Добавьте директивы @tailwind для каждого из слоев Tailwind в файл ./styles/globals.css.
@tailwind base;
@tailwind components;
@tailwind utilities;
ШАГ 5
Очистите шаблонный код и выполните команду
npm run dev
Если вы в какой-то момент застряли на описанных выше шагах, обратитесь к этому документу.
Установка других зависимостей
Теперь, прежде чем мы начнем, нам нужно загрузить несколько зависимостей.
"axios": "^0.27.2",
"next": "12.2.2",
"react": "18.2.0",
"react-avatar": "^5.0.1",
"react-dom": "18.2.0",
"react-icons": "^4.4.0",
"react-loading-skeleton": "^3.1.0",
"react-player": "^2.10.1",
"react-tooltip": "^4.2.21",
"tailwind-scrollbar-hide": "^1.1.7"
Добавьте их в файл package.json и выполните команду npm install
.
Структура компонента
Теперь, внутри тега <main>
файла index.js, у нас будут эти строки кода:
<main>
<div>
<Header />
<div className='grid grid-cols-7 mt-20'>
<Sidebar />
<Body />
</div>
</div>
</main>
В корневом каталоге будет находиться папка components, в которой мы создадим новый файл ‘Sidebar.js’:
// Sidebar.js
import {Items} from './Data/Items';
function Sidebar({) {
return (
<div className='flex flex-col justify-between ml-2 mr-2 col-span-1 z-10 shadow-sm md:ml-7 md:mr-0':'hidden'>
<ul className="flex flex-col justify-between gap-10 fixed overflow-y-scroll h-[95%]">
{Items && Items.map((item, index) => {
return (
<li className='flex items-center text-center gap-4 transition-none p-3 cursor-pointer hover:text-gray-600 md:p-2'
key={index}
>
{item.icon} {' '}<span className='font-semibold pr-4 hidden lg:block'>{item.name}</span>
</li>
)
})}
</ul>
</div>
)
}
export default Sidebar
Внутри папки components мы создадим новую папку ‘data’ и создадим файл ‘Items.js’.
import {BsHouse, BsCompass, BsController, BsFilm, BsClockHistory, BsCollectionPlay, BsHandThumbsUp, BsLightbulb, BsTrophy, BsGraphUp, BsMusicPlayer, BsGear} from 'react-icons/bs';
export const Items = [
{
name: 'Home',
icon: <BsHouse size={25} />,
},
{
name: 'Explore',
icon: <BsCompass size={25} />,
},
{
name: "Trending",
icon: <BsGraphUp size={25} />
},
{
name: "Subscriptions",
icon: <BsCollectionPlay size={25} />
},
{
name: "Gaming",
icon: <BsController size={25} />
},
{
name: "Films",
icon: <BsFilm size={25} />
},
{
name: "History",
icon: <BsClockHistory size={25} />
},
{
name:"Likes",
icon: <BsHandThumbsUp size={25} />
},
{
name: "Learning",
icon: <BsLightbulb size={25} />
},
{
name: "Sports",
icon: <BsTrophy size={25} />
},
{
name:"Music",
icon: <BsMusicPlayer size={25} />
},
{
name: "Settings",
icon: <BsGear size={25} />
}
]
На этом мы закончим эту часть, до скорой встречи в следующей части.