【问题标题】:Individually align elements within a Navigation Bar单独对齐导航栏中的元素
【发布时间】:2021-05-22 10:40:40
【问题描述】:

我正在尝试使用 ReactJS 创建一个前端。页面的不同组件正在使用tabler-react 创建。

我正在尝试使用Nav component in tabler-react 创建一个导航面板。返回函数如下所示:

return ( 
            <Nav >
                <Nav.Item to='#' value="Item1" />
                <Nav.Item to='#' value="Item2" />
                <Nav.Item to='#' value="Item3" />
                <Nav.Item to='#' value="Item4" />
            </Nav>
         );

默认情况下,从屏幕最左侧开始,一个接一个地显示。

我希望以“item1”和“item2”显示在最左侧,“item3”和“item4”显示在最右侧的方式显示项目。 我在这样做时遇到了麻烦。

我搜索了一个解决方案并了解到可以将样式属性设置为可以执行 justifyContent、对齐等操作的标签。我尝试将此类样式属性设置为内部的单个标签,但它不会导致任何更改在呈现的页面中。

总的来说,我是 ReactJS 和 javascript 的新手。所以我不确定这是否是我正在做的一个基本错误。任何帮助表示赞赏。谢谢。

【问题讨论】:

    标签: html css reactjs frontend web-frontend


    【解决方案1】:

    有很多方法,但我不建议只为样式添加元素。一个简单的方法是用nth-child(n) 选择应该是左边最后一个元素的元素,然后添加margin-right: auto。如果您愿意,可以使用下一个元素执行此操作,如果您愿意,可以应用 margin-left: auto

    HTML

    <nav>
       <a href="#">Link 1</a>
       <a href="#">Link 2</a>
       <a href="#">Link 3</a>
       <a href="#">Link 4</a>
    </nav>
    

    CSS

    nav {
      display: flex;
    }
    
    nav a:nth-child(2) {
      margin-right: auto;
    }
    

    【讨论】:

      【解决方案2】:

      这是快速修复

      return ( 
                  <Nav >
                      <Nav.Item to='#' value="Item1" />
                      <Nav.Item to='#' value="Item2" />
                       <div style={{
                             marginLeft: 'auto'
                       }} />
                      <Nav.Item to='#' value="Item3" />
                      <Nav.Item to='#' value="Item4" />
                  </Nav>
               );
      
      

      【讨论】:

      • 有趣,这似乎可以解决问题。你能补充一下为什么这有效吗?这对我理解会有帮助。
      • 新的 div 元素添加在具有 auto 左侧边距的导航项之间,这占用了导航项之间的可用空间
      • 所以,如果我想将导航栏的所有内容对齐到屏幕中心多一点(保持这个间距),如果我添加类似的
        两端的元素?
      • 您可以使用.nav css 类直接选择导航,它使用 flexbox,所以如果您想完全居中然后添加.nav{justify-content: center} 这是更好的方法
      • @IshwarVenugopal 我已将其添加为单独的答案。
      猜你喜欢
      相关资源
      最近更新 更多
      热门标签