使用带有 React-bootstrap 的 Nav 组件的手风琴侧边栏菜单

2024-02-12

我开始使用构建我的用户界面react-bootstrap现在我有一个重要的任务是使用标准创建侧栏手风琴菜单bootstrap成分。我发现this http://bootsnipp.com/snippets/featured/accordion-menu使用的示例panel-group and table,但我认为这不是最好的方法,因为nav对于导航组件来说,以自然的方式更好。

我希望我的侧边栏菜单代码看起来像这样(react-bootstrap成分):

<Nav bsStyle="pills" stacked>
    <NavItem title="Item 1">
        <Nav bsStyle="pills" stacked>
            <NavItem title="Sub Item 1">Sub Item 1</NavItem>
            <NavItem title="Sub Item 2">Sub Item 2</NavItem>
            <NavItem title="Sub Item 3">Sub Item 3</NavItem>
        </Nav>
    </NavItem>
    <NavItem title="Item 2">Item 2</NavItem>
    <NavItem title="Item 3">Item 3</NavItem>
</Nav>

任何建议react-bootstrap要不就bootstrap会有用的。


我发现纯粹nav解决方案。所以也许它可以帮助别人。解决方案是使用标准的“react-bootstrap”组件,例如Navbar,结合bootstrapCSS 定制。

示例代码如下:

侧边栏菜单.jsx

import React from 'react';
import styles from './sideBarMenu.css';
import {Nav, NavItem, Navbar, NavDropdown, MenuItem, Glyphicon} from 'react-bootstrap';

export default React.createClass( {

    render: function() {
        return <div id="sidebar-menu" className={styles.sideBarMenuContainer}>
            <Navbar fluid className={styles.sidebar} inverse >

                <Navbar.Header>
                    <Navbar.Brand>
                        <a href="/">User Name</a>
                    </Navbar.Brand>
                    <Navbar.Toggle />
                </Navbar.Header>

                <Navbar.Collapse>
                    <Navbar.Text className={styles.userMenu}>
                        <Navbar.Link href="#"><Glyphicon glyph="home"/></Navbar.Link>
                        <Navbar.Link href="#"><Glyphicon glyph="log-out"/></Navbar.Link>
                    </Navbar.Text>
                    <Nav>
                        <NavDropdown eventKey={1} title="Item 1">
                            <MenuItem eventKey={1.1} href="#">Item 1.1</MenuItem>
                        </NavDropdown>
                        <NavItem eventKey={2}>Item 2</NavItem>
                        <NavItem eventKey={3}>Item 3</NavItem>
                    </Nav>
                </Navbar.Collapse>

            </Navbar>
        </div>;
    }
});

sideBarMenu.css

.sideBarMenuContainer {
    position: fixed;
    height: 100%;
}

.userMenu {
    width: 100%;
    text-align: center;
    margin-right: 0px;
    margin-left: 0px;    
    margin-top: 0px;
}

nav.sidebar :global(.navbar-brand) :global(.glyphicon) {
    margin-right: 0px;
}


/*Remove rounded coners*/
nav.sidebar.:global(navbar) {
    border-radius: 0px;
}

nav.sidebar {
    -webkit-transition: margin 200ms ease-out;
    -moz-transition: margin 200ms ease-out;
    -o-transition: margin 200ms ease-out;
    transition: margin 200ms ease-out;
}

/* .....NavBar: Icon only with coloring/layout.....*/

