微信小程序实例代码解读

以微信 小程序开发工具给的示例代码为例:

主页代码:

index.wxml

这个文件是一个微信小程序页面的 WXML 结构,主要功能是展示一个快速开始教程的步骤和内容。

源代码:

<!--index.wxml-->
<view class="container"><view class="main"><view class="title font_title_1">快速开始</view><view class="sub_title">欢迎使用云开发!本页将带你了解如何使用云开发提供的能力快速开发小程序。</view><view class="ability_container"><view class="ability_title">你将学习到</view><view class="ability_item" wx:for="{{ knowledgePoints }}" wx:for-item="point" wx:key="id">{{ point.title }}</view></view><view class="title font_title_2">5分钟上手教程</view><view class="sub_title">我们将会使用常用的云开发能力,快速实现一个简单的商品列表页面。无需购买服务器,即可快速开发出后台服务、读取数据库、存取文件、调用微信开放服务。页面最终效果如下图所示。</view><view class="image_container"><image src="../../images/list-database.png" mode="widthFix" /></view><view class="btn-view-demo-page with-margin" bind:tap="gotoGoodsListPage">查看页面</view><view class="seperator" /><view class="step_container" wx:for="{{ steps }}" wx:key="id" wx:for-item="step"><view id="step_{{ step.id }}" data-step="{{ step.id }}" class="step_title"><view class="step_id_container"><view class="step_id_mark">NO.</view><view class="step_id_content">0{{ step.id }}</view></view><view class="font_title_2">{{ step.title }}</view></view><view class="step_content"><block wx:for="{{ step.contents }}" wx:for-item="item" wx:key="index"><view wx:if="{{ item.type === 'text' }}" class="text_zone"><rich-text nodes="<p style='line-height: 26px;'>{{ item.content }}</p>" /></view><view wx:if="{{ item.type === 'code' }}" class="code_zone"><image class="btn-copy" data-code="{{ item.content }}" bind:tap="copyCode" src="../../images/icons/copy.png" /><rich-text nodes="<pre style='overflow: scroll;'>{{ item.content }}</pre>" /></view><view wx:if="{{ item.type === 'image' }}" class="image_zone"><image src="../../images/{{ item.content }}" mode="widthFix" /></view></block></view><view wx:if="{{ step.showJumpButton }}" class="btn-view-demo-page" bind:tap="gotoGoodsListPage">查看页面</view><view class="seperator" /></view><view class="bottom-tip">至此,我们完成了一个带分享功能的小程序,利用了云开发的云函数、云数据库、云存储等能力,无需服务器即可快速完成较为复杂的功能。</view><view  class="bottom-tip">此外,云开发还提供了云模板、云后台、云托管等更多高级能力,可点击下方按钮前往查看。</view><view class="button" bind:tap="discoverCloud">探索云开发更多功能</view></view>
</view>

1、<view class="container">创建一个容器视图,用于包裹整个页面内容。

2、<view class="main">:创建一个主要内容区域的视图。

3、<view class="title font_title_1">快速开始</view>一个只包含“快速开始”的视图

4、<view class="sub_title">

      欢迎使用云开发!本页将带你了解如何使用云开发提供的能力快速开发小程序。

    </view>

一个包含文本的视图

5、<view class="ability_container">   创建一个容器视图,用于展示知识点列表。

6、<view class="ability_title">你将学习到</view>   创建一个容器视图,用于展示知识点列表。

7、<view class="ability_item" wx:for="{{ knowledgePoints }}" wx:for-item="point" wx:key="id">   使用 wx:for 指令循环渲染知识点列表,每个知识点使用 ability_item 类样式。

8、{{ point.title }}标题类型

9、<view class="title font_title_2">5分钟上手教程</view>   创建一个容器视图,文本标题“5分钟上手教程”

10、<view class="sub_title">

      我们将会使用常用的云开发能力,快速实现一个简单的商品列表页面。无需购买服务器,即可快速开发出后台服务、读取数据库、存取文件、调用微信开放服务。页面最终效果如下图所示。

    </view>

文本容器视图,用于呈现文本

11、<view class="image_container">

      <image src="../../images/list-database.png" mode="widthFix" />

    </view>

容器视图,用于呈现图片

12、<view class="btn-view-demo-page with-margin" bind:tap="gotoGoodsListPage">查看页面</view>

容器视图,呈现按钮,链接到goodslist的page界面

