当前位置: 首页 > 知识库问答 >
问题:

如何使用flexbox水平对齐项目?

陈松
2023-03-14

这里的初学者。出于某种原因,在我编码的网站上,未来的按钮在导航栏上没有水平对齐。我正在使用flexbox,但即使如此,它也没有像我希望的那样对齐它们。代码中似乎也没有任何问题。

.topPart {
  position: fixed;
  overflow: hidden;
  top: 0;
  margin: 0px 15px 30px 15px;
  width: 1790
  padding: 30px;
  border: 2px solid #3cc851;
  background-color: #1f1f1f;
}


.topButtons {
  display: flex;
  flex-flow: row wrap;
  justify-content: space-around;
  align-items: flex-center;
  height: 15px;
  width: auto;
  padding: 15px;
  background-color: #fff;
  color: #1f1f1f;
}


.topButtons .rightButtons {
  text-align: right;
  margin: auto 2px auto 1500px;
}


.topButtons .leftButtons {
  text-align: left;
  margin: auto 2% auto 2%;
}
html prettyprint-override">   <div class="topPart">
     <h2> Website name I don't want to share </h2> <p> Website slogan I don't want to share </p>
     <!-- later, make it so that the boxes of text are lined up like how it looks in the code using css -->
   <div class="topButtons">
     <div class="leftButtons">
       <a href="index.html" class="home">home<a>
       <a href="" class="mssg">mssg board<a>
       <a href="database.html" class="data">database<a>
       <a href="roleplay.html" class="rp">rp<a>
     </div>
     <div class="rightButtons">
       <a href="" class="dms">dms</a>
       <a class="out">logout</a>
       <a class="acc">acc</a>
     </div>
     </div>
    </div>

右侧按钮似乎比左侧按钮低约5px。在这里我完全不知所措,我的代码中似乎没有任何错误导致这种情况。应该修复它的Flexbox标记也不会做任何事情,例如flex-direction:row 调整内容

它看起来像什么。


共有3个答案

薄高懿
2023-03-14

您可以定义show: flex;risage-Content: space-interamie-Item: center;在topPart类和相等的宽度内div这个flex: 1 1自动;css
我希望下面的片段将帮助你很多。

*,*:before,*:after{box-sizing: border-box;}
body{margin: 0; padding: 0}
.topPart {
  position: fixed;
  overflow: hidden;
  top: 0;
  padding: 30px 20px;
  border-bottom: 2px solid #3cc851;
  background-color: #fff;
  width: 100%;
  z-index: 100;
  display: flex;
  flex-flow: row wrap;
  justify-content: space-between;
  align-items: center;
}
.leftButtons {
  flex: 1 1 auto;
  text-align: left;
}
.centerButtons {
  text-align: center;
  flex: 1 1 auto;
}
.rightButtons {
  text-align: right;
  flex: 1 1 auto;
}
.centerButtons a, .rightButtons a{
  display: inline-flex;
  background-color: #ccc;
  padding: 4px 5px;
  text-decoration: none;
  color: #444;
  text-transform: capitalize;
}
<div class="topPart">
  <div class="leftButtons">
    <div>Website Name<br>Website slogan</div>
  </div>
  <div class="centerButtons">
    <a href="index.html" class="home">home</a>
    <a href="#" class="mssg">mssg board</a>
    <a href="database.html" class="data">database</a>
    <a href="roleplay.html" class="rp">rp</a>
  </div>
  <div class="rightButtons">
    <a href="" class="dms">dms</a>
    <a class="out">logout</a>
    <a class="acc">acc</a>
  </div>
</div>
郎志
2023-03-14

这是由于“.leftButtons”和“.rightButtons”类上的“文本对齐”和“边距”的CSS属性造成的。您不需要使用这些属性,因为您正在使用“.topButtons”类上的“display:flex”。子类的水平和垂直对齐将通过“调整内容:间距和“对齐项目:居中“.topButtons”。

