UNPKG

nly-adminlte-vue

Version:
717 lines (619 loc) 23.2 kB
# Navbar > 导航栏, 是导航的响应式基础组件, 可以根据屏幕尺寸可收缩堆叠展开, `nly-navbar` 可以嵌套 `nly-nav` 和其他元素的容器. ```html <div> <nly-navbar expand="lg" dark variant="info"> <nly-navbar-brand> <nly-navbar-brandimg src="http://nly-adminlte-vue-demo.nejinn.com/img/NLYLOGO.b43761e2.png" elevation circle /> <nly-navbar-brandtext> NlyAdminlteVue </nly-navbar-brandtext> </nly-navbar-brand> <nly-navbar-toggle target="nav-collapse"></nly-navbar-toggle> <nly-collapse id="nav-collapse" is-nav> <nly-navbar-nav> <nly-nav-item href="#">Link</nly-nav-item> <nly-nav-item href="#" disabled>Disabled</nly-nav-item> </nly-navbar-nav> <!-- Right aligned nav items --> <nly-navbar-nav class="ml-auto"> <nly-nav-form> <nly-form-input size="sm" class="mr-sm-2" placeholder="Search" ></nly-form-input> <nly-button size="sm" class="my-2 my-sm-0" type="submit" variant="danger" >Search</nly-button > </nly-nav-form> <nly-nav-dropdown text="Lang" menu-direction="right" dropdown-toggle> <nly-dropdown-item href="#">EN</nly-dropdown-item> <nly-dropdown-item href="#">ES</nly-dropdown-item> <nly-dropdown-item href="#">RU</nly-dropdown-item> <nly-dropdown-item href="#">FA</nly-dropdown-item> </nly-nav-dropdown> <nly-nav-dropdown menu-direction="right" dropdown-toggle> <template v-slot:linkcontent> <em>User</em> </template> <template v-slot:menucontent> <nly-dropdown-item href="#">Profile</nly-dropdown-item> <nly-dropdown-item href="#">Sign Out</nly-dropdown-item> </template> </nly-nav-dropdown> </nly-navbar-nav> </nly-collapse> </nly-navbar> </div> <!-- nly-navbar.name --> <!-- nly-navbar.vue --> ``` ```html <nly-navbar variant="lightlight" navbar-class="xxx" expand="md"> <nly-navbar-brand> <nly-navbar-brandimg src="http://nly-adminlte-vue-demo.nejinn.com/img/NLYLOGO.b43761e2.png" elevation circle /> <nly-navbar-brandtext> NlyAdminlteVue </nly-navbar-brandtext> </nly-navbar-brand> <nly-navbar-toggle target="aaa" navbar-class="order-1" /> <nly-collapse is-nav id="aaa" collapse-class="order-3" appear> <nly-navbar-nav class="xxxxx"> <nly-nav-item active class="xxx" :to="{ name: 'collapse' }"> home </nly-nav-item> <nly-nav-item disabled> home </nly-nav-item> <nly-nav-item> home </nly-nav-item> <nly-nav-dropdown id="menudropdon1" :popup="true" :dropdown-toggle="true" menu-class="border-0" size="xl" > <template slot="linkcontent"> NlyAdminlteVue <i class="fas fa-comments"></i> </template> <template slot="menucontent"> <nly-nav-item dropdown-item to="/"> 我是nav-item </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="/"> 我是nav-item=false </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="nav"> dropdown-item </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="/" disabled> 我是disabled </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="nav" append> 我是append </nly-nav-item> <nly-nav-dropdown id="menudropdon2" hover :nav-item="false" submenu :nav-link="false" dropdown-item dropdown-toggle size="lg" direction="none" > <template slot="linkcontent"> 我是悬浮菜单 <i class="fas fa-comments"></i> </template> <template slot="menucontent"> <nly-nav-item :nav-item="false" dropdown-item :to="{ name: 'button' }" > 我是nav-item="false" </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item> dropdown-item </nly-nav-item> <nly-nav-dropdown :nav-item="false" submenu :nav-link="false" dropdown-item dropdown-toggle direction="none" id="menudropdon3" > <template slot="linkcontent"> 我是三级 <i class="fas fa-comments"></i> </template> <template slot="menucontent"> <nly-nav-item :nav-item="false" dropdown-item :to="{ name: 'button' }" > 我是nav-item="false" </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item> dropdown-item </nly-nav-item> </template> </nly-nav-dropdown> </template> </nly-nav-dropdown> </template> </nly-nav-dropdown> <nly-nav-dropdown :popup="true" :dropdown-toggle="true" menu-class="border-0" size="xl" hover > <template slot="linkcontent"> 我是悬浮菜单 </template> <template slot="menucontent"> <nly-nav-item :nav-item="false" dropdown-item to="/"> 我是nav-item="false" </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="nav"> dropdown-item </nly-nav-item> </template> </nly-nav-dropdown> </nly-navbar-nav> </nly-collapse> <nly-navbar-nav class="order-1 order-md-3 navbar-no-expand ml-auto"> <nly-nav-dropdown :popup="true" menu-class="border-0" size="lg" menu-direction="right" > <template slot="linkcontent"> <i class="fas fa-comments"></i> </template> <template slot="menucontent"> <nly-nav-item :nav-item="false" dropdown-item to="/"> 我是nav-item="false" </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="nav"> dropdown-item </nly-nav-item> </template> </nly-nav-dropdown> <nly-nav-dropdown :popup="true" menu-class="border-0" size="lg" menu-direction="right" > <template slot="linkcontent"> <i class="far fa-bell"></i> </template> <template slot="menucontent"> <nly-nav-item :nav-item="false" dropdown-item to="/"> 我是nav-item="false" </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="nav"> dropdown-item </nly-nav-item> </template> </nly-nav-dropdown> <nly-nav-item> <i class="fas fa-th-large"></i> </nly-nav-item> </nly-navbar-nav> </nly-navbar> <!-- nly-navbar.name --> <!-- nly-navbar.vue --> ``` ## `variant` 主题颜色 `nly-navbar` 可以设置 prop `variant` 来控制导航颜色. 可选 primary, secondary, success, info, warning, danger, light, dark, lightblue, navy, olive, lime, fuchsia, maroon, blue, indigo, purple, pink, red, orange, yellow, green, teal, cyan, white, gray, graydark 同时可以设置 prop `dark` 来控制文本颜色 ```html <template> <nly-row> <nly-col> <nly-navbar :variant="variant" navbar-class="xxx" expand="lg" :dark="dark" > <nly-navbar-brand> <nly-navbar-brandimg src="http://nly-adminlte-vue-demo.nejinn.com/img/NLYLOGO.b43761e2.png" elevation circle /> <nly-navbar-brandtext> NlyAdminlteVue </nly-navbar-brandtext> </nly-navbar-brand> <nly-navbar-toggle target="aaa" navbar-class="order-1" /> <nly-collapse is-nav id="aaa" collapse-class="order-3" appear> <nly-navbar-nav class="xxxxx"> <nly-nav-item active class="xxx" :to="{ name: 'collapse' }"> home </nly-nav-item> <nly-nav-item disabled> home </nly-nav-item> <nly-nav-item> home </nly-nav-item> <nly-nav-dropdown id="menudropdon1" :popup="true" :dropdown-toggle="true" menu-class="border-0" size="xl" > <template slot="linkcontent"> NlyAdminlteVue <i class="fas fa-comments"></i> </template> <template slot="menucontent"> <nly-nav-item :nav-item="false" dropdown-item to="/"> 我是nav-item="false" </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="nav"> dropdown-item </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="/" disabled> 我是disabled </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="nav" append> 我是append </nly-nav-item> <nly-nav-dropdown id="menudropdon2" hover :nav-item="false" submenu :nav-link="false" dropdown-item dropdown-toggle size="lg" direction="none" > <template slot="linkcontent"> 我是悬浮菜单 <i class="fas fa-comments"></i> </template> <template slot="menucontent"> <nly-nav-item :nav-item="false" dropdown-item :to="{ name: 'button' }" > 我是nav-item="false" </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item> dropdown-item </nly-nav-item> <nly-nav-dropdown :nav-item="false" submenu :nav-link="false" dropdown-item dropdown-toggle direction="none" id="menudropdon3" > <template slot="linkcontent"> 我是三级 <i class="fas fa-comments"></i> </template> <template slot="menucontent"> <nly-nav-item :nav-item="false" dropdown-item :to="{ name: 'button' }" > 我是nav-item="false" </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item> dropdown-item </nly-nav-item> </template> </nly-nav-dropdown> </template> </nly-nav-dropdown> </template> </nly-nav-dropdown> <nly-nav-dropdown :popup="true" :dropdown-toggle="true" menu-class="border-0" size="xl" hover > <template slot="linkcontent"> 我是悬浮菜单 </template> <template slot="menucontent"> <nly-nav-item :nav-item="false" dropdown-item to="/"> 我是nav-item="false" </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="nav"> dropdown-item </nly-nav-item> </template> </nly-nav-dropdown> </nly-navbar-nav> </nly-collapse> <nly-navbar-nav class="order-1 order-md-3 navbar-no-expand ml-auto"> <nly-nav-dropdown :popup="true" menu-class="border-0" size="lg" menu-direction="right" > <template slot="linkcontent"> <i class="fas fa-comments"></i> </template> <template slot="menucontent"> <nly-nav-item :nav-item="false" dropdown-item to="/"> 我是nav-item="false" </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="nav"> dropdown-item </nly-nav-item> </template> </nly-nav-dropdown> <nly-nav-dropdown :popup="true" menu-class="border-0" size="lg" menu-direction="right" > <template slot="linkcontent"> <i class="far fa-bell"></i> </template> <template slot="menucontent"> <nly-nav-item :nav-item="false" dropdown-item to="/"> 我是nav-item="false" </nly-nav-item> <nly-nav-item :nav-item="false" dropdown-item to="nav"> dropdown-item </nly-nav-item> </template> </nly-nav-dropdown> <nly-nav-item> <i class="fas fa-th-large"></i> </nly-nav-item> </nly-navbar-nav> </nly-navbar> </nly-col> </nly-row> <nly-row> <nly-col> <label for="color">颜色</label> <select id="color" v-model="variant"> <option v-for="(item, index) in variantOpitons" :key="index" :value="index" > {{ index }} </option> </select> </nly-col> <nly-col> <nly-switch offVariant="dark" onVariant="white" v-model="dark" /> </nly-col> </nly-row> </template> <script> export default { data() { return { variant: "lightlight", dark: false, variantOpitons: { orange: "navbar-light navbar-orange", warning: "navbar-light navbar-warning", lightlight: "navbar-light", graygray: "navbar-dark navbar-gray", graydark: "navbar-dark navbar-gray-dark", darkdark: "navbar-dark", cyan: "navbar-dark navbar-cyan", teal: "navbar-dark navbar-teal", lightblue: "navbar-dark navbar-lightblue", navy: "navbar-dark navbar-navy", pink: "navbar-dark navbar-pink", purple: "navbar-dark navbar-purple", indigo: "navbar-dark navbar-indigo", danger: "navbar-dark navbar-danger", success: "navbar-dark navbar-success", info: "navbar-dark navbar-info", secondary: "navbar-dark navbar-secondary", primary: "navbar-dark navbar-primary", white: "navbar-light navbar-white" } }; } }; </script> <!-- 主题颜色.name --> <!-- nly-navbar.vue --> ``` ## 位置 `nly-navbar` 可以设置以下 2 个 prop 来调整位置 | prop | type | default | description | | -------- | ------- | ------- | ----------------------------------------------------------------------------------------------------------------- | | `fixed` | String | `null` | 让 navbar 位置固定. 可选,`top`, `bottom`. 选择 `top` 会把 navbar 固定在顶部, 选择 `bottom` 会把 navbar 固定在底部 | | `sticky` | Boolean | `false` | 设置 `sticky` 会让 navbar 悬浮在浏览器顶部 | **注意** - `fixed` 使用 CSS `position: fixed`, 您可能需要调整顶部距离或者底部距离 - 并不是所有浏览器都支持 `sticky` ## 内置组件 `nly-navbar` 内置了几个组件 - `nly-navbar-brand` - `nly-navbar-brandimg` - `nly-navbar-brandtext` - `nly-navbar-toggle` 与 `nly-collapse is-nav` 组件一起使用 - `nly-collapse is-nav` 会根据 `nly-navbar` 的 prop `expand` 在断点上隐藏和展示被其包裹的元素 - `nly-navbar-nav` - `nly-nav-item` 用于链接和路由链接)操作项 - `nly-nav-dropdown` 下拉菜单 - `nly-nav-text` 文本字符串。 -- `nly-nav-form` 表单控件。 ### `nly-navbar-brand` 设置 prop `href` `nly-navbar-brand` 会渲染成一个普通的 url 跳转。 设置 prop `to` 会渲染成 `router-link` 跳转 ```html <nly-navbar expand="lg" dark variant="info"> <nly-navbar-brand> <nly-navbar-brandimg src="http://nly-adminlte-vue-demo.nejinn.com/img/NLYLOGO.b43761e2.png" elevation circle /> <nly-navbar-brandtext> NlyAdminlteVue </nly-navbar-brandtext> </nly-navbar-brand> </nly-navbar> <!-- nly-navbar-brand.name --> <!-- nly-navbar.vue --> ``` ### `nly-navbar-nav` 整个导航的路由跳转都嵌套在 `nly-navbar-nav` 中,如果需要实现响应式收起和展开,需要使用 `nly-collapse is-nav` 和 `nly-nav-toggle` 配合。 `nly-navbar-nav` 会适应子组件的宽度和大小,使得子组件和元素能够正确布局 `<nly-collapse is-nav id='demo'>` 和 `<nly-nav-toggle target='demo>` 配合使用需要 `nly-nav-toggle` 设置 prop `target` 且值为对应的 `nly-collapse` 的 id。注意 `nly-collapse` 需要设置 prop `is-nav` `nly-navbar-nav` 内置以下组件: - `nly-navbar-nav` - `nly-nav-item` 用于链接和路由链接)操作项 - `nly-nav-dropdown` 下拉菜单 - `nly-nav-text` 文本字符串。 -- `nly-nav-form` 表单控件。 ### `nly-navbar-item` `nly-navbar-item` 接受大部分 `nly-link` 的 prop `nly-navbar-item` 是导航栏的路由跳转元素。 设置 prop `to` 将会渲染成 `router-link`, 设置 prop `href` 渲染成普通链接。 可以设置 `active` 来激活当前元素 设置 `disabled` 来禁用当前元素 设置 `exact` 和 `exact-active-class` 来匹配当前路由实现对应的 css 类。 当前地址栏的 url 为 `/demo`, 如果当前 `nly-navbar-item` 设置了 `href` 或者 `to` 跳转指向 `、demo`, 则会自动激活 `exact-active-class` css 类 `nly-navbar-item` 可以绑定 `@click` 等事件来实现 对应函数 ### `nly-navbar-text` ```html <div> <nly-navbar expand="sm" variant="light"> <nly-navbar-toggle target="nav-text-collapse"></nly-navbar-toggle> <nly-navbar-brand> <nly-navbar-brandimg src="http://nly-adminlte-vue-demo.nejinn.com/img/NLYLOGO.b43761e2.png" elevation circle /> <nly-navbar-brandtext> NlyAdminlteVue </nly-navbar-brandtext> </nly-navbar-brand> <nly-collapse id="nav-text-collapse" is-nav> <nly-navbar-nav> <nly-nav-text>Navbar text</nly-nav-text> </nly-navbar-nav> </nly-collapse> </nly-navbar> </div> <!-- nly-navbar-text.name --> <!-- nly-navbar.vue --> ``` ### `nly-nav-dropdown` `nly-nav-dropdown` 的使用方法可以查看 <a href="/docs/components/nav"> nly-nav </a> ```html <div> <nly-navbar expand="lg" dark variant="info"> <nly-navbar-nav> <nly-nav-item href="#">Link</nly-nav-item> <nly-nav-item href="#" disabled>Disabled</nly-nav-item> <nly-nav-dropdown text="Lang" menu-direction="right" dropdown-toggle> <nly-dropdown-item href="#">EN</nly-dropdown-item> <nly-dropdown-item href="#">ES</nly-dropdown-item> <nly-dropdown-item href="#">RU</nly-dropdown-item> <nly-dropdown-item href="#">FA</nly-dropdown-item> </nly-nav-dropdown> <nly-nav-dropdown menu-direction="right" dropdown-toggle> <template v-slot:linkcontent> <em>User</em> </template> <template v-slot:menucontent> <nly-dropdown-item href="#">Profile</nly-dropdown-item> <nly-dropdown-item href="#">Sign Out</nly-dropdown-item> </template> </nly-nav-dropdown> </nly-navbar-nav> </nly-navbar> </div> <!-- nly-nav-dropdown.name --> <!-- nly-navbar.vue --> ``` ### `nly-navbar-form` ```html <div> <nly-navbar variant="light"> <nly-nav-form> <nly-form-input class="mr-sm-2" placeholder="Search"></nly-form-input> <nly-button variant="outlineSuccess" class="my-2 my-sm-0" type="submit" >Search</nly-button > </nly-nav-form> </nly-navbar> </div> <!-- nly-nav-dropdown.name --> <!-- nly-navbar.vue --> ``` ### `nly-navbar-toggle` 和 `nly-collapse is-nav` 导航栏在默认情况下并不是响应的,我们可以使用 `nly-navbar-toggle` 和 `nly-collapse is-nav` 使得导航栏变成响应的 `<nly-collapse is-nav id='demo'>` 和 `<nly-nav-toggle target='demo>` 配合使用需要 `nly-nav-toggle` 设置 prop `target` 且值为对应的 `nly-collapse` 的 id。 注意 `nly-collapse` 需要设置 prop `is-nav` 将 `nly-navbar` 的 prop expand 设置为 `xl`, `lg`, `md`, `sm`, `no` 可以在对应的断点上自动收起, 设置为 `no` 则会一直保持水平布局而不是响应式 ```html <template> <nly-navbar expand="no" variant="dark"> <nly-navbar-brand href="#">NavBar</nly-navbar-brand> <nly-navbar-toggle target="navbar-toggle-collapse"> <template v-slot:default="{ expanded }"> <nly-icon v-if="expanded" icon="nlyfont nly-icon-arrow-bottom" ></nly-icon> <nly-icon v-else icon="nlyfont nly-icon-arrow-top"></nly-icon> </template> </nly-navbar-toggle> <nly-collapse id="navbar-toggle-collapse" is-nav> <nly-navbar-nav class="ml-auto"> <nly-nav-item href="#">Link 1</nly-nav-item> <nly-nav-item href="#">Link 2</nly-nav-item> <nly-nav-item href="#" disabled>Disabled</nly-nav-item> </nly-navbar-nav> </nly-collapse> </nly-navbar> </template> <!-- nly-nav-dropdown.name --> <!-- nly-navbar.vue --> ```