13、<view class="step_container" wx:for="{{ steps }}" wx:key="id" wx:for-item="step">  容器视图,使用 wx:for 指令循环渲染步骤列表、展示步骤标题。

14、<view id="step_{{ step.id }}" data-step="{{ step.id }}" class="step_title">  容器视图,每个id对应不同步骤的区域

15、<view class="step_id_container">

          <view class="step_id_mark">NO.</view>

          <view class="step_id_content">0{{ step.id }}</view>

        </view>

每个区域的标题部分

16、<view class="font_title_2">{{ step.title }}</view>  容器视图,对应每部分的标题:

17、

      <view class="step_content"><block wx:for="{{ step.contents }}" wx:for-item="item" wx:key="index"><view wx:if="{{ item.type === 'text' }}" class="text_zone"><rich-text nodes="<p style='line-height: 26px;'>{{ item.content }}</p>" /></view><view wx:if="{{ item.type === 'code' }}" class="code_zone"><image class="btn-copy" data-code="{{ item.content }}" bind:tap="copyCode" src="../../images/icons/copy.png" /><rich-text nodes="<pre style='overflow: scroll;'>{{ item.content }}</pre>" /></view><view wx:if="{{ item.type === 'image' }}" class="image_zone"><image src="../../images/{{ item.content }}" mode="widthFix" /></view></block></view>

不同部分的代码部分,用于展示不同步骤的内容

18、<view wx:if="{{ step.showJumpButton }}" class="btn-view-demo-page" bind:tap="gotoGoodsListPage">查看页面</view>

      <view class="seperator" />

视图内容,按钮链接,对应最终的页面内容

19、<view class="bottom-tip">

      至此,我们完成了一个带分享功能的小程序,利用了云开发的云函数、云数据库、云存储等能力,无需服务器即可快速完成较为复杂的功能。

    </view>

    <view  class="bottom-tip">此外,云开发还提供了云模板、云后台、云托管等更多高级能力,可点击下方按钮前往查看。</view>

文本内容

20、<view class="button" bind:tap="discoverCloud">探索云开发更多功能</view>  链接对应其他页面

constants.js

