【微信小程序】-- 自定义组件 -- 创建与引用 样式(三十二)

news2024/11/15 19:56:11

请添加图片描述

  • 💌 所属专栏:【微信小程序开发教程】

  • 😀 作  者:我是夜阑的狗🐶

  • 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!

  • 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘

文章目录

  • 前言
  • 一、组件的创建与引用
      • 1、创建组件
      • 2、引用组件
      • 3、局部引用组件
      • 4、全局引用组件
      • 5、全局引用与局部引用的使用
      • 6、组件和页面的区别
  • 二、自定义组件 - 样式
      • 1、组件样式隔离
      • 2、组件样式隔离的注意点
      • 3、修改组件的样式隔离选项
      • 4、styleIsolation 的可选值
  • 总结


前言

  大家好,又见面了,我是夜阑的狗🐶,本文是专栏【微信小程序开发教程】专栏的第32篇文章;
  今天开始学习微信小程序的第17天💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。
  专栏地址:【微信小程序开发教程】, 此专栏是我是夜阑的狗微信小程序开发过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
  如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。


一、组件的创建与引用

  前面对学习到的页面导航、页面事件和wxs脚本等相关内容进行了一个总结。接下来就来学习小程序中的自定义组件 – 创建与引用。话不多说,让我们原文再续,书接上回吧。

请添加图片描述

1、创建组件

  在微信小程序中创建组件可分为以下三步:

  • Step 1、项目的根目录中,鼠标右键,创建 components 文件夹。
  • Step 2、然后在新建的 components 文件夹上创建组件名文件夹,这里以 test1 为例。
  • Step 3、最后在 test1 文件上鼠标右键,点击“新建 Component,输入组件的名称之后回车,会自动生成组件对应的 4 个文件,后缀名分别为 .js.json.wxml.wxss

在这里插入图片描述
  注意:为了保证目录结构的清晰,建议把不同的组件,存放到单独目录中。

2、引用组件

  创建完组件之后,接下来就要去进行使用,首先对组件进行引用,组件的引用方式分为“局部引用”和“全局引用”,顾名思义:

  • 局部引用:组件只能在当前被引用的页面内使用。
  • 全局引用:组件可以在每个小程序页面中使用。

3、局部引用组件

  在页面的 .json 配置文件中引用组件的方式,叫做“局部引用”。采用键值对方式进行引用,具体代码如下所示:

contact.json

  引入组件

{
  "usingComponents": {
    "my-test1": "/components/test1/test1"
  }
}

contact.wxml

  使用组件

<view></view>
<my-test1></my-test1>

  可以来看一下运行效果:

在这里插入图片描述

  注意:由于组件是局部引用的,所以在别的页面进行调用该组件的时候是不会生效的。

4、全局引用组件

  如果一个一个页面都要这样调用该组件,那就太麻烦了。这里就可以把该组件进行全局引用供全部页面使用。在 app.json 全局配置文件中引用组件的方式,叫做“全局引用”。具体代码如下:

app.json

  创建 usingComponents 节点并引用组件。

