微信小程序开发之路(五)

简介: 很久没有写有关微信小程序的文章了,正好最近在做小程序项目,也遇到了一些小问题,与大家分享一下。一、如何在video、map和canvas等组件上定位元素?在小程序中video、map和canvas等组件是原生组件,层级是最高的,我们无法通过CSS样式来控制其层级,但是有时候我们确实需要在这些组件上定位元素,比如文字和图片。

很久没有写有关微信小程序的文章了,正好最近在做小程序项目,也遇到了一些小问题,与大家分享一下。

一、如何在video、map和canvas等组件上定位元素?

在小程序中video、map和canvas等组件是原生组件,层级是最高的,我们无法通过CSS样式来控制其层级,但是有时候我们确实需要在这些组件上定位元素,比如文字和图片。

这时我们就需要用到小程序自身提供的cover-view和cover-image组件,我们可以分别用它们来放置文字和图片,需要注意的是,cover-view中只能嵌套cover-view和cover-image。例如:

/* WXSS */
video{ position: relative; width: 100%;}
.text{ position: absolute; bottom: 60rpx; left: 0; right: 0; text-align: center;}
<!--WXML-->
<video id="myVideo" src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400">
  <cover-view class='text'>视频文字</cover-view>
</video>

最终效果如下:

我们可以看到,video标签中可以嵌套想要在视频上显示的文字,我们需要使用cover-view标签(非view标签)。同样的,如果想要在视频上显示图片,我们就需要使用cover-image标签(非image标签)。当然,有时候我们可能想要嵌套更多文字和图片,那么同样的只能使用cover-view和cover-image组件,否则文字和图片就被视频组件遮挡,无法显示出来。

例如下面的写法就是错误的:

<!--WXML-->
<video id="myVideo" src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400">
  <cover-view class='text'><text>视频文字</text></cover-view>
</video>

可能你在开发工具上也能正常显示文字,但真机测试你就会发现文字不见了。

正确方式应该同样是将text标签替换成cover-view标签。

<cover-view class='text'><cover-view>视频文字</cover-view></cover-view>

二、video组件固定定位,当滑动页面时,视频会跟着页面滚动如何解决?

最好的解决办法就是不要对video组件进行固定定位,而是直接使用正常的文档流布局方式。换句话说,我们可以使用scroll-view组件来替代view组件。例如:

/* WXSS */
#myVideo{ display: block; width: 100%; height: 32vh;}
.text{ height: 68vh;}
<!--WXML-->
<video id="myVideo" src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400"></video>
<scroll-view class='text' scroll-y>
  <view>想要学习更多前端知识,欢迎关注微信公众号:前端微站。</view> 
</scroll-view>

需要注意以下两点:

① video组件与scroll-view组件高度之和应为屏幕总高度,可以直接使用 vh 单位来实现。
② scroll-view组件需要加上scroll-y属性。

三、自定义组件无法正常使用怎么办?

一般来说遇到自定义组件无法正常使用(组件未正常渲染)有以下几种可能的原因:

① 开发工具或调试基础库版本过低
② 未配置组件

③ 未引入组件

它们分别对应的解决方案很简单,关键是我们得找出具体问题出在哪里。以上三个问题分别对应的解决方案如下:

1. 升级开发工具或更改调试基础库版本

升级开发工具可以直接上微信小程序官方平台上下载

更改调试基础库版本可以按以下步骤操作:

① 点击开发工具右上角的“详情”按钮

② 点击按钮展开后找到“调试基础库”,并下拉选择最新基础库(即最顶部选项)

2. 在组件的json文件中添加以下配置代码

{
  "component": true
}

其实就是将该模块声明为组件。

3. 在需要引入组件的页面json文件中添加以下配置代码

{
  "usingComponents": {
    "component-tag-name": "path/to/the/custom/component"
  }
}

这步当然就是为了引入组件啦,其中component-tag-name代表组件所在路径,"path/to/the/custom/component"只是示例,需要替换成实际的组件路径。

相关推荐:

微信小程序开发之路(一)
微信小程序开发之路(二)
微信小程序开发之路(三)
微信小程序开发之路(四)

相关文章
|
13天前
|
小程序 JavaScript
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
本文介绍了使用 Taro 和 Vue 创建轮播组件的两种方法:一是通过 `&lt;swiper&gt;` 实现,二是利用 Nut UI 的 `&lt;nut-swiper&gt;` 组件实现。
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
|
5天前
|
移动开发 小程序 JavaScript
uni-app开发微信小程序
本文详细介绍如何使用 uni-app 开发微信小程序,涵盖需求分析、架构思路及实施方案。主要功能包括用户登录、商品列表展示、商品详情、购物车及订单管理。技术栈采用 uni-app、uView UI 和 RESTful API。文章通过具体示例代码展示了从初始化项目、配置全局样式到实现各页面组件及 API 接口的全过程,并提供了完整的文件结构和配置文件示例。此外,还介绍了微信授权登录及后端接口模拟方法,确保项目的稳定性和安全性。通过本教程,读者可快速掌握使用 uni-app 开发微信小程序的方法。
19 3
|
13天前
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
本文介绍了Taro中`useShareAppMessage`的使用方法,需在页面配置`enableShareAppMessage: true`并重新编译。
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
|
13天前
|
小程序 数据安全/隐私保护
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
在 `src/http` 目录下创建 `request.ts` 文件,并配置 Taro 的网络请求方法 `Taro.request`,支持多种 HTTP 方法并处理数据加密。
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
|
13天前
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,上传文件
本文介绍如何在Taro项目中使用Nut UI的`&lt;nut-uploader/&gt;`组件实现图片上传功能,并通过示例代码展示了自定义上传逻辑的方法。
Taro@3.x+Vue@3.x+TS开发微信小程序,上传文件
|
13天前
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,根据系统主题展示不同样式(darkMode)
本文介绍如何在Taro项目中配置深色模式。通过在`src/app.config.ts`设置`darkmode`选项和在`theme.json`中定义主题变量,可以实现跟随系统主题的界面风格切换。
Taro@3.x+Vue@3.x+TS开发微信小程序,根据系统主题展示不同样式(darkMode)
|
13天前
|
小程序 开发者
Taro@3.x+Vue@3.x+TS开发微信小程序,使用自定义tabBar
本文介绍了如何在Taro项目中实现自定义tabBar。首先,在`app.config.ts`中设置`custom: true`并配置`tabBar`。
Taro@3.x+Vue@3.x+TS开发微信小程序,使用自定义tabBar
|
4天前
|
小程序 前端开发 JavaScript
开发支付宝小程序的思路
【9月更文挑战第7天】本文介绍了一种在支付宝小程序中实现网页抓取的方法,通过云函数或自建后端服务来解析外部网页的标题、描述和图片。具体步骤包括:用户输入链接,小程序调用云函数抓取并解析网页内容,最后将结果返回并在前端展示。文中详细介绍了使用 Node.js 的云函数实现过程,包括代码示例和小程序前端页面的实现方法。通过这种方式,可以显著提升链接分享的用户体验。
13 0
|
20天前
|
小程序 JavaScript Java
微信小程序的后端开发需要使用什么语言?
【8月更文挑战第22天】微信小程序的后端开发需要使用什么语言?
221 65
|
20天前
|
小程序 JavaScript 前端开发
微信小程序开发时数据是否是双向数据绑定的
微信小程序开发时数据是否是双向数据绑定的

热门文章

最新文章