【黄啊码】如何用小程序实现世界杯参赛队伍投票

news2024/11/17 3:56:19

本次只分享小程序端的代码实现,后端每个人都有自己的实现方法,就不写在此。

好了,先看实现样式:

本次投票实现需要一个页面和一个弹窗实现,我们做的是淘汰赛部分,在此,黄啊码将淘汰赛部分直接选用选择队伍投票方式,比分这块实现方式其实也类似:

 那就先走第一个图吧,wxml如下:

<view  class="contain item">
    <view wx:for="{{all_list}}" wx:key="index"  wx:for-item="item" style="border-bottom: 1px solid #36a2e6;">
      <view class="date">
        <view class="game-type">
        <text>淘汰赛</text>
        </view>
        <text>2022-12-15</text>
        <view>猜中积分<text style="color: rgb(255, 26, 26);font-weight: bold;">+500}</text></view>
      </view>
      <view class="guess_item">
        <view class="time">
          <text space="nbsp">12月15日 03:00半决赛</text>
        </view>
        <view class="country">
          <view class="country-item">
            <text space="emsp">法国 </text>
            <image src="{{img_url+item.country_flag1}}" />
          </view>
          <view class="vs">VS</view>
          <view class="country-item diff">
            <image src="{{img_url+item.country_flag2}}" />
            <text space="emsp">摩洛哥</text>
          </view>
        </view>
        <view class="btn_box">
          <button>参与竞猜</button>
        </view>
        
        <view class="result">
          <view class="pre-item">
            <span>我的预测</span>
            <view>
              <text space="ensp" style="color: #3c3c3c;">---</text>
            </view>
          </view>
          <view class="line"></view>
          <view class="pre-item">
            <view>未参与竞猜</view>
          </view>
        </view>
      </view>
    </view>
    </view>
</view>

wxss如下: 【对应颜色有做调整,别顾着照抄哦】

.item {
 margin: 20rpx;
 border-bottom: 4rpx solid #36a2e6;
}
.contain .item:last-child{
  border-bottom: 0; 
   overflow: hidden;
}
.item_index{
  margin-left: 20rpx;
  font-size: 32rpx;
  color: #36a2e6;
}
.item .guess_item {
  width: 100%;
  height: 410rpx;
  background-color: #fff;
  border-radius: 8px;
  position: relative;
}
.item .date {
  display: flex;
  position: relative;
  justify-content: space-between;
  height: 130rpx;
  line-height: 130rpx;
  font-size: 30rpx;
  color: #36a2e6;    
  margin: 0rpx 25rpx;
}
.item .date .game-type {
  position: absolute;
  top: -1rpx;
  left: -26rpx;
  width: 110rpx;
  height: 42rpx;
  line-height: 42rpx;
  background-color: #36a2e6;
  text-align: center;
  border-bottom-right-radius: 22rpx;
  font-size:24rpx;
  color: #fff;
}
.item .time {
  height: 70rpx;
  line-height: 70rpx;
  text-align: center;
  color: rgb(66, 66, 66);
  font-size: 28rpx;
  margin-left: 11rpx;
}
.item .guess_item .country{
  display: flex;
  margin-top: 16rpx;
}
 .country-item {
  width: 40%;
  height: 48rpx;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  font-size: 30rpx;
}
 .diff {
  justify-content: flex-start;
}
.item .guess_item .country .country-item image {
  width: 82rpx;
  height: 100%;
}
.item .guess_item .country .country-item text {
  color: rgb(46, 46, 46);
}
.item .guess_item .country .vs {
  width: 20%;
  text-align: center;
  height: 48rpx;
  line-height: 48rpx;
  color: rgb(255, 26, 26);
  font-weight: bold;
  font-size: 32rpx;
}
.item .guess_item .btn_box {
  display: flex;
  justify-content: center;
  height: 130rpx;
  line-height: 130rpx;
  align-items: center;
}
.item .guess_item .btn_box .btn {
  width: 220rpx;
  height: 58rpx;
  line-height: 58rpx;
  text-align: center;
  background-color: #ffc320;
  color: #fff;
  border-radius: 30rpx;
  font-size: 29rpx;
}
.item .guess_item .btn_box button {
  width: 220rpx;
  height: 52rpx;
  font-weight: unset;
}
.item .guess_item .btn_box text {
  color:#3c3c3c;
  font-size: 30rpx;
}
.item .guess_item .result {
  display: flex;
  justify-content: space-between;
}

