VueJS – Hướng dẫn làm Admin Dashboard – Phần 2: Nhúng Boostrap làm đẹp

Ở bài trước chúng ta đã tạo được các components cơ bản của Admin Dashboard. Bài này mình sẽ style cho đẹp nha

Ở bài trước chúng ta đã làm xong các items sau:

  1. Layout
  2. Components
  3. Ráp các components vào layout

Tiếp theo mình sẽ hướng dẫn các bạn đưa Boostrap vào và style cho đẹp nhé. Nào Start thôi

Thêm Boostrap & File style

Thêm file admin.css này vào folder public\css\

Mở file public\index.html ra và nhúng các thư viện boostrap cũng như font-awesome vào

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>    
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link href="<%= BASE_URL %>css/admin.css" rel="stylesheet" />
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ" crossorigin="anonymous">
  </head>
  <body>
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script
      src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.bundle.min.js"
      crossorigin="anonymous"
    ></script>
  </body>
</html>

Sửa component Header

<template>
    <nav class="sb-topnav navbar navbar-expand navbar-dark bg-dark">
      <a class="navbar-brand" href="/">
        Demo Admin Dashboard
      </a>
      <ul
        class="d-none d-md-inline-block form-inline ml-auto mr-0 mr-md-3 my-2 my-md-0 navbar-nav"
      >
        <li class="nav-item dropdown">
          <a
            class="nav-link dropdown-toggle"
            id="userDropdown"
            href="#"
            role="button"
            data-toggle="dropdown"
            aria-haspopup="true"
            aria-expanded="false"
          >
            <i class="fas fa-user fa-fw"></i>
          </a>
          <div
            class="dropdown-menu dropdown-menu-right"
            aria-labelledby="userDropdown"
          >
            <a class="dropdown-item" href="#">Settings</a>
            <a class="dropdown-item" href="#">Activity Log</a>
            <div class="dropdown-divider"></div>
            <a class="dropdown-item" href="#">Logout</a>
          </div>
        </li>
      </ul>
    </nav>
</template>

Sửa component Sidebar

<template>
    <div id="layoutSidenav_nav">
        <nav class="sb-sidenav accordion sb-sidenav-dark" id="sidenavAccordion">
        <div class="sb-sidenav-menu">
            <div class="nav">
            <div class="sb-sidenav-menu-heading">Home</div>
            <a class="nav-link" href="/">
                <div class="sb-nav-link-icon">
                <i class="fas fa-tachometer-alt"></i>
                </div>Dashboard
            </a>
            <div class="sb-sidenav-menu-heading">Result</div>
            <a
                class="nav-link"
                href="/list-page"
            >
                <div class="sb-nav-link-icon">
                <i class="fas fa-table"></i>
                </div>List Page
            </a>
            </div>
        </div>
        <div class="sb-sidenav-footer">
            <div class="small">Logged in as:</div>webkhoiviet.com
        </div>
        </nav>
    </div>
</template>

Sửa component Footer

<template>
    <footer class="py-4 bg-light mt-auto">
        <div class="container-fluid">
            <div class="d-flex align-items-center justify-content-between small">
                <div class="text-muted">Copyright © 2020 webkhoiviet.com</div>
            </div>
        </div>
    </footer>    
</template>

Sửa src\layout\AdminDashboard.vue

<template>
    <div>
        <Header />
        <div id="layoutSidenav">
           <SideBar />
           <div id="layoutSidenav_content">
              <main>
                  <div class="container-fluid">
                      <!-- Page content -->
                       <slot name="LayoutContent" />
                      <!-- Page content -->
                  </div>
              </main>
           </div><!--end #layoutSidenav_content -->
           <Footer />
        </div><!-- end #layoutSidenav -->
    </div>
</template>

<script>
import Header from '../components/common/Header.vue'
import Footer from '../components/common/Footer.vue'
import SideBar from '../components/common/SideBar.vue'

export default {
  name: 'AdminDashboard',
  components: {
    Header,
    Footer,
    SideBar
  }
}
</script>

Kết quả:

Ở bài tiếp theo mình sẽ hướng dẫn các bạn tích hợp điều hướng các menu trong Dashboard nhé.

F G+ T

tuandph

Khởi đầu với .NET từ năm 2013 đến nay. Hiện tại mình đang làm full-stack developer. Yêu thích lập trình & chia sẽ kiến thức. Thời gian rảnh thường làm những tool vui vui và viết lách kể lệ sự đời.