一、下載adminlte
官網:https://almsaeedstudio.com/
github:https://github.com/almasaeed2010/AdminLTE/
二、引用的基本解說
1、meta沒的說
2、引入bootstrap
3、引入字體庫,肯定用得到,下載到本地放在plugins下也可以
4、adminLTE子什么的文件肯定需要
5、皮膚skin,可以引入_all...,但是如果只需要一個皮膚的話,比如只需要藍色,直接引入skin-blue就行,畢竟越簡越好
6、兼容IE8的兩個js文件
7、jquery沒的說
8、fastclick,觸摸設備快速點擊體驗,不想兼容手機可以去掉
9、slimscroll,菜單和頁面中的滾動條樣式,放上去畢竟好看嘛。(看一下不加的效果,不好看吧)
下面是引用的原代碼,可是用starter.htm中查看,對應上面的進行查看
<head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>AdminLTE 2 | Starter</title> <!-- Tell the browser to be responsive to screen width --> <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> <!-- Bootstrap 3.3.6 --> <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"> <!-- Font Awesome --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"> <!-- Ionicons --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css"> <!-- Theme style --> <link rel="stylesheet" href="dist/css/AdminLTE.min.css"> <!-- AdminLTE Skins. We have chosen the skin-blue for this starter page. However, you can choose any other skin. Make sure you apply the skin class to the body tag so the changes take effect. --> <link rel="stylesheet" href="dist/css/skins/skin-blue.min.css"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head>
二。adminlte文件夾說明
dminLTE是基於bootstrap3的前端框架,並且將bootstrap3進行修改來適應自身的樣式。
adminLTE除了可以使用bootstrap3的大多數樣式之外,自身也提供了一些非常實用的樣式包裝,並且在樣式演示中已經基本羅列出來了。
adminLTE的js是基於jquery2。
adminLTE的插件中使用的基本都是bootstrap和jquery的插件。
想開始使用adminLTE樣式,只需要在項目演示中按F12打開調試窗口,使用箭頭選中控件,復制粘貼即可,如圖
adminLTE提供了基礎模板頁面starter.html,再此基礎上做開發會快速很多:
一、body樣式:
1、類hold-transition是對IE的transition做了一些修復,在body引用即可,沒什么深層含義
2、皮膚的樣式
側邊欄默認是暗色。
skin-blue中的 blue 藍 修改的是標題的顏色,
只有指定第二個顏色的時候才會改變側邊欄顏色,
如skin-blue-light中第二個顏色表示側邊欄為亮色。
adminLTE提供的默認皮膚顏色有:
藍 skin-blue skin-blue-light
黃 skin-yellow skin-yellow-light
綠 skin-green skin-green-light
紫 skin-purple skin-purple-light
紅skin-red skin-red-light
字體黑,皮膚白 skin-black skin-black-light
、布局
默認側邊欄隱藏,標題不移動
<body class="hold-transition skin-blue">
Fixed 只是為了固定導航欄
layout-boxed 只是將頁面包含在一個固定盒子中,max-width最大寬度: 1250px;
當fixed布局和layout-boxed布局一起使用時,layout-boxed樣式不會生效,只有fixed布局會生效
sidebar-collapse 讓側邊欄默認是隱藏狀態
layout-top-nav 將導航欄設置為單純的導航菜單,不使用側邊欄
sidebar-mini 讓側邊欄和左側導航一起折疊,並且最小化是小圖標。
sidebar-mini一般和Fixed layout-boxed sidebar-collapse 一起配合使用,因為layout-top-nav布局的目的就是不要側邊欄
<body class="hold-transition skin-blue sidebar-mini">
二、body構造
<div class="wrapper"> <!-- 頂部導航欄 --> <header class="main-header"> </header> <!-- 左側菜單欄 --> <aside class="main-sidebar"> </aside> <!-- 中間內容 --> <div class="content-wrapper"> </div> <!-- 底部標注 --> <footer class="main-footer"> </footer> <!-- 右側菜單欄 --> <aside class="control-sidebar control-sidebar-dark"> </aside> <!-- 右側菜單欄的樣式,底部距離為0等 --> <div class="control-sidebar-bg"></div> </div>
四。在MVC5項目中加入adminlte
1.我將adminlte全部復制進 Content文件夾下
2.在MVC5項目中將adminlte文件夾及文件包含進項目。
六.bundles相關的JS和CSS
1.我將引用二個遠程CSS下載下來到本地的CSS夾中,我是放在bootstrap/css/下面的,結果這個方法是錯誤的,他的遠程的二個主要是字體圖標的引用,必須遠程,否得你得更改內容或是下下來。
<!-- Font Awesome --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"> <!-- Ionicons --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
對應看看index.htm和starter的源碼。對比看看引用,這index比satrt是多太多了。
所我做成了二個bundles.
bundles.Add(new StyleBundle("~/Content/adminlte/bootstrap/css").Include( "~/Content/adminlte/bootstrap/css/bootstrap.min.css", "~/Content/adminlte/plugins/jvectormap/jquery-jvectormap-1.2.2.css", "~/Content/adminlte/dist/css/AdminLTE.min.css", "~/Content/adminlte/dist/css/skins/skin-blue.min.css")); bundles.Add(new ScriptBundle("~/bundles/adminlte").Include( "~/Content/adminlte/plugins/jQuery/jquery-2.2.3.min.js", "~/Content/adminlte/bootstrap/js/bootstrap.min.js", "~/Content/adminlte/dist/js/app.min.js")); bundles.Add(new ScriptBundle("~/bundles/adminlte/js").Include( "~/Content/adminlte/dist/js/raphael-min.js", "~/Content/adminlte/plugins/morris/morris.min.js", "~/Content/adminlte/plugins/sparkline/jquery.sparkline.min.js", "~/Content/adminlte/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js", "~/Content/adminlte/plugins/jvectormap/jquery-jvectormap-world-mill-en.js", "~/Content/adminlte/plugins/knob/jquery.knob.js", "~/Content/adminlte/dist/js/moment.min.js", "~/Content/adminlte/plugins/daterangepicker/daterangepicker.js", "~/Content/adminlte/plugins/datepicker/bootstrap-datepicker.js", "~/Content/adminlte/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js", "~/Content/adminlte/plugins/slimScroll/jquery.slimscroll.min.js", "~/Content/adminlte/plugins/fastclick/fastclick.js", "~/Content/adminlte/dist/js/pages/dashboard.js", "~/Content/adminlte/dist/js/demo.js")); bundles.Add(new StyleBundle("~/Content/adminlte/css").Include( "~/Content/adminlte/plugins/iCheck/flat/blue.css", "~/Content/adminlte/plugins/morris/morris.css", "~/Content/adminlte/plugins/jvectormap/jquery-jvectormap-1.2.2.css", "~/Content/adminlte/plugins/datepicker/datepicker3.css", "~/Content/adminlte/plugins/daterangepicker/daterangepicker.css", "~/Content/adminlte/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css"));
這樣做的目的是:可以分別引用JS和CSS.
現在我們新建一個布局頁,取名為_AdminLayout
注意,我布局而中,引用了1個分布局,一個是菜單,同時在中間引入了內容標簽
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>@ViewBag.Title </title> @Styles.Render("~/Content/adminlte/bootstrap/css") @Styles.Render("~/Content/adminlte/css") <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"> <!-- Ionicons --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body class="hold-transition skin-blue layout-boxed sidebar-mini"> <!-- Site wrapper --> <div class="wrapper"> <!-- 頂部導航欄 --> <header class="main-header"> <!-- Logo --> <a href="#" class="logo"> <!-- mini logo for sidebar mini 50x50 pixels --> <span class="logo-mini"><b>M</b>Oa</span> <!-- logo for regular state and mobile devices --> <span class="logo-lg"><b>Mydhh</b>Oa</span> </a> <!-- Header Navbar --> <nav class="navbar navbar-static-top" role="navigation"> <!-- Sidebar toggle button--> <a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button"> <span class="sr-only">Toggle navigation</span> </a> <!-- Navbar Right Menu --> <div class="navbar-custom-menu"> <ul class="nav navbar-nav"> <!-- Messages: style can be found in dropdown.less 就是郵件圖標那個--> <li class="dropdown messages-menu"> <!-- Menu toggle button --> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-envelope-o"></i> <span class="label label-success">4</span> </a> <ul class="dropdown-menu"> <li class="header">You have 4 messages</li> <li> <!-- inner menu: contains the messages --> <ul class="menu"> <li> <!-- start message --> <a href="#"> <div class="pull-left"> <!-- User Image --> <img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image"> </div> <!-- Message title and timestamp --> <h4> Support Team <small><i class="fa fa-clock-o"></i> 5 mins</small> </h4> <!-- The message --> <p>Why not buy a new awesome theme?</p> </a> </li> <!-- end message --> </ul> <!-- /.menu --> </li> <li class="footer"><a href="#">See All Messages</a></li> </ul> </li> <!-- /.messages-menu --> <!-- Notifications Menu --> <li class="dropdown notifications-menu"> <!-- Menu toggle button --> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-bell-o"></i> <span class="label label-warning">10</span> </a> <ul class="dropdown-menu"> <li class="header">You have 10 notifications</li> <li> <!-- Inner Menu: contains the notifications 喇叭圖標那個--> <ul class="menu"> <li> <!-- start notification --> <a href="#"> <i class="fa fa-users text-aqua"></i> 5 new members joined today </a> </li> <!-- end notification --> </ul> </li> <li class="footer"><a href="#">View all</a></li> </ul> </li> <!-- end-Notifications Menu --> <!-- Tasks Menu 旗子任務圖標 --> <li class="dropdown tasks-menu"> <!-- Menu Toggle Button --> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-flag-o"></i> <span class="label label-danger">9</span> </a> <ul class="dropdown-menu"> <li class="header">You have 9 tasks</li> <li> <!-- Inner menu: contains the tasks --> <ul class="menu"> <li> <!-- Task item --> <a href="#"> <!-- Task title and progress text --> <h3> Design some buttons <small class="pull-right">20%</small> </h3> <!-- The progress bar --> <div class="progress xs"> <!-- Change the css width attribute to simulate progress --> <div class="progress-bar progress-bar-aqua" style="width: 20%" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100"> <span class="sr-only">20% Complete</span> </div> </div> </a> </li> <!-- end task item --> </ul> </li> <li class="footer"> <a href="#">View all tasks</a> </li> </ul> </li> <!-- end task item --> <!-- User Account Menu --> <li class="dropdown user user-menu"> <!-- Menu Toggle Button --> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> <!-- The user image in the navbar--> <img src="dist/img/user2-160x160.jpg" class="user-image" alt="User Image"> <!-- hidden-xs hides the username on small devices so only the image appears. --> <span class="hidden-xs">Alexander Pierce</span> </a> <ul class="dropdown-menu"> <!-- The user image in the menu --> <li class="user-header"> <img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image"> <p> Alexander Pierce - Web Developer <small>Member since Nov. 2012</small> </p> </li> <!-- Menu Body --> <li class="user-body"> <div class="row"> <div class="col-xs-4 text-center"> <a href="#">Followers</a> </div> <div class="col-xs-4 text-center"> <a href="#">Sales</a> </div> <div class="col-xs-4 text-center"> <a href="#">Friends</a> </div> </div> <!-- /.row --> </li> <!-- Menu Footer--> <li class="user-footer"> <div class="pull-left"> <a href="#" class="btn btn-default btn-flat">Profile</a> </div> <div class="pull-right"> <a href="#" class="btn btn-default btn-flat">Sign out</a> </div> </li> </ul> </li> <!--end User Account Menu --> <!-- Control Sidebar Toggle Button 右側菜單--> <li> <a href="#" data-toggle="control-sidebar"><i class="fa fa-gears"></i></a> </li> </ul> </div> <!-- /div wrapper --> </nav> </header> <!-- end header 頭部結束 --> <!-- 大側菜單布局 Left side column. contains the logo and sidebar --> <aside class="main-sidebar"> @Html.Partial("Menu") </aside> <!-- /.sidebar --> <!--中間內容 Content Wrapper. Contains page content --> <div class="content-wrapper"> @RenderBody() </div> <!--end 中間內容 Content Wrapper. Contains page content --> <!-- Main Footer --> <footer class="main-footer"> <!-- To the right --> <div class="pull-right hidden-xs"> Anything you want </div> <!-- Default to the left --> <strong>Copyright © 2016 <a href="#">Company</a>.</strong> All rights reserved. </footer> <!-- end Footer --> <!-- Control Sidebar --> <aside class="control-sidebar control-sidebar-dark"> <!-- Create the tabs --> <ul class="nav nav-tabs nav-justified control-sidebar-tabs"> <li class="active"><a href="#control-sidebar-home-tab" data-toggle="tab"><i class="fa fa-home"></i></a></li> <li><a href="#control-sidebar-settings-tab" data-toggle="tab"><i class="fa fa-gears"></i></a></li> </ul> <!-- Tab panes --> <div class="tab-content"> <!-- Home tab content --> <div class="tab-pane active" id="control-sidebar-home-tab"> <h3 class="control-sidebar-heading">Recent Activity</h3> <ul class="control-sidebar-menu"> <li> <a href="javascript:;"> <i class="menu-icon fa fa-birthday-cake bg-red"></i> <div class="menu-info"> <h4 class="control-sidebar-subheading">Langdon's Birthday</h4> <p>Will be 23 on April 24th</p> </div> </a> </li> </ul> <!-- /.control-sidebar-menu --> <h3 class="control-sidebar-heading">Tasks Progress</h3> <ul class="control-sidebar-menu"> <li> <a href="javascript:;"> <h4 class="control-sidebar-subheading"> Custom Template Design <span class="pull-right-container"> <span class="label label-danger pull-right">70%</span> </span> </h4> <div class="progress progress-xxs"> <div class="progress-bar progress-bar-danger" style="width: 70%"></div> </div> </a> </li> </ul> <!-- /.control-sidebar-menu --> </div> <!-- end 右側菜單/.control-sidebar-menu --> <!-- /.tab-pane --> <!-- Stats tab content --> <div class="tab-pane" id="control-sidebar-stats-tab">Stats Tab Content</div> <!-- /.tab-pane --> <!-- Settings tab content --> <div class="tab-pane" id="control-sidebar-settings-tab"> <form method="post"> <h3 class="control-sidebar-heading">General Settings</h3> <div class="form-group"> <label class="control-sidebar-subheading"> Report panel usage <input type="checkbox" class="pull-right" checked> </label> <p> Some information about this general settings option </p> </div> <!-- /.form-group --> </form> </div> <!-- /.tab-pane --> </div> </aside> <!-- end 右側菜單 /.control-sidebar --> <!-- Add the sidebar's background. This div must be placed immediately after the control sidebar --> <div class="control-sidebar-bg"></div> </div> @Scripts.Render("~/bundles/adminlte") @Scripts.Render("~/bundles/adminlte/js") @RenderSection("scripts", required: false) <script src="~/Scripts/jquery.validate.js"></script> <script src="~/Scripts/jquery.validate.unobtrusive.js"></script> </body> </html>
然后菜單頁的布局為:
<!-- sidebar: style can be found in sidebar.less --> <section class="sidebar"> <!-- Sidebar user panel (optional) --> <div class="user-panel"> <div class="pull-left image"> <img src="dist/img/user2-160x160.jpg" class="img-circle" alt="User Image"> </div> <div class="pull-left info"> <p>Alexander Pierce</p> <!-- Status --> <a href="#"><i class="fa fa-circle text-success"></i> Online</a> </div> </div> <!-- search form (Optional) --> <form action="#" method="get" class="sidebar-form"> <div class="input-group"> <input type="text" name="q" class="form-control" placeholder="Search..."> <span class="input-group-btn"> <button type="submit" name="search" id="search-btn" class="btn btn-flat"> <i class="fa fa-search"></i> </button> </span> </div> </form> <!-- /.search form --> <!-- Sidebar Menu --> <ul class="sidebar-menu"> <li class="header">HEADER</li> <!-- Optionally, you can add icons to the links --> <li class="active"><a href="~/User/Admin"><i class="fa fa-link"></i> <span>Link</span></a></li> <li><a href="~/User/List"><i class="fa fa-link"></i> <span>Another Link</span></a></li> <li class="treeview"> <a href="#"> <i class="fa fa-link"></i> <span>Multilevel</span> <span class="pull-right-container"> <i class="fa fa-angle-left pull-right"></i> </span> </a> <ul class="treeview-menu"> <li><a href="#">Link in level 2</a></li> <li><a href="#">Link in level 2</a></li> </ul> </li> </ul> <!-- /.sidebar-menu --> </section>
然后我選了一個用戶列表作為測試,我在中間加入了布局使用admin布局。
@model IEnumerable<jsdhh2.Models.User> @{ ViewBag.Title = "List"; Layout = "~/Views/Shared/_AdminLayout.cshtml"; } <!-- Content Header (Page header) --> <section class="content-header"> <h1> 用戶管理 <small>針對所有的用戶清單進行操作</small> </h1> <ol class="breadcrumb"> <li><a href="#"><i class="fa fa-dashboard"></i> Level</a></li> <li class="active">Here</li> </ol> </section> <!--end Content Header (Page header) --> <!-- Main content --> <section class="content"> <div class="ibox float-e-margins"> <div class="ibox-content"> <div class="form-group"> <a class="btn btn-primary" href="/User/Add">添加</a> <button id="btnEdit" type="button" class="btn btn-info " onclick="editModel()"><i class="fa fa-pencil"></i> 編輯</button> <button id="btnDel" type="button" class="btn btn-danger " onclick="delData()"> <i class="fa fa-remove"></i> <span class="bold">刪除</span> </button> <button id="btnSetRole" type="button" class="btn btn-info "><i class="fa fa-user"></i> 角色授權</button> <button id="btnResetPwd" class="btn btn-warning"><i class="fa fa-undo"></i> 重置密碼</button> </div> <div class="form-group"> <div class="input-group col-md-4"> <input id="txtSearchKey" type="text" class="input form-control" placeholder="搜索關鍵字" /> <span class="input-group-btn "> <button id="btnSearch" class="btn btn btn-primary" type="button"> <i class="fa fa-search"></i> 搜索</button> </span> </div> </div> <div class="jqGrid_wrapper"> <table id="table_list"></table> <div id="pager_list"></div> </div> </div> </div> <table class="table"> <thead> <tr> <th>用戶名</th> <th>電子郵件</th> <th>生日</th> <th>QQ號碼</th> <th>電話號碼</th><th>創建時間</th> </tr> </thead> <tbody> @foreach (var user in Model) { <tr> <td>@Html.DisplayFor(m => user.UserName)</td> <td>@Html.DisplayFor(m => user.Email)</td> <td>@Html.DisplayFor(m => user.BirthDate, "DateTimeTemplate")</td> <td>@Html.DisplayFor(m => user.QQ)</td> <td>@Html.DisplayFor(m => user.PhoneNumber)</td> <td>@Html.DisplayFor(m => user.CreateTime, "DateTimeTemplate") </td> <td> @Html.ActionLink("詳情", "DetailsList", new { id = user.Id }, new { @class = "btn btn-info" }) @Html.ActionLink("編輯", "Edit", new { id = user.Id },new { @class= "btn btn-success" }) @Html.ActionLink("刪除", "Del", new { id = user.Id }, new { @class = "btn btn-warning" }) @Html.ActionLink("重置", "ResetPassword", new { id = user.Id }, new { @class = "btn btn-warning" }) </td> </tr> } </tbody> </table> <!-- Main content --> </section>
然后測試結果出來,OK了。
在這中間,要注樣意,你寫的視圖的代碼要改一下,按LIst中間這樣,把他加進入。
<!-- Content Wrapper. Contains page content --> <div class="content-wrapper"> <!-- Content Header (Page header) --> <section class="content-header"> <h1> Page Header <small>Optional description</small> </h1> <ol class="breadcrumb"> <li><a href="#"><i class="fa fa-dashboard"></i> Level</a></li> <li class="active">Here</li> </ol> </section> <!-- Main content --> <section class="content"> <!-- Your Page Content Here --> </section> <!-- /.content --> </div>