/*** 快速开始教程知识点*/
const QuickStartPoints = [{ id: '1', title: '无需搭建服务器,快速构建小程序' },{ id: '2', title: '免登录、免鉴权调用微信开放服务' },
];function highlightText(content) {return `<span> \`${content}\` </span>`;
}/*** 快速开始教程步骤*/
const QuickStartSteps = [{id: '1',title: '创建列表页面并初始化数据',contents: [{type: 'text',content: `编辑教程内置的页面${highlightText('miniprogram/pages/goods-list/index.js')},在${highlightText('Page')}的${highlightText('data')}配置项中添加初始化数据${highlightText('goodsList')},代码如下所示。该页面将用于展示商品列表。`,},{type: 'code',content: `
Page({data: {goodsList: [{_id: '1',title: '商品1',price: 1,}],},
})`,},{type: 'text',content: '保存文件,查看页面,可以看到列表渲染出初始数据。',},{type: 'image',content: 'list-init.png',}],showJumpButton: true,},{id: '2',title: '实现并部署一个后台接口',contents: [{type: 'text',content: `编辑教程内置的后台接口文件${highlightText('cloudfunctions/quickstartFunctions/fetchGoodsList/index.js')},使用下面代码覆盖文件内容,返回一些模拟的商品列表数据。`,},{type: 'code',content: `
const cloud = require('wx-server-sdk');
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });
exports.main = async (event, context) => {return {dataList: [{ _id: '1', title: '微信气泡徽章', price: 1800 },{ _id: '2', title: '微信地球鼠标垫', price: 5800 },{ _id: '3', title: '微信黄脸大贴纸', price: 500 }],}
};`},{type: 'text',content: `保存文件后,在${highlightText('cloudfunctions/quickstartFunctions')}目录右键,选择【上传并部署-云端安装依赖】,等待进度完成,即完成后端接口的开发与部署。`,},{type: 'image',content: 'function_deploy.png',},{type: 'text',content: `注:新用户部署时会提示创建云开发环境。<span style="color: red;">新用户可免费开通云开发环境并试用。</span>`,},{type: 'image',content: 'create_env.png',},{type: 'text',content: `新用户开通环境后在${highlightText('cloudfunctions')}目录右键,选择当前环境为新建的环境。`,},{type: 'image',content: 'env-select.png',},],showJumpButton: false,},{id: '3',title: '小程序端调用后台接口',contents: [{type: 'text',content: `编辑列表页${highlightText('miniprogram/pages/goods-list/index.js')},在 Page 下新增一个方法${highlightText('fetchGoodsList')},用于调用后端接口,并在 Page 的${highlightText('onLoad')}生命周期调用该方法:`,},{type: 'code',content: `
async fetchGoodsList() {this.setData({ isLoading: true });const res = await wx.cloud.callFunction({name: 'quickstartFunctions',data: { type: 'fetchGoodsList' },});const goodsList = res?.result?.dataList || [];this.setData({isLoading: false,goodsList});
},`},{type: 'code',content: `
onLoad() {this.fetchGoodsList();
},`,},{type: 'text',content: `保存文件后,查看列表页,可以看到调用后台接口获取到了模拟数据并正确显示。`,},{type: 'image',content: 'list-scf.png',}],showJumpButton: true,},{id: '4',title: '从数据库中读取真实数据',contents: [{type: 'text',content: '前面步骤中,后台接口返回的是模拟数据,实际开发中,我们需要利用数据库实现持久存储,下面我们来通过云开发数据库能力实现这个效果。',},{type: 'text',content: `点击开发者工具顶部的【云开发】按钮,打开云开发控制台,选中【数据库】,新增一个商品集合命名${highlightText('goods')},并添加若干条记录。注:本示例中,集合中的记录请保证具有${highlightText('title')}和${highlightText('price')}字段。`,},{type: 'image',content: 'scf-enter.png',},{type: 'image',content: 'database_add.png',},{type: 'text',content: `编辑后台接口代码${highlightText('cloudfunctions/quickstartFunctions/fetchGoodsList/index.js')},用下面代码覆盖文件内容,用于读取数据库中数据:`,},{type: 'code',content: `
const cloud = require('wx-server-sdk');
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });const db = cloud.database();exports.main = async (event, context) => {const result = await db.collection('goods').skip(0).limit(10).get();return {dataList: result?.data,};
};`,},{type: 'text',content: `保存文件后,在${highlightText('cloudfunctions/quickstartFunctions')}目录右键,选择【上传并部署-云端安装依赖】,重新部署后台接口。`,},{type: 'text',content: '查看页面,可以看到正确获取数据库中的数据并显示在列表中。',},{type: 'image',content: 'list-database.png',}],showJumpButton: true,},{id: '5',title: '调用开放接口生成小程序码',contents: [{type: 'text',content: '实际小程序开发中,我们通常会对小程序进行传播分享。下面我们利用免鉴权的云调用能力实现小程序码。',},{type: 'text',content: `编辑教程内置的接口文件${highlightText('cloudfunctions/quickstartFunctions/genMpQrcode/index.js')},用以下代码覆盖文件内容。该接口用于生成小程序码图片并上传到云存储保存。`,},{type: 'code',content: `
const cloud = require('wx-server-sdk');cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });exports.main = async (event, context) => {const pagePath = event.pagePath;// 获取小程序二维码的bufferconst resp = await cloud.openapi.wxacode.get({path: pagePath,});const { buffer } = resp;// 将图片上传云存储空间const upload = await cloud.uploadFile({cloudPath: String(pagePath).replaceAll('/', '_') + '.png',fileContent: buffer});return upload.fileID;
};`,},{type: 'text',content: `保存文件后,在${highlightText('cloudfunctions/quickstartFunctions')}目录右键,选择【上传并部署-云端安装依赖】,部署该接口。`,},{type: 'text',content: `编辑商品列表页${highlightText('miniprogram/pages/goods-list/index.js')},在 Page 配置中新增一个方法${highlightText('generateMPCode')},用于调用接口获取小程序码:`,},{type: 'code',content: `
async generateMPCode() {wx.showLoading();const resp = await wx.cloud.callFunction({name: 'quickstartFunctions',data: {type: 'genMpQrcode',pagePath: 'pages/goods-list/index',}});this.setData({ codeModalVisible: true, codeImageSrc: resp?.result });wx.hideLoading();
},`},{type: 'text',content: `保存文件后,在商品列表页点击【分享】按钮,会调用${highlightText('generateMPCode')}方法获取小程序码并弹框显示。`,},{type: 'image',content: 'list-share.png',}],showJumpButton: true,},
];module.exports = {QuickStartPoints,QuickStartSteps,
}

