第四章作业

本文介绍了如何在微信小程序中使用canvas组件绘制奥运五环图形,以及如何设计和实现书单页面和日期选择功能。展示了代码片段和界面设计,包括生命周期管理和数据绑定的运用。
摘要由CSDN通过智能技术生成

1、使用canvas组件五圈圈的绘制。

代码

js

Page({
  onReady() {
    const ctx = wx.createCanvasContext('olympic-rings');
 
    // 绘制蓝色圆环
    ctx.beginPath();
    ctx.arc(60, 60, 40, 0, 2 * Math.PI);
    ctx.setStrokeStyle('#0072bb');
    ctx.stroke();
 
    // 绘制黄色圆环
    ctx.beginPath();
    ctx.arc(110, 60, 40, 0, 2 * Math.PI);
    ctx.setStrokeStyle('#f4d942');
    ctx.stroke();
 
    // 绘制黑色圆环
    ctx.beginPath();
    ctx.arc(160, 60, 40, 0, 2 * Math.PI);
    ctx.setStrokeStyle('#000000');
    ctx.stroke();
 
    // 绘制绿色圆环
    ctx.beginPath();
    ctx.arc(85, 100, 40, 0, 2 * Math.PI);
    ctx.setStrokeStyle('#009e52');
    ctx.stroke();
 
    // 绘制红色圆环
    ctx.beginPath();
    ctx.arc(135, 100, 40, 0, 2 * Math.PI);
    ctx.setStrokeStyle('#ff6319');
    ctx.stroke();
 
    ctx.draw();
  }
})

json

{
  "navigationBarBackgroundColor": "#000000",
  "navigationBarTitleText": "趋势",
  "navigationBarTextStyle": "white",
  "backgroundTextStyle": "dark"
}

wxml

<canvas canvas-id="olympic-rings" style="width: 300px; height: 200px;margin: auto;"></canvas>
运行截图

2、使用相应组件,完成类似如图4-29所示的“书单”页面。

 

<view class="head">← 书单</view>
<!-- 上面的结构 -->
<view class="p1">
  <view class="p2">培养商业意识,走出生活,职场和事业的困境</view>
  <view class="p3">创新者是如何思考问题的?本书单包括了互联网,思维方式,商业,文案,市场,营销等方方面面,是在思维方式上的创新,略去传统商学院的教条</view>
</view>
<!-- 中间的结构 -->
<view class="shu">
  <view class="imgone" style="display: flex;">
   <image class="img1" src="../../images/ac.jpg"/>
    <view class="textone">
      <view class="text1">金字塔原理</view>
      <view class="text2">芭芭拉•明托(Barbara Minto)</view>
      <view class="text3">金字塔原理是一种重点突出、逻辑清晰、主次分明的逻辑思路、表达方式和规范动作……</view>
    </view>
  </view>
  <view class="xian"></view>
  <!-- 下面的结构 -->
  <view class="imgtwo" style="display: flex;">
    <image class="img2" src="../../images/ab.jpg"/>
    <view class="texttwo">
      <view class="text1">基业长青</view>
      <view class="text2">[美]吉姆•柯林斯,杰里•波勒斯</view>
      <view class="text3">《基业长青(珍藏版)》打破了旧有神话,提供了新颖的见解,并为那些有志于建立经得……</view>
    </view>
  </view>
</view>
.head{
  font-size: 60rpx;
  margin-top: 200rpx;
}
.p1{
  background-color: black;
}
.p2{
  color: aliceblue;
  text-align: center;
  font-size: 45rpx;
  padding: 30rpx;
}
.p3{
  color: aliceblue;
  padding: 20rpx;
}
/* 中间的样式 */
.shu{
  margin: 50rpx;
}
.textone{
  margin-left: 50rpx;
}
.img1{
  width: 600rpx;
  height: 200rpx;
}
.img2{
  width: 600rpx;
  height: 200rpx;
}
.text1{
  font-size: 70rpx;
  font-weight: 700;
}
.text2{
  font-size: 40rpx;
  font-weight: 600;
}
.xian{
  margin-top: 50rpx;
  border-bottom: 4px solid #ccc;
}
/* 下面的样式 */
.imgtwo{
  margin-top: 50rpx;
}
.texttwo{
  margin-left: 50rpx;
}

 运行截图

