html - 创建响应式 CSS 记分板,其数值紧邻条形左侧
问题描述
我正在尝试使用 HTML 和 CSS 编写一个简单的响应式记分牌。对于每个玩家(总共三个),将有一个条形图(一个具有高度、宽度和背景颜色的 div),以及一个紧邻该条形图右侧的数字分数。
我希望这些栏位于列 flex 容器中。最上面的条将始终占据 flex 容器的整个宽度。然后可以相对于第一个条的宽度设置后两个条的宽度。如果第二个玩家的得分是第一个玩家的一半,那么他们的条形宽度将设置为 50%。
是否可以使用这种方法,同时将数字分数立即定位在条形的右侧?我之前尝试将每个条形图与其对应的数字分数保存在一个 div 中,但准确设置条形图的宽度变得非常困难。
这是我现在拥有的代码:
span {
font-family: Arial, sans-serif;
color: #7B7B7B;
}
#container {
height: 100%;
width: 100%;
display: flex;
}
#names {
padding-right: 2%;
display: flex;
flex-direction: column;
}
#player1name, #player2name, #player3name {
font-weight: bold;
height: 2em;
line-height: 2em;
}
#bars {
flex: 1;
display: flex;
flex-direction: column;
}
#player1bar, #player2bar, #player3bar {
height: 2em;
flex: 1;
}
#player1bar {
background-color: #4776d2;
width: 100%;
}
#player2bar {
background-color: #2a85b6;
width: 50%;
}
#player3bar {
background-color: #51636d;
width: 7.5%;
}
#scores {
padding-left: 2%;
display: flex;
flex-direction: column;
}
#player1score, #player2score, #player3score {
height: 2em;
line-height: 2em;
font-weight: bold;
text-align: left;
}
<body>
<div id="container">
<div id="names">
<span id="player1name">Alice</span>
<span id="player2name">Bob</span>
<span id="player3name">Charlie</span>
</div>
<div id="bars">
<div id="player1bar"></div>
<div id="player2bar"></div>
<div id="player3bar"></div>
</div>
<div id="scores">
<span id="player1score">10,000</span>
<span id="player2score">5,000</span>
<span id="player3score">750</span>
</div>
</div>
</body>
解决方案
你的意思是这样的吗?
span {
font-family: Arial, sans-serif;
color: #7B7B7B;
}
#container {
height: 100%;
width: 100%;
display: flex;
}
#names {
padding-right: 2%;
display: flex;
flex-direction: column;
}
#player1name, #player2name, #player3name {
font-weight: bold;
height: 2em;
line-height: 2em;
}
#bars {
flex: 1;
display: flex;
flex-direction: column;
}
#player1bar, #player2bar, #player3bar {
height: 2em;
flex: 1;
}
#player1bar {
background-color: #4776d2;
width: 100%;
}
#player2bar {
background-color: #2a85b6;
width: 50%;
}
#player3bar {
background-color: #51636d;
width: 7.5%;
}
#scores {
padding-left: 2%;
display: flex;
flex-direction: column;
}
#player1score, #player2score, #player3score {
height: 2em;
line-height: 2em;
font-weight: bold;
text-align: left;
}
.bars {
width: 90%;
}
.bar {
position: relative;
}
.bar span {
position: absolute;
top: 50%;
transform: translateY(-40%);
left: 100%;
padding-left: 10px;
}
<div id="container">
<div id="names">
<span id="player1name">Alice</span>
<span id="player2name">Bob</span>
<span id="player3name">Charlie</span>
</div>
<div class="bars">
<div class="bar" id="player1bar">
<div></div>
<span id="player1score">10,000</span>
</div>
<div class="bar" id="player2bar">
<div></div>
<span id="player2score">5,000</span>
</div>
<div class="bar" id="player3bar">
<div></div>
<span id="player3score">750</span>
</div>
</div>
</div>
我稍微改变了 html 结构,因为你的那个不容易重新制作。
一个提示,使用更多的类而不是 id。为类编写 css 更容易。
推荐阅读
- javascript - 如何选择多张图片并提交
- c# - C# SQL 语句日期范围
- snowflake-cloud-data-platform - 如何从 prem 服务器和浏览器连接雪花私有链接?
- java - 编辑(写入)文本文件作为 tomcat 目录列表功能的一部分
- excel - 当 INDEX MATCH 返回多个结果时提醒我
- python - 在没有循环导入错误的情况下重新启动 main.py
- javascript - 箭头函数上的 useCallback 用法作为道具
- parsing - 如何在 Go 中将持续时间字符串解析为时间或持续时间对象?
- database - 将 foreach 数据表 laravel 用于 addClumn
- c - 如何在C中镜像翻转图像?