这个文件定义了快速开始教程的知识点列表和步骤列表的数据结构,以及一个用于高亮显示文本的辅助函数。其他文件可以通过引入这个文件来获取这些数据,用于渲染页面内容。

1、const QuickStartPoints = [

  { id: '1', title: '无需搭建服务器,快速构建小程序' },

  { id: '2', title: '免登录、免鉴权调用微信开放服务' },

];

学习内容部分的文档,及对应的id、title

2、function highlightText(content) {

  return `<span> \`${content}\` </span>`;

}

高亮文本的方法,供后续调用

3、

const QuickStartSteps = [{id: '1',title: '创建列表页面并初始化数据',contents: [{type: 'text',content: `编辑教程内置的页面${highlightText('miniprogram/pages/goods-list/index.js')},在${highlightText('Page')}的${highlightText('data')}配置项中添加初始化数据${highlightText('goodsList')},代码如下所示。该页面将用于展示商品列表。`,},{type: 'code',content: `
Page({data: {goodsList: [{_id: '1',title: '商品1',price: 1,}],},
})`,},{type: 'text',content: '保存文件,查看页面,可以看到列表渲染出初始数据。',},{type: 'image',content: 'list-init.png',}],showJumpButton: true,},{id: '2',title: '实现并部署一个后台接口',contents: [{type: 'text',content: `编辑教程内置的后台接口文件${highlightText('cloudfunctions/quickstartFunctions/fetchGoodsList/index.js')},使用下面代码覆盖文件内容,返回一些模拟的商品列表数据。`,},{type: 'code',content: `
const cloud = require('wx-server-sdk');
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });
exports.main = async (event, context) => {return {dataList: [{ _id: '1', title: '微信气泡徽章', price: 1800 },{ _id: '2', title: '微信地球鼠标垫', price: 5800 },{ _id: '3', title: '微信黄脸大贴纸', price: 500 }],}
};`},{type: 'text',content: `保存文件后,在${highlightText('cloudfunctions/quickstartFunctions')}目录右键,选择【上传并部署-云端安装依赖】,等待进度完成,即完成后端接口的开发与部署。`,},{type: 'image',content: 'function_deploy.png',},{type: 'text',content: `注:新用户部署时会提示创建云开发环境。<span style="color: red;">新用户可免费开通云开发环境并试用。</span>`,},{type: 'image',content: 'create_env.png',},{type: 'text',content: `新用户开通环境后在${highlightText('cloudfunctions')}目录右键,选择当前环境为新建的环境。`,},{type: 'image',content: 'env-select.png',},],showJumpButton: false,},{id: '3',title: '小程序端调用后台接口',contents: [{type: 'text',content: `编辑列表页${highlightText('miniprogram/pages/goods-list/index.js')},在 Page 下新增一个方法${highlightText('fetchGoodsList')},用于调用后端接口,并在 Page 的${highlightText('onLoad')}生命周期调用该方法:`,},{type: 'code',content: `
async fetchGoodsList() {this.setData({ isLoading: true });const res = await wx.cloud.callFunction({name: 'quickstartFunctions',data: { type: 'fetchGoodsList' },});const goodsList = res?.result?.dataList || [];this.setData({isLoading: false,goodsList});
},`},{type: 'code',content: `
onLoad() {this.fetchGoodsList();
},`,},{type: 'text',content: `保存文件后,查看列表页,可以看到调用后台接口获取到了模拟数据并正确显示。`,},{type: 'image',content: 'list-scf.png',}],showJumpButton: true,},{id: '4',title: '从数据库中读取真实数据',contents: [{type: 'text',content: '前面步骤中,后台接口返回的是模拟数据,实际开发中,我们需要利用数据库实现持久存储,下面我们来通过云开发数据库能力实现这个效果。',},{type: 'text',content: `点击开发者工具顶部的【云开发】按钮,打开云开发控制台,选中【数据库】,新增一个商品集合命名${highlightText('goods')},并添加若干条记录。注:本示例中,集合中的记录请保证具有${highlightText('title')}和${highlightText('price')}字段。`,},{type: 'image',content: 'scf-enter.png',},{type: 'image',content: 'database_add.png',},{type: 'text',content: `编辑后台接口代码${highlightText('cloudfunctions/quickstartFunctions/fetchGoodsList/index.js')},用下面代码覆盖文件内容,用于读取数据库中数据:`,},{type: 'code',content: `
const cloud = require('wx-server-sdk');
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });const db = cloud.database();exports.main = async (event, context) => {const result = await db.collection('goods').skip(0).limit(10).get();return {dataList: result?.data,};
};`,},{type: 'text',content: `保存文件后,在${highlightText('cloudfunctions/quickstartFunctions')}目录右键,选择【上传并部署-云端安装依赖】,重新部署后台接口。`,},{type: 'text',content: '查看页面,可以看到正确获取数据库中的数据并显示在列表中。',},{type: 'image',content: 'list-database.png',}],showJumpButton: true,},{id: '5',title: '调用开放接口生成小程序码',contents: [{type: 'text',content: '实际小程序开发中,我们通常会对小程序进行传播分享。下面我们利用免鉴权的云调用能力实现小程序码。',},{type: 'text',content: `编辑教程内置的接口文件${highlightText('cloudfunctions/quickstartFunctions/genMpQrcode/index.js')},用以下代码覆盖文件内容。该接口用于生成小程序码图片并上传到云存储保存。`,},{type: 'code',content: `
const cloud = require('wx-server-sdk');cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });exports.main = async (event, context) => {const pagePath = event.pagePath;// 获取小程序二维码的bufferconst resp = await cloud.openapi.wxacode.get({path: pagePath,});const { buffer } = resp;// 将图片上传云存储空间const upload = await cloud.uploadFile({cloudPath: String(pagePath).replaceAll('/', '_') + '.png',fileContent: buffer});return upload.fileID;
};`,},{type: 'text',content: `保存文件后,在${highlightText('cloudfunctions/quickstartFunctions')}目录右键,选择【上传并部署-云端安装依赖】,部署该接口。`,},{type: 'text',content: `编辑商品列表页${highlightText('miniprogram/pages/goods-list/index.js')},在 Page 配置中新增一个方法${highlightText('generateMPCode')},用于调用接口获取小程序码:`,},{type: 'code',content: `
async generateMPCode() {wx.showLoading();const resp = await wx.cloud.callFunction({name: 'quickstartFunctions',data: {type: 'genMpQrcode',pagePath: 'pages/goods-list/index',}});this.setData({ codeModalVisible: true, codeImageSrc: resp?.result });wx.hideLoading();
},`},{type: 'text',content: `保存文件后,在商品列表页点击【分享】按钮,会调用${highlightText('generateMPCode')}方法获取小程序码并弹框显示。`,},{type: 'image',content: 'list-share.png',}],showJumpButton: true,},
];