{
  "pages":[
	...
  ],
  "window":{
	...
  },
  "usingComponents":{
    "my-test1": "/components/test1/test1"
  },

  这样在全部页面都可以调用该组件,这里以 message 页面为例,就能发现 message 页面可以调用该组件了,实际运行如下所示:

在这里插入图片描述

5、全局引用与局部引用的使用

  根据组件的使用频率和范围,来选择合适的引用方式,如下表所示:

引用方式使用范围
全局引用如果某组件在多个页面中经常被用到
局部引用如果某组件只在特定的页面中被用到

6、组件和页面的区别

  从表面来看,组件和页面都是由 .js.json.wxml.wxss 这四个文件组成的。但是,组件和页面的 .js 与
.json 文件有明显的不同:

区别组件页面
.json需要声明 “component”: true 属性不需声明
.js调用的是 Component() 函数调用的是 Page() 函数
事件处理函数需要定义到 methods 节点中只要与 data 平级位置即可

二、自定义组件 - 样式

1、组件样式隔离

  默认情况下,自定义组件的样式只对当前组件生效,不会影响到组件之外的UI 结构,如图所示:

请添加图片描述

  • 组件 1 的样式不会影响组件 2 的样式。
  • 组件 2 的样式不会影响小程序页面的样式。
  • 小程序页面的样式不会影响组件 1 和 2 的样式。

  这样做好处就是: 防止外界的样式影响组件内部的样式以及组件的样式破坏外界的样式。

2、组件样式隔离的注意点

  • app.wxss 中的全局样式对组件无效。

  首先定义一个全局样式,页面和组件进行调用,具体代码如下所示:

app.wxss

.g-csh-red-test{
  color: red;
}

message.wxml

  在页面调用全局样式。

<text class="g-csh-red-test">pages/message/message.wxml</text>
<view></view>
<my-test1></my-test1>

test1.wxml

  在组件调用全局样式。

<text class="g-csh-red-test">components/test/test1.wxml</text>

  可以发现只有页面上全局样式是生效的,来看一下运行效果:

在这里插入图片描述

  • 只有 class 选择器会有样式隔离效果,id 选择器、属性选择器、标签选择器不受样式隔离的影响。

  这里对全局样式的字体进行设置,具体代码如下所示:

app.wxss

.g-csh-red-test{
  color: red;
}

  可以看得到组件跟页面字体都变小了,可以来看一下运行效果:

在这里插入图片描述

  这样直接修改页面和组件的样式,在开发过程中风险很大,所以建议:在组件和引用组件的页面中建议使用 class 选择器,不要使用 id、属性、标签选择器!

3、修改组件的样式隔离选项

  默认情况下,自定义组件的样式隔离特性能够防止组件内外样式互相干扰的问题。但有时,我们希望在外界能
够控制组件内部的样式,此时,可以通过 styleIsolation 修改组件的样式隔离选项,用法有以下两种:

方法一:
  在组件的 js 文件中新增如下配置:

Component({
  options:{
    styleIsolation: "isolated"
  },
})

方法二:
  在组件的 json 文件中新增如下配置:

{
	"styleIsolation": "isolated"
}

  一般情况方法一使用的比较多一点。

4、styleIsolation 的可选值

  这里以方法一为例,来对 styleIsolation 属性进行设置,具体属性如下所示:

可选值默认值描述
isolated表示启用样式隔离,在自定义组件内外,
使用 class 指定的样式将不会相互影响
apply-shared表示页面 wxss 样式将影响到自定义组件,
但自定义组件 wxss 中指定的样式不会影响页面
shared表示页面 wxss 样式将影响到自定义组件,
自定义组件 wxss 中指定的样式也会影响页面和其他设置了 apply-sharedshared 的自定义组件

test1.js

  将组件和页面的样式设置为相互影响。

Component({
  options:{
    styleIsolation: "shared"
  },
})

test1.wxss

  对文本进行加粗。

.g-csh-red-test {
  font-weight: bold;
}

  此时可以发现,页面的文本也加粗了且组件上文本也变成红色了,说明组件和页面的样式现在是相互影响的,可以来看一下实际运行效果:

在这里插入图片描述


总结

  感谢观看,这里就是自定义组件 – 创建与引用&样式的介绍,如果觉得有帮助,请给文章点个赞吧,让更多的人看到。🌹 🌹 🌹

在这里插入图片描述

  也欢迎你,关注我。👍 👍 👍

  原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。🎉

更多专栏订阅:

  • 😀 【LeetCode题解(持续更新中)】
  • 🚝 【Java Web项目构建过程】
  • 💛 【微信小程序开发教程】
  • 【JavaScript随手笔记】
  • 🤩 【大数据学习笔记(华为云)】
  • 🦄 【程序错误解决方法(建议收藏)】
  • 🚀 【软件安装教程】



订阅更多,你们将会看到更多的优质内容!!

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

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

相关文章

信创国产化替代势在必行,FTP有替代产品吗?

自2018年开始&#xff0c;由于国外对IT技术发展的限制&#xff0c;在“华为、中兴事件”催化下&#xff0c;我国信创进入快速推广期。信创的产业庞大&#xff0c;涉及基础硬件&#xff08;芯片、服务器等&#xff09;、基础软件&#xff08;操作系统、数据库、中间件等&#xf…

QT使用QListWidget显示多张图片

Qt系列文章目录 文章目录Qt系列文章目录前言一、QListWidget 和 QListView 的差异二、显示效果1.操作工作区界面1.主界面头文件2. 主界面实现界面2.左边图片目录展示界面1.图片目录头文件2.图片目录实现文件2.属性窗口区1.属性窗口头文件2.属性窗口实现文件3 源码下载前言 QLi…

【安卓软件】KMPlayer-一款完美的媒体播放器 可以播放所有格式的字幕和视频

KM PlayerKM Player是一款未编码的视频播放器&#xff0c;让您无需编码即可方便地播放各种格式的视频&#xff0c;并为您的新体验添加了字幕支持、视频播放速度和手势等功能。KMPlayer 拥有美观和直观的设计&#xff0c;让您可以更方便地管理和播放视频&#xff01;功能高品质视…

电流分段校准原理与步骤

分段电流校准是一种校准电流传感器的方法。 传感器不可避免地存在误差&#xff0c;这些误差可能来自于不同方面&#xff0c;例如温度漂移、零点漂移和灵敏度漂移等。 在精确测量电流的应用中&#xff0c;这些误差可能会导致测量结果不准确。 因此&#xff0c;对电流传感器进行校…

100种思维模型之认知资源思思维模型-030

我们常说&#xff0c;一个人永远也赚不到自己认知以外的钱&#xff0c;这话的确很有道理&#xff0c;被无数人所推崇。 由此&#xff0c;不难看出&#xff0c;认知在我们的生活起着多么关键的作用。 你的认知层次越高&#xff0c;范围越广&#xff0c;就意味着你这个人所处的阶…

vue - vue使用腾讯api进行定位获取,绘制地图、标点、搜索、路线规划

章节目录1&#xff0c;前言2&#xff0c;准备3&#xff0c;开始引入api4&#xff0c;vue组件中使用 - 获取定位5&#xff0c;绘制地图和标点6&#xff0c;关键字搜索功能7&#xff0c;驾车线路规划8&#xff0c;演示组件中的全部代码9&#xff0c;参考链接1&#xff0c;前言 首…

Vue项目本地开发集成引入https

问题描述 本地项目开发中用到的接口是https &#xff0c;本地http会请求不到数据 案例使用采用的vue-cli开发&#xff0c;所以需要针对这两种方式启动https 问题处理 1.首先是需要配置一个证书,使用mkcert 进行配置证书 2.在vue-cli 中进行修改package.json、vue.config.js 中进…

Leetcode.828 统计子串中的唯一字符

题目链接 Leetcode.828 统计子串中的唯一字符 Rating &#xff1a; 2034 题目描述 我们定义了一个函数 countUniqueChars(s)来统计字符串 s中的唯一字符&#xff0c;并返回唯一字符的个数。 例如&#xff1a;s "LEETCODE"&#xff0c;则其中 "L", "…

【Mysql】查询数据库,行转列,mapper.xml中查询条件的写法

目录 一、用mysql脚本建表二、现有以下三个实体对应三张表&#xff0c;其关联关系如下三、行转列的sql语句四、对应的mapper.xml写法五、输入某一关键字&#xff0c;查找车牌号或车名包含该关键字的车辆用or六、总结&#xff1a;用GROUP_CONCAT实现行转列一、用mysql脚本建表 …

compose系列教程-6.实现图文列表,添加点击事件

每个行添加点击事件&#xff0c;可以使用Clickable组件。在Clickable组件的onClick参数中&#xff0c;您可以指定要在用户单击行时执行的操作。下面是一个示例代码&#xff1a; Composable fun ImageTextList(imageTextList: List<ImageTextItem>, onItemClick: (ImageTe…

机器学习学习记录1:基本术语和假设空间

基本术语机器学习正是这样一门学科&#xff0c;它致力于研究如何通过计算的手段&#xff0c;利用经 验来玫善系统自身的性能在计算机系统中&#xff0c;"经验"通常以"数据"形式存 在&#xff0c;因此&#xff0c;机器学习所研究的主要内容&#xff0c;是关…

数据仓库的设计思想

数据仓库设计 知识点01&#xff1a;设计大纲与学习目标 #内容大纲1、数据仓库基础知识&#xff08;回顾&#xff09;什么是数仓为什么有数仓数仓的特点是什么OLTP和OLAP系统区别&#xff08;数据库和数仓的区别&#xff09;2、数仓系统的架构与核心流程核心1&#xff1a;ETL核…

mybatis(二)

mybatis练习---2种方式 能够使用映射配置文件实现CRUD操作 能够使用注解实现CRUD操作 配置文件CRUD就是把sql语句写到配置文件中&#xff0c;注解CRUD就是吧sql语句写到注解上。 一、配置文件实现CRUD 如上图所示产品原型&#xff0c;里面包含了品牌数据的 查询 、 按条件查…

使用ControlNet 控制 Stable Diffusion

本文将要介绍整合HuggingFace的diffusers 包和ControlNet调节生成文本到图像&#xff0c;可以更好地控制文本到图像的生成 ControlNet是一种通过添加额外条件来控制扩散模型的神经网络结构。它提供了一种增强稳定扩散的方法&#xff0c;在文本到图像生成过程中使用条件输入&…

【工具使用】STM32CubeMX-基础使用篇

一、概述 无论是新手还是大佬&#xff0c;基于STM32单片机的开发&#xff0c;使用STM32CubeMX都是可以极大提升开发效率的&#xff0c;并且其界面化的开发&#xff0c;也大大降低了新手对STM32单片机的开发门槛。     本文主要面向初次接触STM32CubeMX的同学&#xff0c;大…

垃圾回收:垃圾数据如何自动回收

有些数据被使用之后&#xff0c;可能就不再需要了&#xff0c;我们把这种数据称为垃圾数据。如果这些垃圾数据一直保存在内存中&#xff0c;那么内存会越用越多&#xff0c;所以我们需要对这些垃圾数据进行回收&#xff0c;以释放有限的内存空间 不同语言的垃圾回收策略 通常…

「中华田园敏捷开发」,是老板无能还是程序员无力?

敏捷开发一直都是无数程序员的追求&#xff0c;也被被视为“开发者的福音”&#xff0c;但显然敏捷开发在中国落地的专业度还不够&#xff0c;以至于出现了“中华田园敏捷”的说法&#xff0c;什么叫“中华田园敏捷开发”&#xff1f; 简单点说&#xff1a;中华田园敏捷开发的…

异常(C++)

文章目录1. 概念1.1 C语言处理错误机制1.2 C异常机制throw表达式try...catch语句例子2. 抛出异常2.1 栈展开栈展开的例子2.2 栈展开过程中对象被自动销毁2.3 析构函数与异常内存泄漏2.4 异常对象3. 捕获异常3.1 捕获子类异常3.2 异常的重新抛出4. 异常安全4.2 例子不抛出异常保…

VIT(vision transformer)onnx模型解析

背景&#xff1a;transformer在CV领域的应用论文下载链接&#xff1a;https://arxiv.org/abs/2010.11929Pytorch实现代码&#xff1a; pytorch_classification/vision_transformer(太阳花的小绿豆博主实现的代码)有一些大神在研究关于CNNtransformer或者纯用transformer实现。原…

北邮22信通:你是不是在looking for……那串代码?(2)第三章单链表

相信有了第二章顺序表的基础&#xff0c;小伙伴们学习第三章链表应该会轻松一点吧 目录 类模板下的单链表 1.1书上干净完整代码&#xff08;无增改、适合自己动手实验&#xff09; 1.2对书上代码的完善和对一些问题的验证和解释代码 1.补全一个函数&#xff1a; 2.this指…