/*small/medium side display*/
@media ( min-width : 768px) {


    /*Center Brand*/
    nav.sidebar.:global(navbar).sidebar>.container :global(.navbar-brand), :global(.navbar)>:global(.container-fluid) :global(.navbar-brand)
        {
        margin-left: 0px;
    }
    /*Center Brand*/
    nav.sidebar :global(.navbar-brand), nav.sidebar :global(.navbar-header) {
        text-align: center;
        width: 100%;
        margin-left: 0px;
    }

    /*Center Icons*/
    nav.sidebar a {
        padding-right: 13px;
    }

    /*adds border top to first nav box */
    nav.sidebar :global(.navbar-nav)>li:first-child {
        border-top: 1px #e5e5e5 solid;
    }

    /*adds border to bottom nav boxes*/
    nav.sidebar :global(.navbar-nav)>li {
        border-bottom: 1px #e5e5e5 solid;
    }

    /* Colors/style dropdown box*/
    nav.sidebar :global(.navbar-nav) :global(.open) :global(.dropdown-menu) {
        position: static;
        float: none;
        width: auto;
        margin-top: 0;
        background-color: transparent;
        border: 0;
        -webkit-box-shadow: none;
        box-shadow: none;
    }

    /*allows nav box to use 100% width*/
    nav.sidebar :global(.navbar-collapse), nav.sidebar :global(.container-fluid) {
        padding: 0 0px 0 0px;
    }

    /*colors dropdown box text */
    :global(.navbar-inverse) :global(.navbar-nav) :global(.open) :global(.dropdown-menu)>li>a {
        color: #777;
    }

    /*gives sidebar width/height*/
    nav.sidebar {
        width: 200px;
        height: 100%;
        margin-left: -160px;
        float: left;
        z-index: 8000;
        margin-bottom: 0px;
    }

    /*give sidebar 100% width;*/
    nav.sidebar li {
        width: 100%;
    }

    /* Move nav to full on mouse over*/
    nav.sidebar:hover {
        margin-left: 0px;
    }
    /*for hiden things when navbar hidden*/
    :global(.forAnimate) {
        opacity: 0;
    }
}

/* .....NavBar: Fully showing nav bar..... */
@media ( min-width : 1330px) {

    /*Show all nav*/
    nav.sidebar {
        margin-left: 0px;
        float: left;
    }
    /*Show hidden items on nav*/
    nav.sidebar :global(.forAnimate) {
        opacity: 1;
    }
}

nav.sidebar :global(.navbar-nav) :global(.open) :global(.dropdown-menu)>li>a:hover, nav.sidebar :global(.navbar-nav) :global(.open) :global(.dropdown-menu)>li>a:focus
    {
    color: #CCC;
    background-color: transparent;
}

nav:hover :global(.forAnimate) {
    opacity: 1;
}

section {
    padding-left: 15px;
}