文本、代码、id等内容,是在index.wxml中各步骤的内容,可以调用。

3、module.exports = {

  QuickStartPoints,

  QuickStartSteps,

}

导出 QuickStartPoints 和 QuickStartSteps 两个常量,供其他文件引用。

index.js

这个文件主要定义了页面的初始数据、事件处理函数和页面跳转函数,用于实现快速开始教程的交互逻辑。

const { envList } = require("../../envList");
const { QuickStartPoints, QuickStartSteps } = require("./constants");Page({data: {knowledgePoints: QuickStartPoints,steps: QuickStartSteps,},copyCode(e) {const code = e.target?.dataset?.code || '';wx.setClipboardData({data: code,success: () => {wx.showToast({title: '已复制',})},fail: (err) => {console.error('复制失败-----', err);}})},discoverCloud() {wx.switchTab({url: '/pages/examples/index',})},gotoGoodsListPage() {wx.navigateTo({url: '/pages/goods-list/index',})},
});

1、const { envList } = require("../../envList");  引入环境配置文件,用于获取当前环境的相关信息。

2、const { QuickStartPoints, QuickStartSteps } = require("./constants");  引入常量文件,用于获取快速开始教程的知识点和步骤数据。

3、data: {

    knowledgePoints: QuickStartPoints,

    steps: QuickStartSteps,

  },  初始化页面的数据,包括知识点列表和步骤列表

4、copyCode(e) {...}:   定义一个事件处理函数,用于复制代码到剪贴板。

5、const code = e.target?.dataset?.code || '';  从事件对象中获取要复制的代码内容

6、wx.setClipboardData({。。。})  调用微信小程序API,将代码复制到剪贴板

7、success: () => {

        wx.showToast({

          title: '已复制',

        })

      },

      fail: (err) => {

        console.error('复制失败-----', err);

      }