.item .guess_item .result .pre-item text {
  width: 50%;
  text-align: center;
}
.item .guess_item .result .pre-item {
    width: 44%;
    height: 110rpx;
   display: flex;
   flex-direction: column;
   align-items: center;
}
.item .guess_item .result .pre-item span {
   width: 76%;
    display: block;
    height: 52rpx;
    font-size: 28rpx;
  
    color:#36a2e6;
    text-align: center;
    line-height: 52rpx;
    border: 4rpx solid #36a2e6;
    border-radius: 32rpx;
}
.item .guess_item .result .pre-item view {
  width: 80%;
  height: 58rpx;
  text-align: center;
  line-height: 82rpx;
  font-size: 30rpx;
  color: rgb(255, 26, 26);
}
.line {
  width: 0;
  height: 64rpx;
  border-left:1rpx solid #36a2e6;
  border-right: 1rpx solid #36a2e6;
  background-color: #36a2e6;
}
.submit_box {
  position: fixed;
  top: 356rpx;
  left: 50%;
  transform: translateX(-50%);
  width: 92%;
  height: 42%;
  background-image:linear-gradient(to bottom,#36a2e6,#fff);
  opacity: 0.92;
  border-radius: 24rpx;
  box-shadow: 2rpx 2rpx 16rpx 4rpx #d4d4d4;
  border: 2rpx solid #36a2e6;
}

.submit_box .tip {
  height: 150rpx;
  text-align: center;
  line-height: 150rpx;
  font-size: 34rpx;
  color: #fff;
}
.submit_box .score {
  display: flex;
  justify-content: center;
  align-items: center;
}
.submit_box .score input {
  width: 86rpx;
  height: 86rpx;
  background-color: #fff;
  border-radius: 8rpx;
  margin: 0 46rpx;
  font-size: 36rpx;
  font-weight: bold;
  color: rgb(0, 0, 0);
  text-align: center;
}
.submit_box .score view {
  width: 40rpx;
  height: 8rpx;
  background-color: #fff;
}
 .close {
  height: 70rpx;
  display: flex;
  justify-content: flex-end;
}
 .close view {
  width: 76rpx;
  height: 66rpx;
  line-height: 64rpx;
  text-align: center;
}
.icon-guanbi {
  color: #fff;
}
 .sub_btn_box {
  height: 180rpx;
  display: flex;
  justify-content: center;
  align-items: center;
}
 .sub_btn_box .sub_btn {
  width: 300rpx;
  height: 70rpx;
  line-height: 70rpx;
  background-color: #ffc320;
  text-align: center;
  border-radius: 14rpx;
  font-size: 34rpx;
  color: #fff;
}
.end {
  position: absolute;
  width:460rpx;
  height:100rpx;
  text-align: center;
  line-height: 100rpx;
  top: 194rpx;
  left: 50%;
  border-radius: 20rpx;
  transform: translateX(-50%);
  text-align: center;
  font-size: 28rpx;
  color: rgb(255, 26, 26);
}

接下来是弹出窗体的wxml代码和wxss代码

<view class="choose_box">

    <view bindtap="chooseFn" class="left {{is_choose1?'choose_color':''}}" data-id="1">猜TA胜</view>

    <view bindtap="chooseFn" class="{{is_choose2?'choose_color':''}}" data-id="2">平局</view>

    <view bindtap="chooseFn" class="right {{is_choose3?'choose_color':''}}"  data-id="3" >猜TA胜</view>

  </view>

.choose_box {

  display: flex;

  justify-content: center;

}

.choose_box view {

  width: 178rpx;

  height: 74rpx;

  line-height: 74rpx;

  background-color: #fff;

  margin: 0 1rpx;

  text-align: center;

  border:2rpx solid #36a2e6;

  color: #36a2e6;

}

.choose_box .choose_color {

  background-color: #36a2e6;

  color: #fff;

}

.choose_box .left{

 border-top-left-radius: 22rpx;

 border-bottom-left-radius: 22rpx;

}

.choose_box .right{

  border-top-right-radius: 22rpx;

  border-bottom-right-radius: 22rpx;

}

最后实现的时候别忘了把点击事件加上

这里的dataset.id表示的是你选中的国家id,我在上边代码就直接省略了,毕竟每个认对于变量的命名都有所不同。

chooseFn(e) {
    if(e.currentTarget.dataset.id=="1") {
      this.setData({
        is_choose1:true,
        is_choose2:false,
        is_choose3:false,
       })
    }
    else if(e.currentTarget.dataset.id=="2") {
      this.setData({  
        is_choose1:false,
        is_choose2:true,
        is_choose3:false,
      })
    }
    else if(e.currentTarget.dataset.id=="3") {
      this.setData({  
        is_choose1:false,
        is_choose2:false,
        is_choose3:true,
      })
    }
    },

至于如何弹窗和关闭事件这个部分,我相信大多数只要入门过小程序的都知道,我就不一一阐述了,如果再不懂直接扣我也行。

好了,今天的分享就这里,有问题的留个言,别忘了一键三连,下次我们还会再见!

我是黄啊码,码字的码,退。。。退。。。退。。。朝! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

配置Nginx解决http host头攻击漏洞【详细步骤】

配置Nginx解决http host头攻击漏洞【详细步骤】前言1、进入nginx目录下2、修改nginx配置文件3、添加上后重启配置文件Nginx常用基本命令仰天大笑出门去&#xff0c;我辈岂是蓬蒿人前言 大概内容&#xff1a; 安全系统渗透测试出host头攻击漏洞&#xff0c;下面是解决步骤 1、…

React组件之间的通信方式总结(上)

先来几个术语&#xff1a; 官方我的说法对应代码React elementReact元素let element<span>A爆了</span>Component组件class App extends React.Component {}无App为父元素&#xff0c;App1为子元素<App><App1></App1></App> 本文重点&…

idea中用SSH工具手动打包部署

我用的是MobaXterm工具&#xff1a; 第一步&#xff1a;先将自己的文件整体运行一下&#xff0c;确保可以正常运行 第二步&#xff1a;在Maven中找到名为XXXX&#xff08;root&#xff09;的名称展开 ---》Lifecycle &#xff0c;先点击 clean&#xff0c;确保无误后点击 pac…

clickhouse三节点三分片双副本环绕部署

文章目录clickhouse安装部署01节点 metrika.xml 配置文件信息02节点 metrika.xml 配置文件信息03节点 metrika.xml 配置文件信息macros 实例信息编辑查看结果clickhouse安装部署 rpm安装过程以及注意事项 01节点 metrika.xml 配置文件信息 <?xml version"1.0"…

笔试强训(四十三)

目录一、选择题二、编程题2.1 电话号码2.1.1 题目2.1.2 题解2.2 求和2.2.1 题目2.2.2 题解一、选择题 &#xff08;1&#xff09;下列关于synflood攻击的说法错误的是&#xff08;B&#xff09; A.服务端由于连接队列被占满而不能对外服务 B.不但能攻击TCP服务&#xff0c;还能…

做个家务,让我搞懂了 Linux I/O 模型

I/O 其实就是 input 和 output&#xff08;输入输出&#xff09; 在计算机操作系统中对应数据流的输入与输出&#xff0c;在 Linux 中&#xff0c;既有文件的 I/O&#xff0c;也有网络 I/O 无论是文件 I/O 还是网络 I/O&#xff0c;其传输过程都是类似的 今天我们以文件 I/O…

【Unity学习笔记】UnrealToUnity教程:(网上购买的素材导入Unreal+插件转Unity)

【Unity学习笔记】UnrealToUnity教程&#xff1a; 最近想从Unreal那边化点缘借借素材&#xff0c;没想到踩到一个大坑 一&#xff0c;素材导入Unreal 这个教程比较多&#xff0c;根据素材的来源&#xff0c;传送门是以下这几个&#xff1a; 1.项目之间互相迁移&#xff0c;不…

PGL 系列(一)图的基础概念

一、图知识 图的节点间是否有方向,可将图分为无向图与有向图; 图的边是否有权重,可以将图分为无权图和有权图; 图的边和点是否具有多种类型,可以将图分为同构图和异构图 度是图上一节点,其边的条数 邻居指的是图上一节点的相邻节点 无向图:临界矩阵就是

值得一看,阿里又杀疯了开源内部“M9”级别全彩版分布式实战笔记

学习是一种基础性的能力。然而&#xff0c;“吾生也有涯&#xff0c;而知也无涯。”&#xff0c;如果学习不注意方法&#xff0c;则会“以有涯随无涯&#xff0c;殆矣”。 学习就像吃饭睡觉一样&#xff0c;是人的一种本能&#xff0c;人人都有学习的能力。我们在刚出生的时候…

汽车以太网物理层IOP自动化测试解决方案

解决方案功能介绍 该解决方案的测试目的是定义一组测试&#xff0c;以确保使用具有100 BASE-T1或1000BASE-T1能力的PHYs的多个设备之间的互操作性&#xff0c;要求每个PHY能够在给定的时间限制内建立稳定的链路&#xff0c;能够可靠地监视当前链路状态并将其传递到上层&#x…

CRMEB电商商城系统阿里云ECS服务器安装配置搭建教程文档

阿里云ECS服务器配置教程&#xff1a;一、推荐使用宝塔Linux面板&#xff0c;简单好用。二、放行服务器端口。详细步骤&#xff1a; 1.在阿里云控制台&#xff0c;云服务器ECS&#xff0c;实例&#xff0c;点击最右侧更多→实力状态→停止。 2.选择停止&#xff0c;点击确定. …

Java培训堆 Heap永久区

永久区 永久存储区是一个常驻内存区域&#xff0c;用于存放JDK自身所携带的 Class,Interface 的元数据&#xff0c;也就是说它存储的是运行环境必须的类信息&#xff0c;被装载进此区域的数据是不会被垃圾回收器回收掉的&#xff0c;关闭 JVM 才会释放此区域所占用的内存。 J…

Cross-modal Pretraining in BERT(跨模态预训练)

BERT以及BERT后时代在NLP各项任务上都是强势刷榜&#xff0c;多模态领域也不遑多让…仅在2019 年就有8篇的跨模态预训练的论文挂到了arxiv上…上图是多篇跨模态论文中比较稍迟的VL-BERT论文中的比较图&#xff0c;就按这个表格的分类&#xff08;Architecture&#xff09;整理这…

[LeetCode 1781]所有子字符串美丽值之和

题目描述 题目链接&#xff1a;所有子字符串美丽值之和 一个字符串的 美丽值 定义为&#xff1a;出现频率最高字符与出现频率最低字符的出现次数之差。 比方说&#xff0c;“abaacc” 的美丽值为 3 - 1 2 。 给你一个字符串 s &#xff0c;请你返回它所有子字符串的 美丽值…

微信小程序框架(五)-全面详解(学习总结---从入门到深化)

目录 UI框架_TDesign 引入TDesign UI框架_TDesign组件 Rate 评分 Toast 轻提示 UI框架_Vant 使用方式 引入组件 UI框架_Vant组件 Overlay 遮罩层 Grid 宫格 Card 商品卡片 UI框架_TDesign TDesign 企业级设计体系&#xff08;前端UI组件库&#xff09; 地址&#xff1a;…

影响项目进度的因素有哪些?如何跟踪项目计划?

影响项目进度的因素&#xff1a; 1、项目经理能力不足 一名优秀的项目经理&#xff0c;要对制定项目计划、安全、质量、成本管理等各项工作都熟悉&#xff0c;也要能管理好项目团队。 如果无法有效管理团队、没有完全掌握项目管理方法等都是项目经理能力不足的表现&#xff…

跳槽一次能涨多少?今天见识到跳槽天花板。

2022年马上就快结束了&#xff0c;最近内卷严重&#xff0c;各种跳槽裁员&#xff0c;相信很多小伙伴也在准备明年的金三银四的面试计划。 在此分享一套学习笔记 / 面试手册&#xff0c;年后跳槽的朋友可以好好刷一刷&#xff0c;还是挺有必要的&#xff0c;它几乎涵盖了所有的…

软件测试必须要加班吗?

我在面试时一般会问面试官&#xff1a;“公司每次迭代周期多久&#xff1f;加班多么&#xff1f;”这个问题一般都是看这家公司的上班节奏怎么样&#xff0c;加班多不多&#xff0c;自己能不能扛住加班的压力。一般来说&#xff0c;刚进公司&#xff0c;需要对环境、业务、代码…

10:30面试,10:31就出来了 ,问的实在是太...

从外包出来&#xff0c;没想到算法死在另一家厂子 自从加入这家公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到8月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资直降30%&#xff0c;顿时有吃不起饭的赶脚。 好在有个兄弟内推…

CMake中target_include_directories的使用

CMake中target_include_directories命令用于向target中添加包含目录,其格式如下: target_include_directories(<target> [SYSTEM] [AFTER|BEFORE]<INTERFACE|PUBLIC|PRIVATE> [items1...][<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 指定在编译给定targ…