uni-app(优医咨询)项目实战 - 第2天

学习目标:

  • 掌握WXML获取节点信息的用法

  • 知道如何修改 uni-ui 扩展组件的样式

  • 掌握 uniForm 表单验证的使用方法

  • 能够在 uni-app 中使用自定义字体图标

一、uni-app 基础知识

uni-app 是组合了 Vue 和微信小程序的相关技术知识,要求大家同时俱备 Vue 和原生小程序的开发基础。

1.1 节点信息

在此再次强调一下原生小程序中并没有 DOM 操作相关的内容,也因此在 uni-app 中也是无法对 DOM 进行操作的,但在实际开发过程中是有获取节点信息,如宽高、位置等信息的需求的,这一节就来学习在 uni-app 中如何获取节点的宽高及位置等信息。

1.1.1 创建查询器

在网页中可以直接使用 document.querySelector 来查找 DOM 节点,在 uni-app 或小程序中则没有这样一个方法,取而代之的是调用 API uni.createSelectorQuery 创建一个查询实例(查询器),进而调用该实例的方法来查询页面中的节点元素。

<!-- pages/wiki/index.vue -->
<script setup> import { onMounted } from 'vue' // 在生命周期中调用 onMounted(() => {   // 节点查询器(实例)   const selectorQuery = uni.createSelectorQuery()console.log(selectorQuery)})
</script>
​
<template> <view class="container">   <view class="box">获取这个盒子的宽高、位置等信息</view> </view>
</template>
​
<style lang="scss"> page {   padding: 30rpx;}
​ .box {   width: 300rpx;   height: 300rpx;   margin-top: 40rpx;   background-color: pink;}
</style>
​

注意事项:

  1. 需要在 onMountedonReady 生命周期中调用

  2. 选择自定义组件中的节点时,需要调用 in 方法并传入当前页面实例(后面会例子来演示)

1.1.2 节点对象

在查询节点时分成 3 种情形,获取到的结果为节点信息对象(NodesRef)

  • select 根据选择器的要求,只查找符合条件的第一个节点,结果是一个对象

  • selectAll 根据选择器的要求,查找符合条件的全部节点,结果是一个对象数组

  • selectViewport 特指获取视口,查找视口的尺寸、滚动位置等信息