如果复制成功,展示提示框;如果复制失败,打印错误日志。

8、discoverCloud() {

    wx.switchTab({

      url: '/pages/examples/index',

    })

  },

定义一个函数,用于跳转到实例页面,函数内调用微信小程序API,切换到指定的标签页面

9、gotoGoodsListPage() {

    wx.navigateTo({

      url: '/pages/goods-list/index',

    })

  },

定义一个函数,用于跳转到实例页面,函数内调用微信小程序API,导航到指定的标签页面

index.wxss

这个文件定义了页面的布局、字体、颜色等,与wxml结构文件和JavaScript逻辑文件配合,构成一个完整的微信小程序页面

/**index.wxss**/page {/* padding-top: 54rpx; */padding-bottom: 60rpx;background-color: #fff;
}.container {width: 100%;height: 100%;align-items: center;
}.main {width: 90%;display: flex;flex-direction: column;font-family: PingFang SC;
}.image_container {margin-top: 48rpx;display: flex;justify-content: center;
}.title {margin-bottom: 20rpx;margin-top: 40rpx;
}.sub_title {font-size: 28rpx;color: rgba(0, 0, 0, 0.6);line-height: 52rpx;
}/* 一级标题字体 */
.font_title_1 {font-weight: 500;color: #000;font-size: 48rpx;
}/* 二级标题字体 */
.font_title_2 {color: #000;font-size: 32rpx;font-weight: 500;font-family: "PingFang SC";
}/* 内容字体 */
.font_content {font-size: 32rpx;color: rgba(0, 0, 0, 0.6);line-height: 52rpx;
}.seperator {border-top: 2rpx solid #dcdcdc;margin-top: 60rpx;margin-bottom: 60rpx;
}.ability_container {border: 2rpx solid #e5e5e5;padding: 48rpx;box-sizing: border-box;border-radius: 20rpx;background-color: #f5f5f5;display: flex;flex-direction: column;gap: 16rpx;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);margin-top: 48rpx;
}.ability_title {font-size: 36rpx;font-weight: 500;color: #000;
}.ability_item {color: rgba(0, 0, 0, 0.6);font-size: 28rpx;
}.ability_item::before {content: "";display: inline-block;width: 12rpx;height: 12rpx;border-radius: 50%;background-color: rgba(0, 0, 0, 0.6);margin-right: 12rpx;
}.step_container {box-sizing: border-box;border-radius: 10rpx;display: flex;flex-direction: column;
}.step_title,
.step_content {padding: 8rpx;background-color: #fff;
}.step_title {display: flex;align-items: center;gap: 16rpx;
}.step_id_container {display: flex;font-size: 28rpx;align-items: center;height: 36rpx;line-height: 36rpx;font-weight: 400;
}.step_id_mark {background-color: rgba(0, 0, 0, 0.5);border-radius: 2px 0px 0px 2px;color: #fff;height: 40rpx;line-height: 40rpx;width: 70rpx;text-align: center;
}.step_id_content {width: 50rpx;text-align: center;background-color: #fff;color: rgba(0, 0, 0, 0.5);border: 1px solid rgba(0, 0, 0, 0.5);border-left: none;box-sizing: border-box;border-radius: 0px 2px 2px 0px;
}.step_content {background-color: #fff;color: #666;font-size: 28rpx;word-break: break-all;
}.text_zone {margin-top: 20rpx;margin-bottom: 48rpx;color: rgba(0, 0, 0, 0.6);
}.code_zone {background-color: #0E190E;color: rgba(255, 255, 255, 0.7);border-radius: 12rpx;padding: 0rpx 32rpx;box-shadow: 0 6px 8px rgba(0, 0, 0, 0.15);position: relative;margin-bottom: 48rpx;
}.image_zone {display: flex;justify-content: center;margin-bottom: 48rpx;
}.btn-copy {border-radius: 12rpx;height: 40rpx;width: 40rpx;position: absolute;right: 20rpx;bottom: 20rpx;
}.bottom-tip {margin-top: 10rpx;color: rgba(0, 0, 0, 0.9);font-size: 28rpx;line-height: 52rpx;
}.button {width: 70%;text-align: center;margin: 40rpx auto 0 auto;color: white;border-radius: 5px;height: 80rpx;line-height: 80rpx;background-color: #07c160;
}.btn-view-demo-page {width: 100%;text-align: center;color: white;border-radius: 5px;font-size: 26rpx;padding: 16rpx 0rpx;box-sizing: border-box;border: 1px solid #07c160;color: #07c160;font-size: 32rpx;
}.with-margin {margin-top: 48rpx;
}