请注意,我正在使用webpack结合css-loader模块范围,所以:global means bootstrapCSS 类名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用带有 React-bootstrap 的 Nav 组件的手风琴侧边栏菜单 的相关文章

  • 更改网格模板列会破坏布局

    定义时grid template columns在相应的父 div 中这很好 wrapper display grid grid template columns 1fr 1fr 700px 但是如果我只想要两列怎么办 如果我删除其中之一f
  • d3 树 - 有相同孩子的父母

    我一直在将代码从 JIT 转换为 D3 并使用树布局 我已经复制了代码http mbostock github com d3 talk 20111018 tree html http mbostock github com d3 talk
  • JavaScript 中的 ParseFloat 函数

    当我添加两个文本框值时1 001 and 0 001然后我做了一个parseFloat I get 1 0019999999 我要它1 002 你能帮助我吗 JavaScriptNumber http www w3schools com j
  • 在 ASP.NET MVC 中使用 bootstrap 创建模式

    我在 ASP NET MVC 项目上使用 NET Framework 4 5 Bootstrap v3 3 6 我想做的是创建一个模态表单 我尝试了以下方法 在主布局中创建了一个模态容器 div class modal fade style
  • 在选择下拉列表中选择特定选项时添加输入框

    我需要在选择选项时将输入添加到选择选项中 每当用户选择 其他 时 就会出现一个输入框供用户输入数据 HTML
  • YouTube - 右键单击​​时不显示上下文菜单

    想法 通过使用右键拖放到视频播放器上来查找 YouTube 视频 例如 每 2 屏幕宽度 1 秒 因此 在 1920x1080 的屏幕上 如果我按下鼠标右键 将其向左拖动 384 像素 20 然后松开 视频应该快退 10 秒 我有一个 Gr
  • console.log 是如何工作的?

    第一个例子 在以下示例中 http jsfiddle net maniator ScTAW 4 http jsfiddle net maniator ScTAW 4 我有这个js var storage function var store
  • 如何自定义 Angular Material 的 input/md-input-container 组件?

    正如标题所述 我如何自定义这些元素 他们似乎使用透明背景 这在大多数背景调色板上很难查看 在 angular material css 后添加一个空白 css 文件 并在该空白 css 文件中覆盖您要自定义的规则 对于您面临的问题 我在 c
  • Bootstrap 3 按钮之间的空间

    如果我将几个 Bootstrap 3 按钮排成一行
  • 如何让更大的布局适合小设备屏幕?

    我有一个小问题meta viewport元素 问题是我的布局min width比我想要使用的许多屏幕分辨率都要大 所以将其设置为 没有帮助 结果我得到的页面必须缩小以适应设备宽度 如果我什至添加像 它也不起作用 发现了一个黑客来自CSS 技
  • 如何按日期升序对对象进行排序?

    如果我有一个对象列表 var objectList LIST OF OBJECT each object列表中包含三个属性 name date gender 如何按 对列表中的对象进行排序date 属性升序 the date 属性包含字符串
  • Antd datepicker (date.clone/date.load 不是函数)

    我有一个反应应用程序 有一个复选框可以禁用日期选择器 但当我使用复选框禁用它时 我无法选择任何日期 如果我删除复选框及其功能 则不会出现错误 目前 我得到 date clone 不是函数 error const dateFormat YYY
  • 当 eslint 从子文件夹运行时无法解析相对模块路径

    当我从存储库的根文件夹运行 eslint 时 一切运行正常 没有错误 但是当我从子文件夹运行时 我会得到大量导入 未解决的问题 而当我从根目录运行时则不会发生这种情况 reporoot subfolder0 subfolder1 MyFil
  • 如何列出特定服务器的所有成员?

    我的代码是 const list client guilds find id 335507048017952771 for user of list users console log user 1 username 这实际上没有任何作用
  • 内部样式表中的 HTML 注释标签[重复]

    这个问题在这里已经有答案了 可能的重复 注释掉 HTML 文档中的样式表以支持旧版浏览器 https stackoverflow com questions 6825773 commenting out stylesheets in htm
  • 在 Nest.js 中发送之前如何格式化响应?

    我按照文档进行操作 并能够添加用于响应映射的拦截器 我想要一致的 json 格式输出作为响应 我怎样才能用拦截器或其他比这种方法更好的方法来实现这一点 statusCode 201 message Custom Dynamic Messag
  • Twitter Bootstrap 行过滤器/搜索框

    我无法找到有关如何为 Twitter Bootstrap 创建简单搜索查询或行过滤器的教程 我已经尝试了很多 我不确定是否我做错了什么或者插件与 Bootstrap 不兼容 如果可以的话请帮忙 我试过了 document ready fun
  • ExtJS:简单表单忽略 formBind

    我有一个小问题让我发疯了好几天 我有一个表单面板 Ext define EC view PasswordPanel extend Ext form Panel alias widget pwdpanel bodyPadding 15 ini
  • 如何选中表格中输入文本焦点上的复选框

    我试图在输入文本焦点上检查表 DOM 中的复选框 但无法访问复选框元素 但我的焦点正在工作 这是我的 jsfiddle 链接https jsfiddle net 9qha9vft https jsfiddle net 9qha9vft 这是
  • TypeScript 中 C# 类虚拟成员的等效项

    因此 在 C 中 当我创建模型类和延迟加载内容时 我会执行以下操作 public int User ID get set public int Dept ID get set 然后在我的班级稍远一点的地方 我像这样弹出我的虚拟 public

