【手把手保姆级】花式进度/PK/投票条开发教程

本文介绍了使用 HTML 和 CSS 实现 PK 进度条的方法。PK 条用于展示两个或多个数据间的对比,通过父级 div 嵌套子 div 实现,利用 widthData 变量计算宽度,使用 transform 倾斜和 overflow 隐藏超出边缘。还介绍了不同样式和数据展示的 PK 条实现思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pk 条的特征是两个数据间的 pk,用一个进度条表示。
下面先来实现第一个pk条。
在这里插入图片描述

pk 条中有两个颜色,左侧为数据 A,右侧为数据 B,中间使用斜线分割。
pk 条可以使用一个和 B 数据颜色一致的父级 div,然后在内嵌套一个和 A 颜色一致的子 div 来实现。

<div class="postPKBtnGroup">
  <div class="postPKBtn" :style="{ width: widthData }"></div>
</div>

其中 widthData 变量的计算是 A/A+B*100+‘%’。
然后为两个 div 写上样式,简单的 pk 条就完成了。
需要注意的点是:

  1. 因为 pk 条中间的形状是斜线,所以内部 div 需要使用 transform: skewX(-10deg)来倾斜。
  2. 内部 div 倾斜后,内部 div 作用两侧都会倾斜,而我们只需要一条斜线,这时可以使用 left: -3px,将另一侧移出边框外。
  3. 内部 div 另一侧移出边框外后,需要为外部 div 添加 overflow: hidden 来将超出的边缘隐藏。
.postPKBtnGroup {
  margin-top: 4px;
  height: 8px;
  background: #2b78ff;
  overflow: hidden;
  border-radius: 2px;
  width: 100%;
  .postPKBtn {
    background: #ff4d4d;
    width: 20px;
    height: 8px;
    transform: skewX(-10deg);
    position: relative;
    left: -3px;
  }
}

然后为 pk 条添加上面的数字和选择标志,直接在进度条上方写入一个 div,将文字放到两侧即可。

<div class="postPKBtnNum">
  <div class="postPKBtnNumItem">
    {{ imageData[0].count }}
    <img
      v-if="selectResult === imageData[0].desc"
      class="voteIconImg"
      :src="require('@/assets/navigatePlan/active-icon.png')"
      alt=""
    />
  </div>
  <div class="postPKBtnNumItem">
    {{ imageData[1].count }}
    <img
      v-if="selectResult === imageData[1].desc"
      class="voteIconImg"
      :src="require('@/assets/navigatePlan/unactive-icon.png')"
      alt=""
    />
  </div>
</div>
let imageData = [
  { count: 50, desc: "A" },
  { count: 50, desc: "B" },
];
let selectResult = "A";
  .postPKBtnNum {
    font-size: 13px;
    font-family: PingFangSC-Regular, PingFang SC;
    font-weight: 400;
    color: #2b78ff;
    line-height: 16px;
    display: flex;
    justify-content: space-between;
    margin-top: 16px;
    .postPKBtnNumItem {
      display: flex;
      align-items: center;
      &:first-child {
        color: #ff4d4d;
      }
    }
    .voteIconImg {
      width: 16px;
      height: 16px;
      margin-left: 4px;
    }
  }

一个简单又精致的进度条就做好了。
接着我们看另外一个PK条。
在这里插入图片描述

可以看到结构基本和上面一致的,只是PK条的宽度更宽,外层div的圆角更大,数字显示从外面改到了PK条内侧,只要在上面的基础上做一点样式上的调整就能实现。
这里就不给出具体代码了,遇到困难的网友可以在下面留言。

然后是第三个进度条。
在这里插入图片描述

可以看到和上面的结构也差不多,只是展示的数据从两组变为了多组,所以无法在一个进度条内表示了。
上面进度条展示了4组数据,每个数组用一个进度条展示。
但是结构还是父级 div在内嵌套一个子 div去实现,然后重复4次就可以。这里也不给出具体代码了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值