1、/**index.wxss**/   这是一个CSS注释,标识该文件是index的样式文件

2、page {

  /* padding-top: 54rpx; */

  padding-bottom: 60rpx;

  background-color: #fff;

}

选择器,定义了整个页面的样式,页面底部内边距为60rpx,北京颜色为白色。

3、.container {

  width: 100%;

  height: 100%;

  align-items: center;

}

选择器,定义了页面容器的样式,宽度和高度占满了整个页面,且子元素在容器内水平居中位置。

4、.main {

  width: 90%;

  display: flex;

  flex-direction: column;

  font-family: PingFang SC;

}

选择器,定义了主要内容区域的样式,宽度占90%,flex布局,子元素垂直排列,字体为PingFang SC

5、.image_container {

  margin-top: 48rpx;

  display: flex;

  justify-content: center;

}

选择器,定义了图片区域的样式,头部内边距为60rpx,flex布局,居中。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GAMES104:07游戏中渲染管线、后处理和其他的一切-学习笔记

文章目录 前言一&#xff0c;Ambient Occlusion环境光遮蔽1.1 Precomputed AO1.2 Screen Space Ambient Occlusion(SSAO)1.3 Horizon-based Ambient Occlusion(HBAO)1.4 Ground Truth-based Ambient Occlusion(GTAO)1.5 Rat-Tracing Ambient Occlusion 二&#xff0c;雾效2.1 D…

Spring——AOP前言(写一个小demo为了好学习AOP)

1.AOP的概念 1.1 AOP简单样例 我们来先通过一个例子来对AOP进行理解&#xff0c;这个例子就是有关Spring的事务的一个样例&#xff0c;有关Spring是怎么实现事务的&#xff0c;这个事务其实本质上就是对于我们代码的一个增强。废话不多说&#xff0c;上程序&#xff0c;请各位…

SOAP @WebService WSDL

SOAP & WebService & WSDL SOAP&#xff08;Simple Object Access Protocol&#xff09;WebService&#xff08;Web服务&#xff09;WSDL&#xff08;Web Services Description Language&#xff09; SOAP&#xff08;Simple Object Access Protocol&#xff09; **是一…

Ciallo~(∠・ω・ )⌒☆第十七篇 Ubuntu基础使用 其一

Ubuntu是一种基于Linux的操作系统&#xff0c;它是开源的、免费的&#xff0c;并且具有广泛的用户群体。 基本文件操作&#xff1a;Ubuntu使用命令行工具来进行文件操作。以下是一些常用的命令&#xff1a; 切换到用户主目录&#xff1a; cd ~ 切换到上级目录&#xff1a; cd .…

解密键盘输入:探索设备控制器的奥秘

流程初探 键盘是我们最常用的输入硬件设备之一。作为程序员&#xff0c;你知道当我们敲击键盘上的字母"A"时&#xff0c;操作系统会发生什么吗&#xff1f;下面我将简要介绍整个过程&#xff0c;以便你更容易理解为什么需要这些组件。 首先&#xff0c;让我们来看看…

Linux下 vim的用法

目录 前言 一、初始Vim 二、使用Vim 1.1命令模式 2.1底行模式 3.1插入模式 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 本篇文章会介绍vim的基本用法和为什么我们要学习vim。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供…

PumpkinRaising靶机

端口扫描 目录扫描 访问80端口&#xff0c; 在页面上面发现提到了一个Jack&#xff0c;可能是一个用户名 f12查看源码 找到一个页面 拼接访问 查看源码 发现一个注释 解密 是一个目录 /scripts/spy.pcap 访问&#xff0c;自动下载了一个文件 wireshark打开流量包 找到第一个s…

IndexError: list index out of range | 列表索引超出范围完美解决方法

IndexError: list index out of range &#x1f4c9; | 列表索引超出范围完美解决方法 IndexError: list index out of range &#x1f4c9; | 列表索引超出范围完美解决方法摘要 &#x1f4c4;引言 &#x1f680; 什么是 IndexError: list index out of range&#xff1f;&…

vba代码插入折线图

xqwertyy52152018139hi303533312015 Sub test()Set sht1 ThisWorkbook.Worksheets("示例")x sht1.Range("I1").Lefty sht1.Range("I1").Topw sht1.Range("N15").Width * 15h sht1.Range("N15").Height * 25Set ch1 s…

