css 固定Flex框大小,而不考虑其内部文本

hm2xizp9  于 2023-01-06  发布在  其他
关注(0)|答案(2)|浏览(135)

我如何固定div的大小?(我的意思是 .longdiv在这个代码)
实际上div的大小是固定的,但是div的内部文本在改变它的宽度。
所以,我的内容的浮点位置正在改变。
我认为此问题的原因是flex-end
那么,在div末尾标注内容的最佳方法是什么?

.parent{
    width: 400px;
    height: 200px;
    display: flex;
}

.long{
    width: 80%;
    height: 100%;
    display: flex;
    justify-content: flex-end;
    align-items: center;
}

.short{
    width: 20%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
}
<div class="parent">
    <div class="long">
       {dynamicNumberNotate}
    </div>
    <div class="short">
        foo
    </div>
</div>
jogvjijk

jogvjijk1#

您的div .long的宽度是其父代的80%,这不是一个固定的宽度,有三种可能的解决方案:

  • 给予它一个固定的宽度(例如400px)
  • 如果数字太长,请使用word-break css属性将其拆分
  • 请确保有足够的空间来容纳该号码。

此外,display属性有点棘手,可能会产生意想不到的效果。也许您可以通过为子div使用不同的显示值来改变某些内容,从而获得更好的结果。

46qrfjad

46qrfjad2#

所以为了确保小数点不会随着文本的移动而移动,你必须把div拆分成两个子元素,确保第二个子元素有足够的宽度来处理2个字符,有一个非常方便的css单元ch可以做到这一点。

window.onload = () => {
  setInterval(() => {
    const numString = (Math.random() * 3000).toFixed(2);
    document.querySelector('.long').textContent = numString.split('.')[0] + ".";
    document.querySelector('.short').textContent = numString.split('.')[1];
  }, 500);
}
.parent {
  width: 400px;
  height: 200px;
  display: flex;
}

.long {
  width: 80%;
  height: 100%;
  display: flex;
  justify-content: flex-end;
  align-items: center;
  border-right: 1px solid red;
  background-color: goldenrod;
}

.short {
  width: 2ch;
  height: 100%;
  display: flex;
  justify-content: left;
  align-items: center;
  background-color: lightskyblue;
}
<div class="parent">
  <div class="long"></div>
  <div class="short"></div>
</div>

相关问题