web端-12宫格抽奖

实现效果:

html部分:

<div class="grid-container">
 // 循环渲染12个格子
 // rewardArr = [1,2,3,4,5,6,7,8,9,10,11,12] 循环数组自行定义
 <div v-for="(item,i) in rewardArr" :key= i :id="'box'+(i+1)" class="grid-item">
  <div class="item-name">{{item}}</div>
 </div>
 // 中间抽奖按钮
 <div class="center-button">
   <img class="start-btn" src="./halloween/strart.png">
   <div class="tiems">
    You have <span>0</span> times
   </div>
 </div>
</div>

css部分:

.grid-container {
    display: grid; // 直接利用 网格布局
    justify-content: center;
    gap: 4px; // 定义了网格线之间的间隔,即行与行之间以及列与列之间的间距
    width: 375px;
    margin-top: 24px; // 自行定义
}

.grid-item {
    width: 82px;
    height: 100px;
    font-size: 24px;
    background: linear-gradient( 0, #E7D6FF 0%, #FFFFFF 100%);
    border-radius: 10px 10px 10px 10px;
}

// 定义盒子顺时针顺序的位置
// 例:'grid-column: 4; grid-row: 2',即为第二行的第四个格子

#box1  { grid-column: 1; grid-row: 1;background: linear-gradient( 180deg, #FFFFFF 0%, #FFA0F6 100%);border-radius: 22px 10px 10px 10px; }
#box2  { grid-column: 2; grid-row: 1; }
#box3  { grid-column: 3; grid-row: 1; }
#box4  { grid-column: 4; grid-row: 1;background: linear-gradient( 180deg, #FFFFFF 0%, #FFA0F6 100%);border-radius: 10px 22px 10px 10px; }
#box5  { grid-column: 4; grid-row: 2; }
#box6  { grid-column: 4; grid-row: 3; }
#box7  { grid-column: 4; grid-row: 4;background: linear-gradient( 180deg, #FFFFFF 0%, #FFA0F6 100%);border-radius: 10px 10px 22px 10px; }
#box8  { grid-column: 3; grid-row: 4; }
#box9  { grid-column: 2; grid-row: 4; }
#box10 { grid-column: 1; grid-row: 4;background: linear-gradient( 180deg, #FFFFFF 0%, #FFA0F6 100%);border-radius: 10px 10px 10px 22px; }
#box11 { grid-column: 1; grid-row: 3; }
#box12 { grid-column: 1; grid-row: 2; }

.center-button {
  grid-column: 2 / span 2; // 跨越两列
  grid-row: 2 / span 2; // 跨越两行
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: #5A2B9B;
  border-radius: 10px 10px 10px 10px;
}

// 其余样式自行定义

实现原理:

主要是利用了display: grid属性的网格布局,

#box1...  grid-column和grid-row控制着12个格子的布局顺序

grid-column: 2 / span 2:定义了元素所在的网格列及其跨度。
2 表示元素将从第二列的起始边线开始放置。
span 2 表示元素将跨越两列的宽度。就是元素将占据从第二列的起始边线到第四列的结束边线的位置。

grid-row: 2 / span 2:定义了元素所在的网格行及其跨度。
2 表示元素将从第二行的起始边线开始放置。
span 2 表示元素将跨越两行的高度。就是元素将占据从第二行的起始边线到第四行的结束边线的位置。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值