微信小程序自定义组件笔记-组件模板和样式

摘要:
  https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html该组件具有自己的wxml模板,并且wxss样式的组件模板可以提供<槽>节点,用于承载组件引用<组件模板-->viewclass=“包装器”

 https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html

组件拥有自己的 wxml 模板和 wxss 样式

组件模板中可以提供一个 <slot> 节点,用于承载组件引用时提供的子节点

 

 

<!-- 组件模板 -->

<view class="wrapper">

  <view>这里是组件的内部节点</view>

  <slot></slot>

</view>

 

<!-- 引用组件的页面模板 -->

<view>

  <component-tag-name>

    <!-- 这部分内容将被放置在组件 <slot> 的位置上 -->

    <view>这里是插入到组件slot中的内容</view>

  </component-tag-name>

</view>

默认情况下,一个组件的wxml中只能有一个slot。需要使用多slot时,可以在组件js中声明启用。

Component({

  options: {

    multipleSlots: true// 在组件定义时的选项中启用多slot支持

  },

/*…*/

})

在这个组件的wxml中使用多个slot,以不同的 name 来区分。

<!-- 组件模板 -->

<view class="wrapper">

  <slot name="before"></slot>

  <view>这里是组件的内部细节</view>

  <slot name="after"></slot>

</view>

 

 

 

 

 

 

 

 

使用

<!-- 引用组件的页面模板 -->

<view>

  <component-tag-name>

    <!-- 这部分内容将被放置在组件 <slot name="before"> 的位置上 -->

    <view slot="before">这里是插入到组件slot name="before"中的内容</view>

    <!-- 这部分内容将被放置在组件 <slot name="after"> 的位置上 -->

    <view slot="after">这里是插入到组件slot name="after"中的内容</view>

  </component-tag-name>

</view>

 

 

 

 

页面模板引用自定义组件及其对应的节点名需要在 json 文件中显式定义

 

 

数据绑定,这样就可以向子组件的属性传递动态数据。

<!-- 引用组件的页面模板 -->

<view>

  <component-tag-name prop-a="{{dataFieldA}}"prop-b="{{dataFieldB}}">

  </component-tag-name>

</view>

只能传递 JSON 兼容数据。自基础库版本 2.0.9 开始,还可以在数据中包含函数

 

 

组件样式

只对组件wxml内的节点生效,注意

不能使用 id选择器 #a 属性选择器[a] button(标签选择器)

避免使用代选择器.a .b

.a > .b除非 .a <view> ,否则不一定会生效

继承样式,如 font  color ,会从组件外继承到组件内。

除继承样式外, app.wxss 样式、页面样式对自定义组件无效(除非更改隔离选项)。

 :host 指定所在节点样式。

 

样式隔离

默认自定义组件的样式只受自身 wxss 影响,除非:

app.wxss 或页面 wxss 中使用了标签名选择器(或一些其他特殊选择器),不推荐。

指定样式隔离选项 styleIsolation 

Component({

  options: {

    styleIsolation: 'isolated'

  }

})

或在.json文件中:

{

  "styleIsolation":"isolated"

}

 

isolated (默认值) class 指定的样式将不会相互影响

apply-shared 页面影响自定义组件,自定义组件不影响页面;

shared 页面影响自定义组件,自定义组件影响页面和其他 apply-shared  shared 的自定义组件。(插件不可用)。

 

Component 构造器用于构造页面额外的样式隔离选项可用:

page-isolated 完成隔离

page-apply-shared 只会受shared自定义组件影响

page-shared 会影响apply-sharedshared自定义组件,会受shared自定义组件影响。

 

addGlobalClass: true  等阶于 styleIsolation: 'isolated'

 

 

 

 

 

 

 

 

 

 

 

外部样式类

接受外部传入的样式类

注意:同一节点使用普通样式类和外部样式类时,两个类的优先级是未定义的,避免这种情况。

/* 组件 custom-component.js */

Component({

  externalClasses: ['my-class']

})

 

<!-- 组件 custom-component.wxml -->

<custom-component class="my-class">这段文本的颜色由组件外的 class 决定</custom-component>

 

<!-- 页面的 WXML -->

<custom-component my-class="red-text"/>

<custom-component my-class="large-text"/>

<!-- 以下写法需要基础库版本 2.7.1 以上 -->

<custom-component my-class="red-text large-text"/>

 

.red-text {

  color: red;

}

.large-text {

  font-size: 1.5em;

}

 

引用页面或父组件的样式

即使启用了样式隔离 isolated,仍可以引用

引用页面中的class

<view class="~blue-text"> 引用页面的样式类 </view>

 

引用父组件中的class:

<view class="^red-text"> 引用父组件的样式类 </view>

<view class="^^red-text"> 引用祖父组件的样式类 </view>

 

独立、通用的组件,请优先使用外部样式类

免责声明:文章转载自《微信小程序自定义组件笔记-组件模板和样式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇js使用toFixed遇到的问题以及由此引发的小数精度问题AAC头部格式,RTP打包格式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

安卓Design包之CoordinatorLayout配合AppBarLayout,ToolBar,TabLaout的使用

转载:  CoordinatorLayout配合AppBarLayout,Toolbar和TabLayout的使用控件的简单介绍: AppBarLayout:它是继承LinerLayout实现的一个ViewGroup容器组件,是为了Material Design而设计的App Bar,支持手势滑动操作。 默认的AppBarLayout是垂直方向的,它的作用...

View绘制机制

View 绘制机制 1. View 树的绘图流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw。整个 View 树的绘图流程在ViewRoot.java类的performTraversals()函数展开,该函数所做 的工作可简单...

SwitchButton 开关按钮 的多种实现方式

刚开始接触开关样式的按钮是在IOS系统上面,它的切换以及滑动十分帅气,深入人心。 所谓的开关按钮,就是只有2个状态:on和off,下图就是系统IOS 7上开关按钮效果。 起初我在android上我只会使用CheckBox去满足对应的功能。后来,查看开发文档发现,android也有了自己的原生态开关控件,并且在4.0版本中又优化加入了新的类似控件--Swi...

Android检测View的可见性

Android中我们经常会用到判断View的可见行,当然有人会说View.VISIBLE就可以了,但是有时候这个真是满足不了,有时候我们为了优化,在View滚到得不可见的时候或者由于滚到只显示了部分内容的时候不做某些操作,View.VISIBLE这个时候是满足不了的。 1. onWindowVisibilityChanged检测滚到导致View可见或者不...

Android游戏开发教程之六:自定义View详解

  在Android游戏开发中,有时Android控件不能满足我们的要求,就有必要使用Android自定义View。自定义View实现起来也不难,就是先继承View类,然后重写构造函数、onDraw、onMeasure等函数。        View需处理的三个问题        对于常规的游戏,我们在View中需要处理以下几种问题: 1.控制事件;...

C# 操作自定义config文件

示例文件:DB.config 1.读取 1 //先实例化一个ExeConfigurationFileMap对象,把物理地址赋值到它的 ExeConfigFilename 属性中; 2 ExeConfigurationFileMap fileMap = newExeConfigurationFileMap(); 3 fileMap.ExeConfigFi...