<script setup> import { onMounted } from 'vue'
​ onMounted(() => {   // 1. 节点查询器(实例)   const selectorQuery = uni.createSelectorQuery()      // 2. 查找节点
​   // 2.1 查找单个节点   selectorQuery.select('.box').boundingClientRect((rect) => {     // 获取宽高和位置     console.log(rect)   })
​   // 2.2 查找全部节点   selectorQuery.selectAll('.box').boundingClientRect((rects) => {     // 获取宽高和位置     console.log(rects)   })
​   // 2.3 查找视口信息   selectorQuery.selectViewport().boundingClientRect((rect) => {     console.log(rect)   })
​   // 3. 执行请求结果   selectorQuery.exec()})
</script>
​
<template> <view class="container">   <view class="box">获取这个盒子的宽高、位置等信息</view>   <view class="box"> 类选择器名称一样的另一个盒子 </view> </view>
</template>
​
<style lang="scss"></style>

注意事项:

  1. 不执行 exec 方法,将获取不到任何的节点信息

  2. 有多个查询步骤时,在结尾只执行一次 exec 即可,避免重复查询

  3. exec 方法代表执行结束,因此务必保证最后再调用

1.1.3 节点信息

节点信息对象中包含了若干的信息,根据需要调用不同的方法进行获取:

  1. boundingClientRect 节点的宽高及位置,长度单位是 px

  2. scrollOffset 节点滚动的位置,仅支持 scroll-view 组件或页面( viewport)

<script setup> import { onMounted } from 'vue'
​ onMounted(() => {   // 1. 节点查询器(实例)   const selectorQuery = uni.createSelectorQuery()      // 2. 查找节点
​// 省略了部分代码
​   // 2.3 查找视口信息   selectorQuery.selectViewport().boundingClientRect((rect) => {     console.log(rect)   })      selectorQuery.selectViewport().scrollOffset((offset) => {     console.log(offset)   })
​   // 3. 执行请求结果   selectorQuery.exec()})
</script>
​
<template> <view class="container">   <view class="box">获取这个盒子的宽高、位置等信息</view>   <view class="box"> 类选择器名称一样的另一个盒子 </view> </view>
</template>
​
<style lang="scss"></style>

注意事项:

  1. 在获取元素的位置时是按已定位的祖先元素为参考,即大家平时理解的“子绝父相”方式

  2. 元素未定位时参视口(viewport)为参考

1.2 自定义组件

在 uni-app 中自定义组件的定义与 Vue 组件基本一致,不要参照原生小程序方式来定义组件。

1.2.1 easycom组件规范

easycom 是 uni-app 自定义的加载组件的规范,按该规范定义的组件可以实现自动导入,其规范要求如下:

  1. 安装在项目根目录的 components 目录下,并符合 components/组件名称/组件名称.vue

  2. 安装在 uni_modules 目录下,路径为 uni_modules/插件ID/components/组件名称/组件名称.vue

大家回忆一下扩展组件 uni ui 是不是就是在没有引入的情况下自动导入的,其原因就是符合 easycom 组件规范。

1.2.2 custom-tabs

标签页(tabs)的切换在开发中是经常会使用到的一种交互方式,【优医咨询】项目就用到这种交互方式,接下来我们自已封装一个标签页组件,按着 easycom 的规范创建组件目录及文件:

接下来将上次课中完成的 tabs 部分的布局代码迁移到当前组件中:

<view class="custom-tabs"> <view class="custom-tabs-bar active">   <text class="tabbar-text">关注</text> </view> <view class="custom-tabs-bar">   <text class="tabbar-text">推荐</text> </view> <view class="custom-tabs-bar">   <text class="tabbar-text">护肤</text> </view> <view class="custom-tabs-bar">   <text class="tabbar-text">减脂</text> </view> <view class="custom-tabs-bar">   <text class="tabbar-text">饮食</text> </view> <view class="custom-tabs-cursor"></view>
</view>
// 自定义tabbar
.custom-tabs { display: flex; position: relative; padding: 0 30rpx;
}
​
.custom-tabs-bar { height: 80rpx; line-height: 80rpx

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

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

相关文章

程序包的实例和删除

目录 程序包的实例 我们创建一个程序包&#xff0c;内容包含上一章所创建的存储过程和函数 程序包的删除 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 程序包的实例 下面就通过具体范例来演示程序包的使用。 我们…

pyqt 按钮常用格式Qss设置

pyqt 按钮常用格式Qss设置 QSS介绍按钮常用的QSS设置效果代码 QSS介绍 Qt Style Sheets (QSS) 是 Qt 框架中用于定制应用程序界面样式的一种语言。它类似于网页开发中的 CSS&#xff08;Cascading Style Sheets&#xff09;&#xff0c;但专门为 Qt 应用程序设计。使用 QSS&am…

【论文阅读笔记】Frequency Perception Network for Camouflaged Object Detection

1.论文介绍 Frequency Perception Network for Camouflaged Object Detection 基于频率感知网络的视频目标检测 2023年 ACM MM Paper Code 2.摘要 隐蔽目标检测&#xff08;COD&#xff09;的目的是准确地检测隐藏在周围环境中的目标。然而&#xff0c;现有的COD方法主要定位…

信息系统项目管理师0083:项目管理的重要性(6项目管理概论—6.2项目基本要素—6.2.2项目管理的重要性)

点击查看专栏目录 文章目录 6.2.2项目管理的重要性 6.2.2项目管理的重要性 项目管理就是将知识、技能、工具与技术应用于项目活动&#xff0c;以满足项目的要求。通过合理地应用并整合特定的项目管理过程&#xff0c;项目管理使组织能够有效并高效地开展项目。 有效的项目管理能…

可靠的智能组网系统有哪些?

天联是一种可靠的智能组网解决方案&#xff0c;在现今复杂网络环境下具备明显的优势。本文将介绍天联组网以及其所带来的诸多优势。 天联组网的优势 天联组网具有以下优势&#xff0c;使其成为一种可靠的智能组网方案&#xff1a; 无网络限制&#xff1a;天联组网能够解决复杂…

每日一题(力扣213):打家劫舍2--dp+分治

与打家劫舍1不同的是它最后一个和第一个会相邻&#xff0c;事实上&#xff0c;从结果思考&#xff0c;最后只会有三种&#xff1a;1 第一家不被抢 最后一家被抢 2 第一家被抢 最后一家不被抢 3 第一和最后一家都不被抢 。那么&#xff0c;根据打家劫舍1中的算法 我们能算出在i…

excel办公系列-图表元素及其作用

Excel图表元素及其作用 Excel图表由各种元素组成&#xff0c;每个元素都有其特定的作用&#xff0c;可以帮助我们更清晰地传达数据信息。下面将介绍Excel图表中常见的一些元素及其作用&#xff0c;并附上相关截图。 原始数据 月份 网站访问量 (万次&#xff09; 销售额 (万…

FIFO Generate IP核使用——Data Counts页详解

在Vivado IDE中&#xff0c;当看到一个用于设置数据计数选项的选项卡时&#xff0c;需要注意的是&#xff0c;尽管某些选项值可能因为当前的配置而显示为灰色&#xff08;即不可选或已禁用&#xff09;&#xff0c;但IDE中显示的有效范围值实际上是你可以选择的真实值。即使某些…

《十二》Qt各种对话框之FileDialog文件对话框及QMessageBox 消息对话框

QFileDialog 对话框 选择打开一个文件 若要打开一个文件&#xff0c;可调用静态函数 QFileDialog::getOpenFileName()&#xff0c;“打开一个文件”按钮的响应代码如下&#xff1a; void Dialog::on_btnOpen_clicked() { //选择单个文件QString curPathQDir::currentPath()…

基于React实现B站评论区

今天继续来学习一下React&#xff0c;使用React实现B站评论区&#xff0c;如下图&#xff1a; 在使用React开发类似B站评论区的功能时&#xff0c;我们需要考虑以下几个关键点来构建一个基本的评论系统&#xff1a; 1. 设计组件结构 首先&#xff0c;设计组件结构是关键。至少…

Unity Animation--动画剪辑

Unity Animation--动画剪辑 动画剪辑 动画剪辑是Unity动画系统的核心元素之一。Unity支持从外部来源导入动画&#xff0c;并提供创建动画剪辑的能力使用“动画”窗口在编辑器中从头开始。 外部来源的动画 从外部来源导入的动画剪辑可能包括&#xff1a; 人形动画 运动捕捉…

css---浮动知识点精炼汇总

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 浮动简单理解与介绍 这是我们普通的页面标签效果。 每个标签从上到下依次排列。 浮动顾名思义就是让这个标签飞翔起来。 他飞起来后&#xff0c;后面的标签来到他的位置上。 而浮动的标签就会显示在标签的上面。…

设计模式之MVC模式

在编程江湖闯荡多年&#xff0c;我手中打磨过的设计模式多如繁星&#xff0c;但论及经典与实用&#xff0c; MVC&#xff08;Model-View-Controller&#xff09;模式 绝对是个中翘楚&#xff01;它不仅是Web应用的骨架&#xff0c;更是软件架构的智慧结晶。今天&#xff0c;咱们…

LeetCode-网络延迟时间(Dijkstra算法)

每日一题 今天刷到一道有关的图的题&#xff0c;需要求单源最短路径&#xff0c;因此使用Dijkstra算法。 题目要求 有 n 个网络节点&#xff0c;标记为 1 到 n。 给你一个列表 times&#xff0c;表示信号经过 有向 边的传递时间。 times[i] (ui, vi, wi)&#xff0c;其中 …

Mybatis-Plus学习:快速入门、核心功能、扩展功能、插件功能

文章目录 MybatisPlus快速入门快速开始常见注解常见配置 核心功能条件构造器&#xff08;Wrapper&#xff09;自定义SQLService接口基本用法基础业务接口复杂业务接口Lamda查询Lamda更新批量新增 扩展功能代码生成代码生成器快速开发插件 静态工具逻辑删除枚举处理器JSON处理器…

万界星空科技商业开源MES+项目合作+商业开源低代码平台

今天我想和大家分享的是一套商业开源的 MES制造执行管理系统带源码。对于制造业而言&#xff0c;MES 是一个至关重要的系统&#xff0c;它可以帮助企业提高生产效率、优化资源利用、提高产品质量&#xff0c;从而增强市场竞争力。 什么是 MES&#xff1f; MES 是指通过计算机技…

# notepad++ 编辑器英文版,如何打开自动换行

notepad 编辑器英文版&#xff0c;如何打开自动换行 在Notepad中&#xff0c;如果你想要开启自动换行功能&#xff0c;可以按照以下步骤操作&#xff1a; 1、打开 Notepad 编辑器。 1.1. 依次点击菜单栏中的【视图】&#xff0c;英文版对应【View】。1.2. 在【视图】下拉菜单…

商务谈判技巧与口才书籍有哪些类型

商务谈判技巧与口才书籍有哪些类型&#xff08;3篇&#xff09; 商务谈判技巧与口才书籍的类型丰富多样&#xff0c;以下从三个角度进行介绍&#xff1a; **篇&#xff1a;基础理论与策略类书籍 这类书籍通常深入剖析谈判的本质&#xff0c;系统介绍谈判的原理、技巧和策略。…

量子城域网建设设备系列(二):量子密钥管系统(KMS)

在上文介绍光量子交换机的文章中我们提到&#xff0c;量子保密通信网络的通道切换是由量子密钥管理系统&#xff08;Key Management System&#xff0c;KMS&#xff09;给光量子交换机下发信道切换指令&#xff0c;实现整个网络中任意两对量子密钥分发终端的量子信道互联互通&a…

【跟马少平老师学AI】-【神经网络是怎么实现的】(九)长短期记忆网络

一句话归纳&#xff1a; 1&#xff09;RNN也会存在梯度消失的问题。 2&#xff09;同一句话&#xff0c;对于不同的任务&#xff0c;句中不同的词起的作用也不一样。 3&#xff09;LSTM&#xff08;长短期记忆&#xff09;子网络&#xff1a; 门&#xff0c;让输入经过运算&…