3.使用相应组件,完成类似如图4-30所示的“西安找拼车”小程序部分界面。 

<view style="text-align: left; font-size: 18px;background-color: black;color: white;width:100%;height:70px"><text style="position: absolute;top:30px;left:20px;">✖ 西安找拼车</text></view>
<view>
<view style="top:80px;left:10px;background-color: #BABABA;height:40px"><text style="position:absolute;top:80px;left: 10px;color: #474747;">联系方式(手机和微信至少填一项)</text></view>
<view style="font-size:18px;top:80px;left:10px;background-color: white;height:50px"><text style="position:absolute;top:120px;left: 15px;">称呼*</text><text style="position:absolute;top:120px;left:100px">请输入称呼</text></view>
<view style="border-bottom: 1px solid darkgrey;"></view>
<view style="font-size:18px;top:80px;left:10px;background-color: white;height:50px"><text style="position:absolute;top:180px;left: 15px;">手机号</text><text style="position:absolute;top:180px;left:100px">请输入手机号</text></view>
<view style="border-bottom: 1px solid darkgrey;"></view>
<view style="font-size:18px;top:80px;left:10px;background-color: white;height:50px"><text style="position:absolute;top:230px;left: 15px;">微信号</text><text style="position:absolute;top:230px;left:100px">请输入微信号</text></view>
<view style="border-bottom: 1px solid darkgrey;"></view>
<view style="height: 50px; background-color: darkgray;width:100%;position: absolute;top:262px"><text style="font-size: 16px;position: absolute;top:10px;left: 15px;color: #474747;">拼车信息</text></view>
<view style="border-bottom: 1px solid darkgrey;"></view>
<view style="font-size:18px;top:80px;left:10px;background-color: white;height:50px"><text style="position:absolute;top:330px;left: 15px;">出发地点*</text><text style="position:absolute;top:330px;left:110px">限七个字</text></view>
<view style="border-bottom: 1px solid darkgrey;"></view>
<view style="font-size:18px;top:80px;left:10px;background-color: white;height:50px"><text style="position:absolute;top:380px;left: 15px;">目的地*</text><text style="position:absolute;top:380px;left:110px">限七个字</text></view>
<view style="border-bottom: 1px solid darkgrey;"></view>
<view style="font-size:18px;top:80px;left:10px;background-color: white;height:50px"><text style="position:absolute;top:430px;left: 15px;">空座数*</text><text style="position:absolute;top:430px;left:110px">请输入空座数</text></view>
<view style="border-bottom: 1px solid darkgrey;"></view>
</view>

运行截图

4、“人生进程”是一款极简的小程序,它只有一个功能:就是计算一个人从出生到现在已经度过了多少个月,如图4-31所示。请编写程序完成此功能。

代码

index.wxml代码:

<view style="text-align: center;font-size: 16x;position: absolute;left: 120px;">中国阶段人均寿命900个月</view>
<view style="position: absolute;padding-top: 30px;font-size: 26px;left: 70px;">2005年8月至今155个月</view>
<view  style=" border:1px solid black;width: 100px;position: absolute;height: 20px;top: 92px;left: 85px;"></view>
<view style="position: absolute;padding-top: 90px;font-size: 16px;padding-left: 188px;"></view><view style="border: 5px;color: black;position: absolute;left: 240px;top: 92px;">换一个日期</view>
<view  style=" border:1px solid black;width: 100px;position: absolute;height: 20px;top: 92px;left: 230px;"></view>
<view style="position: absolute;padding-top: 90px;font-size: 16px;padding-left: 470px;"><view style="position: absolute;left: 100px;top: 92px;">清除记录</view></view>
<view><image src="./img/aa.jpeg" mode="" style="position: absolute;top:140px;left: 85px;height: 370px;width: 250px;"/></view>
<view style="position: absolute;top:540px;font-size: 18px;left:10px;">能把后面前行行走的机会抓住的人,十有八九都会成功</view>

index.wxss代码:

