(资料图片仅供参考)
最近组件库更新比较频繁,有些同学感觉有点迷茫,就着今天刚上了张老板一节课立马撸个新的上手教程回馈社区, ;->
dotnet new blazorserver -o b18QuickStartv757dotnet sln add b18QuickStartv757/b18QuickStartv757.csproj
dotnet add b18QuickStartv757 package BootstrapBlazordotnet add b18QuickStartv757 package BootstrapBlazor.FontAwesome
增加主题样式表到 Pages/_Host.cshtml
文件中
删除
并在下面添加两行
添加 Javascript 引用到 Pages/_Host.cshtml
文件中
在 <script src="_framework/blazor.server.js"></script>
之前添加
<script src="_content/BootstrapBlazor/js/bootstrap.blazor.bundle.min.js" asp-append-version="true"></script>
_Imports.razor
文件中@using BootstrapBlazor.Components
...
Program.cs
文件中在 builder.Services.AddSingleton
后加入
builder.Services.AddBootstrapBlazor();
menu.js
文件在 wwwroot
建立 modules
文件夹, 新建 menu.js
文件
import Data from "../_content/BootstrapBlazor/modules/data.js";import EventHandler from "../_content/BootstrapBlazor/modules/event-handler.js";export function init(id) { var el = document.getElementById(id) if (el === null) { return } const navbar = el.querySelector(".navbar-toggler") const menu = el.querySelector(".sidebar-content") const nav = { navbar, menu } Data.set(id, nav) EventHandler.on(navbar, "click", () => { menu.classList.toggle("show") }) EventHandler.on(menu, "click", ".nav-link", e => { const link = e.delegateTarget const url = link.getAttribute("href"); if (url !== "#") { menu.classList.remove("show") } })}export function dispose(id) { const nav = Data.get(id) if (nav) { EventHandler.off(nav.navbar, "click"); EventHandler.off(nav.menu, "click", ".nav-link"); }}
Shared\NavMenu.razor
文件@inherits BootstrapModuleComponentBase@attribute [JSModuleAutoLoader("./modules/menu.js", Relative = false)]
Shared\NavMenu.razor.cs
文件using BootstrapBlazor.Components;using Microsoft.AspNetCore.Components.Routing;namespace b18QuickStartv757.Shared;public partial class NavMenu{ private IEnumerable
Shared\MainLayout.razor
文件@inherits LayoutComponentBase@using System.Reflection
Shared\MainLayout.razor.css
文件.layout-main .main { background: rgba(16, 142, 233, 1); color: #fff; min-height: 120px; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; flex-flow: column;}.main { flex: 1;}.sidebar .navbar-brand { font-size: 1.1rem;}.sidebar .nav-item { font-size: 0.875rem; padding-left: 6px;} .sidebar .nav-item a { color: #444; border-radius: var(--bs-border-radius); display: flex; align-items: center; padding: .25rem 1.5rem; font-weight: 400; }.sidebar .navbar { --bb-bg-navbar: #8548ff; background-color: var(--bb-bg-navbar);}.sidebar .sidebar-title { display: none;}.sidebar-text { font-weight: 700;}.menu .nav-link.nav-table { color: var(--bs-info); font-weight: bold;} .menu .nav-link.nav-table:hover { color: unset; }@media (max-width: 767.98px) { .main .top-row:not(.auth) { display: none; } .main .top-row.auth { justify-content: space-between; } .main .top-row a, .main .top-row .btn-link { margin-left: 0; }}@media (min-width: 768px) { .section { flex-direction: row; display: flex; } .sidebar { width: var(--bs-sidebar-width); height: calc(100vh); position: sticky; top: 0; border-right: solid 1px #c0c4cc; background-color: #f0f0f0; display: flex; flex-direction: column; margin-top: calc(var(--bs-header-height)*-1); } .sidebar .sidebar-content { height: calc(100vh - var(--bs-header-height)); } .sidebar .sidebar-content.collapse { display: flex; flex-direction: column; } .sidebar .sidebar-title { height: 50px; display: flex; align-items: center; padding: 1rem; border-bottom: solid 1px #c0c4cc; } .sidebar .scroll { overflow-x: hidden; max-height: calc(100% - 36px); padding: 5px 0; } .sidebar .scroll .menu { width: var(--bs-sidebar-width); }}
Index.razor
在@page下一行添加 attribute@attribute [TabItemOption(Text = "Index")]
关键词:
Copyright@ 2015-2022 大众包装网版权所有 备案号: 豫ICP备20014643号-14 联系邮箱:295 911 578@qq.com