html - 为什么具有相同百分比宽度的 div 不均匀呈现

标签 html css flexbox

我正在制作基于 html 5 视频标签的自定义视频播放器 Controller 。从一开始我就在 px 中添加了 volume col 的宽度,但是当进入全屏模式时,它必须变大,所以我决定使用百分比。但是,虽然每个列的宽度都相等,但浏览器将其显示为不同。

https://jsfiddle.net/fu8cp8pb/

.volume-box {
  position: relative;
  cursor: pointer;
  display: inline-block;
  height: 100px;
  display: flex;
  align-items: center;
  width: 50px;
}

.volume {
  display: inline-block;
  height: 85%;
  width: 7%;
  background: #00adef;
}

.volume.trans {
  background: white;
}
<div class="volume-box">
  <div class="volume trans" data-value="0"></div>
  <div class="volume" data-value="0.1"></div>
  <div class="volume trans" data-value="0.15"></div>
  <div class="volume" data-value="0.2"></div>
  <div class="volume trans" data-value="0.25"></div>
  <div class="volume" data-value="0.3"></div>
  <div class="volume trans" data-value="0.35"></div>
  <div class="volume" data-value="0.4"></div>
  <div class="volume trans" data-value="0.45"></div>
  <div class="volume" data-value="0.5"></div>
  <div class="volume trans" data-value="0.55"></div>
  <div class="volume" data-value="0.6"></div>
  <div class="volume trans" data-value="0.65"></div>
  <div class="volume" data-value="0.7"></div>
  <div class="volume trans" data-value="0.75"></div>
  <div class="volume" data-value="0.8"></div>
  <div class="volume trans" data-value="0.85"></div>
  <div class="volume" data-value="0.95"></div>
  <div class="volume trans" data-value="1"></div>
</div>

最佳答案

对于 flex 布局,如果你想在你的 flex child 中使用固定宽度,你想使用 flex-basis 而不是 width,如果你想确保它们都是相同的宽度,将 flex-shrinkflex-grow 指定为 0。或简称 flex: 0 0 7%

.volume-box {
  position: relative;
  cursor: pointer;
  display: inline-block;
  height: 100px;
  display: flex;
  align-items: center;
  width: 50px;
}

.volume {
  height: 85%;
  background: #00adef;
  flex: 0 0 7%;
}

.volume.trans {
  background: white;
}
<div class="volume-box">
  <div class="volume trans" data-value="0"></div>
  <div class="volume" data-value="0.1"></div>
  <div class="volume trans" data-value="0.15"></div>
  <div class="volume" data-value="0.2"></div>
  <div class="volume trans" data-value="0.25"></div>
  <div class="volume" data-value="0.3"></div>
  <div class="volume trans" data-value="0.35"></div>
  <div class="volume" data-value="0.4"></div>
  <div class="volume trans" data-value="0.45"></div>
  <div class="volume" data-value="0.5"></div>
  <div class="volume trans" data-value="0.55"></div>
  <div class="volume" data-value="0.6"></div>
  <div class="volume trans" data-value="0.65"></div>
  <div class="volume" data-value="0.7"></div>
  <div class="volume trans" data-value="0.75"></div>
  <div class="volume" data-value="0.8"></div>
  <div class="volume trans" data-value="0.85"></div>
  <div class="volume" data-value="0.95"></div>
  <div class="volume trans" data-value="1"></div>
</div>

关于html - 为什么具有相同百分比宽度的 div 不均匀呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43970827/

相关文章:

javascript - 带有 nowrap 的 Flex 盒子没有正确对齐

javascript - 为什么我的 Raspberry 数字标牌解决方案不能正常工作?

javascript - 使用 HTML5 网络音频 API 提取 mp3 文件的歌曲频率

python 如何计算html中开始和结束标签的数量

html - 反向排序列表的自定义编号

html - 带有背景图片的登录页面有滚动条,如何去除它们?

html - Flexbox 包装特定内容

html - 如何使用 Flexbox 将输入定位在等高位置?

html - 带右边框的 CSS 文本

javascript - 更改 v-for 生成表的文本颜色