<view style="text-align: center;font-size: 16x;position: absolute;left: 120px;">中国阶段人均寿命900个月</view>
<view style="position: absolute;padding-top: 30px;font-size: 26px;left: 70px;">2005年8月至今155个月</view>
<view  style=" border:1px solid black;width: 100px;position: absolute;height: 20px;top: 92px;left: 85px;"></view>
<view style="position: absolute;padding-top: 90px;font-size: 16px;padding-left: 188px;"></view><view style="border: 5px;color: black;position: absolute;left: 240px;top: 92px;">换一个日期</view>
<view  style=" border:1px solid black;width: 100px;position: absolute;height: 20px;top: 92px;left: 230px;"></view>
<view style="position: absolute;padding-top: 90px;font-size: 16px;padding-left: 470px;"><view style="position: absolute;left: 100px;top: 92px;">清除记录</view></view>
<view><image src="./img/aa.jpeg" mode="" style="position: absolute;top:140px;left: 85px;height: 370px;width: 250px;"/></view>
<view style="position: absolute;top:540px;font-size: 18px;left:10px;">能把后面前行行走的机会抓住的人,十有八九都会成功</view>

app.json代码:

{
  "pages": [
    "pages/index/index",
    "pages/a/a",
    "pages/b/b",
    "pages/c/c"
  ],
  "window": {
    "backgroundColor": "#F6F6F6",
    "backgroundTextStyle": "light",
    "navigationBarBackgroundColor": "#F6F6F6",
    "navigationBarTitleText": "云开发 QuickStart",
    "navigationBarTextStyle": "black"
  },
  "tabBar": {
    "color": "#666666",
    "selectedColor": "#ff0000",
    "borderStyle":"black",
    "backgroundColor": "#ffffff",
    "list": [{
      "pagePath": "pages/index/index",
      "iconPath": "./pages/img/aa.jpeg",
      "selectedIconPath": "./pages/img/aa.jpeg",
      "text": "首页"
    },
    {
      "pagePath": "pages/a/a",
      "iconPath": "./pages/img/aa.jpeg",
      "selectedIconPath": "./pages/img/aa.jpeg",
      "text": "年月日"
    },
    {
      "pagePath": "pages/b/b",
      "iconPath": "./pages/img/aa.jpeg",
      "selectedIconPath": "./pages/img/aa.jpeg",
      "text": "静思"
    },
    {
      "pagePath": "pages/c/c",
      "iconPath": "./pages/img/aa.jpeg",
      "selectedIconPath": "./pages/img/aa.jpeg",
      "text": "关于"
    }]
  },
  "style": "v2",
  "componentFramework": "glass-easel",
  "lazyCodeLoading": "requiredComponents"
}

a.wxml代码:

<view class="one">中国现阶段人均寿命900个月</view>
<view class="two">{{year}}年{{month}}月至今{{yue}}个月</view>
<view class="button">
  <button class="but">换一个日期</button>
  <button>清除记录</button>
</view>
<picker-view 
  indicator-style="height:50px;"
  style="width:100%;height:300px;"
  value="{{value}}"
  bindchange="bindChange">
    <picker-view-column>
      <view 
        wx:for="{{years}}"
        style="line-height:50px">
        {{item}}年
      </view>
    </picker-view-column>
    <picker-view-column>
      <view 
        wx:for="{{months}}"
        style="line-height:50px">
        {{item}}月
      </view>
    </picker-view-column>
</picker-view> 
<view class="three">能把在面前行走的机会抓住的人,十有八九都会成功。</view>

a.js代码:

const date=new Date()
const years=[]
const months=[]
//定义年份
for(let i=1900;i<=2050;i++){
  years.push(i)
}
//定义月份
for(let i=1;i<=12;i++){
  months.push(i)
}
Page({
  data:{
    onTapButton:function(){
      console.log("换一个日期")
    },
    onTapButton:function(){
      console.log("清楚记录")
    },
    years:years,
    months:months,
    year:date.getFullYear(),
    month:date.getMonth()+1,
    value:[104,5],//定位到2004年6月
  },
  bindChange:function(e){
    const val=e.detail.value
    console.log(val);
    this.setData({
      year:this.data.years[val[0]],
      month:this.data.months[val[1]]
    })
  },
})

a.wxss代码:

.one{
  font-size: 20px;
  margin-top: 90px;
  text-align: center;
}
.two{
  font-size: 35px;
  text-align: center;
}
.button{
  padding: 20px 0 20px 0;
}
.but{
  float: left;
}
.three{
  font-size: 30px;
  margin-top: 90px;
  text-align: center;
}

运行结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值