随机推荐

  • 我们如何在reactjs中简单地上传文件夹?

    我正在此处寻找reactjs中的上传文件夹 我在该doc和docx文件中有文件夹 我只想在用户单击浏览按钮时上传文件夹 其中我必须不允许用户选择单个文件 有人可以给我文件夹上传或文件夹选择的简单示例 其中用户只能选择文件夹而不是文件 实际上
  • 正则表达式对某些字符给出错误

    我碰到这支笔在 codePen http codepen io tmrDevelops pen NxaQmo 并发现了一个错误 如果您在搜索框中输入以下字符 我收到以下错误 我分别输入了每个字符 我认为问题出在正则表达式部分 19号线 va
  • 如何避免PHP内存耗尽?

    致命错误 第 166 行 home alien Desktop 1 scanner php 中允许的内存大小 33554432 字节已耗尽 尝试分配 136753 字节 这是 PHP 代码的 166 行 text i curl multi
  • 如何解决类似以下错误:TypeError:无法读取角度 nvd3 离散条形图中未定义的属性“长度”?

    我正在使用 Angular nvd3 离散条形图 我从 http 获取值并显示在离散条形图中 图表正确显示了我的值 但我收到了类似的错误类型错误 无法读取未定义的属性 长度 我该如何解决这个错误 下面是我的代码
  • C++中无效的语句有什么用? [复制]

    这个问题在这里已经有答案了 在我正在使用的一个库中 我看到了这段代码 template
  • 使用故事板时重用 UIViewController 实例

    我决定在我当前的 iPhone 应用程序中尝试使用故事板 我面临着一些问题 我真的需要重用我的 UIViewController 实例 我这么说是什么意思 好吧 例如我有一个表视图控制器 当我点击一个单元格时 另一个视图控制器将从故事板加载
  • Google + 环聊按钮

    我正在尝试将 google Hangout 按钮添加到我的 html 文件中 如下所示 但是当我运行 html 页面时 该按钮不显示 div div
  • 在 Vim 中,文件名的制表符补全不起作用

    当我尝试在 Vim Linux 中打开文件进行编辑时 当我按 TAB 时 Vim 仅使用当前目录中的文件名自动补全文件名 然而 在网上搜索后 我认为从版本 7 开始 Vim 应该支持使用搜索路径中所有目录中的文件名进行类似 bash 的文件
  • 提升灵气属性传播

    我的 Boost Spirit Qi 语法有问题 该语法发出不需要的类型 导致此编译错误 error C2664 std basic string lt Elem Traits Ax gt std basic string lt Elem
  • 媒体编解码器 4.1 问题

    根据我的测试 除了 Nexus5 moto G 之外 它在大多数设备上都能正常工作 在这些设备上 应用程序生成仅包含两帧的视频 并且 还收到以下错误日志 OMX qcom video encoder avc storeMetaDataInB
  • 从 VBA 搜索 Outlook 电子邮件

    给定的代码成功运行 它在 Outlook 的 已发送邮件 文件夹中搜索电子邮件主题 搜索基于特定时间段内的特定日期进行 例如 下面的代码查找 2018 年 7 月 20 日中午 12 00 到晚上 11 59 之间发送的标题为 周五发送的测
  • 我如何知道 Eclipse 插件使用了多少内存(单独)

    有没有办法知道每个 Eclipse 插件分别消耗了多少内存 进行堆转储并使用例如进行分析这Eclipse 内存分析器 http eclipse org mat 有关更多信息 请参阅使用内存分析器分析 Equinox 捆绑包依赖性 http
  • 如何检查pandas数据框中的布尔条件

    I have Alcohol df数据框 其中资格是一列 我创建了一个列表 如下所示 Graduate list B tech b tech b tech Btech BE B E b e BACHELOR bachelor BSc Bsc
  • 如何使用“PerformanceNavigationTiming” API 获取页面加载时间?

    我正在尝试使用PerformanceNavigationTiming API https developer mozilla org en US docs Web API PerformanceNavigationTiming生成页面加载指
  • 从 travis CI 获取作业 ID 的日志文件

    如何从作业 ID 和项目名称下载构建日志文件 我知道 travis ci 有 API 项目名称 eclipse jetty project 职位编号 6073028 访问日志文件的链接 https travis ci org eclipse
  • 如何处理spark sql中缺失的列

    我们正在处理无架构的 JSON 数据 有时 Spark 作业会失败 因为我们在 Spark SQL 中引用的某些列在一天中的某些时间不可用 在这些时间内 Spark 作业会失败 因为所引用的列在数据框中不可用 如何处理这种情况 我已经尝试过
  • 可以从纹理生成法线贴图吗?

    如果我有一个纹理 是否可以为该纹理生成法线贴图 以便它可以用于凹凸贴图 或者法线贴图通常是如何制作的 是的 嗯 有点像 法线贴图可以根据高度贴图精确制作 一般来说 您也可以放置常规纹理并获得不错的结果 请记住 还有其他制作法线贴图的方法 例
  • 是否可以在 Julia 中对字典进行排序?

    我使用两个数组创建了一个字典zip like list1 1 2 3 4 5 list2 6 7 8 9 19 dictionary1 Dict zip list1 list2 现在我想按以下顺序对这本词典进行排序key list1 or
  • Oracle:比较包含 CLOB 的表并获取 diff 的最快方法

    假设我有两个表 其中列 Col1 Col2 和 Col3 均为 VARCHAR2 CLOB和 NUMBER 类型分别 我怎样才能得到这些表的差异 即存在于Table B 但不在Table A Table A Col1 Col2 Col3 P
  • 使用带有 React-bootstrap 的 Nav 组件的手风琴侧边栏菜单

    我开始使用构建我的用户界面react bootstrap现在我有一个重要的任务是使用标准创建侧栏手风琴菜单bootstrap成分 我发现this http bootsnipp com snippets featured accordion