路径规划 | 基于改进蝙蝠算法的多无人机路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 路径规划 | 基于改进蝙蝠算法的多无人机路径规划&#xff08;Matlab&#xff09; 蝙蝠算法&#xff08;Bat Algorithm&#xff09;是一种基于自然界蝙蝠群体行为的启发式优化算法。该算法模拟了蝙蝠在寻找食物时的行为…

Github Copilot 使用技巧

&#x1f3af;目标读者 本文不包含如何安装 Github Copilot本文介绍了 Github Copilot 使用方法和一些技巧 本人已经使用 Github Copilot 2 年了&#xff0c;交了 3 次年费&#xff0c;每年 100$ 着实心痛&#xff0c;但是用着确实爽歪歪 但是感觉一直只用了一小部分功能&am…

技术证书认证-附考试答案-AIGC与大模型通识-英特尔大湾区科技创新中心证书认证

目录 课程简介 面向人群 考核步骤 试题答案 知孤云出岫主页 课程以及考试链接&#xff1a;AIGC与大模型通识 - 英特尔大湾区科技创新中心 【英特尔大湾区科技创新中心】公益新课《AIGC与大模型通识》上线官网&#xff01;首期结业认证进行中&#xff0c;提升AI应用技能&…

顶顶通呼叫中心中间件-通话之前录音配置方法(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-通话之前录音配置方法(mod_cti基于FreeSWITCH) 1、修改配置文件 点击配置文件 -> 点击vars -> 根据图中配置 -> 点击提交XML ->重新启动freeswitch 修改成true就是电话接通开始录音&#xff0c;修改成false就是通话之前开始录音。 <!--应…

微信小程序免费《短视频去水印》

分享一个uniapp开发的微信小程序免费《短视频去水印》小程序 <template><view class"content"><view class"area-wrap"><textarea name"" v-model"state.content" maxlength"800" id"" cols…

~Keepalived高可用集群~

一、Keepalived简介 是一个用于实现高可用性的解决方案&#xff0c;它主要应用于云主机的主备切换&#xff0c;以达到高可用性&#xff08;HA&#xff09;的目的。当主服务器发生故障无法对外提供服务时&#xff0c;动态将虚拟IP切换到备服务器&#xff0c;继续对外提供服务&a…

宏定义———C语言

*符号代表全部的意思*.i代表的是全部的点i文件 宏定义 &#xff1a; 1.定义&#xff1a; #define 宏名 常量功能&#xff1a;宏名代替常量&#xff0c;宏名要求全大写且见名知义 2.示例&#xff1a; #include <stdio.h> #define PI 3.14 #define Q 4 #define P QQi…

虚幻5|给武器添加碰撞检测与伤害

本章内容衔接上两章&#xff0c;需要完成上两章才能用本章内容 虚幻5|角色武器装备的数据库学习&#xff08;不只是用来装备武器&#xff0c;甚至是角色切换也很可能用到&#xff09;-CSDN博客虚幻5|普通攻击&#xff0c;使用接口更方便-CSDN博客 如有疑问&#xff0c;可访问…

利用EditPlus进行Json数据格式化

利用EditPlus进行Json数据格式化 git下载地址&#xff1a;https://github.com/michael-deve/CommonData-EditPlusTools.git (安装过editplus的直接将里面的json.js文件复制走就行) 命令&#xff1a;Cscript.exe /nologo “D:\Program Files (x86)\EditPlus 3\json.js” D:\P…

简单的敏感词提示功能

简单的敏感词提示功能 1. 需求 公司现在接到通知&#xff0c;部分接口的部分手动输入字段&#xff0c;需要新增敏感词报红提示&#xff0c;敏感词汇现在应该是7000多个左右&#xff0c;需要我们提供一个敏感词校验接口&#xff0c;如果前端输入敏感词&#xff0c;则前端提示出…

【网络】UDP回显服务器和客户端的构造,以及连接流程

文章目录 回显服务器&#xff08;Echo Server&#xff09;0. 构造方法1. 接收请求2. 根据请求计算响应3. 将响应写回客户端4. 完整代码 客户端&#xff08;Echo Client&#xff09;0. 构造方法1. 读取输入2. 构造一个 UDP 请求3. 从服务器读取响应4. 完整代码 服务器与客户端连…