javascript 当页面右侧有另一个元素时,是否有方法使元素在页面上水平居中?[duplicate]

i86rm4rw  于 2023-03-11  发布在  Java
关注(0)|答案(2)|浏览(111)

此问题在此处已有答案

Center flex item in container, when surrounded by other flex items(2个答案)
Center one and right/left align other flexbox element(11个答案)
昨天关门了。
我用来居中元素的任何方法都不起作用,因为右边的元素有一个宽度,所以中心元素总是偏离中心。我附上了一张图片,希望给予更好地了解我试图完成的工作。
我试图居中的元素是一个输入字段,这里是我的项目的链接,以及给予一个更完整的画面:https://weathervc.netlify.app/
header layout
我试过无数种FlexBox和Grid来实现这一点,但输入元素仍然偏离中心。我也试过将右侧的元素从流中取出,哪种工作方式,但它看起来不太好,因为元素保持静止,如果屏幕宽度太小,它会与中心元素重叠。当然,我可以添加媒体查询来不断改变位置,但它看起来很丑。我希望它看起来很好,React灵敏。
也许这是不可能的,如果不采取一个元素的流动?任何帮助是赞赏。

9lowa7mx

9lowa7mx1#

这是另一个依赖于flexbox来实现预期效果的实现。在左边仍然使用了一个“spacer”来确保空间被正确划分。它也不会换行,但我不确定当屏幕太小时你是否希望它换行,所以我就保持原样。

header {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: baseline;
  width: 100%;
}

header>div {
  display: inline-block;
  width: 100%;
}

.search>form {
  display: flex;
}

.search>form>input {
  border-radius: 3px;
  flex: 1;
}

.buttons {
  display: flex;
  align-items: center;
}

.day-toggle {
  height: 24px;
  width: 24px
}
<header>
  <div class="spacer">
  </div>
  <div class="search">
    <form action="">
      <input class="location-search" type="text" />
    </form>
  </div>
  <div class="buttons">
    <button class="temp-format-toggle farenheit">C°</button>
    <span class="divider">&nbsp;|&nbsp;</span>
    <img class="day-toggle" id="day-toggle" src="https://cdn-icons-png.flaticon.com/512/3222/3222800.png" alt="Sun icon">
  </div>
</header>
lc8prwob

lc8prwob2#

把右边的元素也重复到左边,让它看不见,这会给予你你想要的平衡。

.d1 {
  display: flex;
  justify-content: center;
  gap: 1em;
}
.d1>*:first-child {
  visibility: hidden;
}
.d2 {
  text-align: center;
}
<div class="d1">
  <div>123456789</div>
  <div><input placeholder="enter something"></input></div>
  <div>123456789</div>
</div>
<div class="d2">|</div>

相关问题