我已经删除了“.leftButtons”和“.rightButtons”类的CSS属性。更新了“调整内容:间距在“.topButtons”上,通过在元素之间留出相等的空间,使子类水平对齐。

我还对您的标记做了一些更正,我发现如下所述:(1)锚(/a)子“.leftButtons”的闭包标记丢失。(2) 在“.topPart”中宽度属性声明后缺少。还增加了宽度值“1790”的“px”。

请检查添加的代码

            .topPart {
              position: fixed;
              overflow: hidden;
              top: 0;
              margin: 0px 15px 30px 15px;
              width: 1790px;
              padding: 30px;
              border: 2px solid #3cc851;
              background-color: #1f1f1f;
            }

            .topButtons {
              display: flex;
              flex-flow: row wrap;
              /* justify-content: space-around; [old code] */ 
              justify-content: space-between;
              align-items: center;
              height: 15px;
              width: auto;
              padding: 15px;
              background-color: #fff;
              color: #1f1f1f;
            }

            /*---- [old code]----*/
            .topButtons .rightButtons {
              /*text-align: right;
              margin: auto 2px auto 1500px;*/
            }
            
            .topButtons .leftButtons {
              /*text-align: left;
              margin: auto 2% auto 2%;*/
            }
<div class="topPart">
         <h2> The Blood Tundra Kingdom </h2>
         <p> - never talk about the blood tundra kingdom </p>
         <!-- later, make it so that the boxes of text are lined up like how it looks in the code using css -->
           <div class="topButtons">
                 <div class="leftButtons">
                   <a href="index.html" class="home">home</a>
                   <a href="" class="mssg">mssg board</a>
                   <a href="database.html" class="data">database</a>
                   <a href="roleplay.html" class="rp">rp</a>
                 </div>
                 <div class="rightButtons">
                   <a href="" class="dms">dms</a>
                   <a class="out">logout</a>
                   <a class="acc">acc</a>
                 </div>
            </div>
        </div>
韩夕
2023-03-14

div是一个块元素,因此保持auto的宽度基本上是向下推动第二个div的可用空间的100%。

尝试inline-flex或使宽度成为一个设定的数量,而不是自动

 类似资料:
  • 是否有一种方法可以以这种方式对齐子项:[i][i]_______[i][i][i],而不管每个组中有多少项?

  • 问题内容: 由于某些原因,我的div不会在包含div的水平居中: 有时有一个行div,其中只有一个块div。我究竟做错了什么? 问题答案: 要实现您想要做的事情: 考虑使用代替。

  • 问题内容: 我有一个容器div,其中有一个固定的,并带有。 我想要水平行的float:此容器内的div左。左浮动的Divs在读取其父级的右边界后自然会推到下面的“行”上。即使父级的不允许这样做,也会发生这种情况。这是这样的样子: ![错误] [1]- 删除了已被广告替换的图片棚屋图片 我希望它看起来如何: ![右] [2]- 删除了已被广告替换的图片棚屋图片 注意:我想要的效果可以通过使用内联元素

  • text-align-last属性用于定义块级容器中,行内元素的最后一行内容的水平对齐方式,可选值有 auto | left | center | right | justify | start | end | start | end,默认值为 auto。 除 auto外,其它取值与 text-align 属性取值的含义相同。auto 表示使用 text-align 的设定(例外情况,text-a

  • 在一个块级容器中,当一行中的行内级框的总宽度,小于容器的宽度时,通过 text-align属性来指定这些行内级框在行中的水平分布。 事实上,text-align属性是通过指定行框与哪个点对齐,来决定行内级框在行中如何进行水平分布。可选值有 left | center | right | justify | start | end,默认值为start。不同取值的含义见表 3‑3: 表 3-3 tex

  • 问题内容: 我需要将两个div彼此对齐,以便每个都包含一个标题和一个项目列表,类似于: 使用表非常容易,但是我不想使用表。我该如何实现? 问题答案: 将div浮动到父容器中,并设置其样式如下: