【微信小程序】自定義組件

一開始看官網(wǎng),看的一臉茫然,后來看了下別人的,才終于知道微信小程序的組件怎么開發(fā)了

效果圖

blue.jpg
red.jpg

新建一個component文件夾遭笋,在文件夾下創(chuàng)建rowBox文件夾,再分別創(chuàng)建wxml徒探,wxss瓦呼,json,js四個文件测暗。


目錄

rowBox


wxss

.bg_red{
  background: #ff5d68;
}
.bg_blue{
  background: #cbd1f5;
}
.bg_purple{
  background: #cfb3e3;
}
.bg_pink{
  background: #fcd6c6;
}

/* 頭部 start*/
.row-box .headline_box{
  font-size: 36rpx;
  width:94%;
  height:90rpx;
  line-height: 100rpx;
  border-radius: 5rpx;
  margin: 30rpx 3% 0;
  color: #ffffff;
  box-shadow: 0 4rpx 10rpx 0 rgba(0, 0, 0, 0.2), 0 6rpx 15rpx 0 rgba(0, 0, 0, 0.19); 
    animation:headline_box 1s 0.5s linear 1;
  -webkit-animation:headline_box 1s 0.5s  linear 1;
}
@keyframes headline_box{
    from{transform:rotateX(180)}
    to{transform:rotateX(360deg)}
}
@-webkit-keyframes headline_box{
    from{transform:rotateX(180)}
    to{transform:rotateX(360deg)}
}
.row-box .headline_box .headline_img{
  width:100rpx;
  height:90rpx;
  margin:0 20rpx;
}
.row-box .headline_box .tilte{
  font-weight: 600;
}
.row-box .morebtn{
  float: right;
  margin-right: 3%;
  height: 90rpx;
  line-height: 115rpx;
  font-size:26rpx;
}
/* 頭部 end*/

/* 列表1 start */
.row-box .flex_row1{
   width:97%;
   padding-right: 4%;
   background: #ffffff;
   overflow-y: auto;
   padding-bottom: 20rpx;
}
.row-box .flex_row1 .flex-item{
  float: left;
  width: 42.2%;
  height: 330rpx;
  margin: 20rpx 2% 10rpx 5%;
  border-radius:10rpx;
  background: #ffffff;
  border: 1rpx solid #dcdcdc;
    animation:flex-item 0.5s  linear 1;
  -webkit-animation:flex-item 0.5s  linear 1;
}
@keyframes flex-item{
    from{opacity: 0; transform:scale(0)}
    to{opacity: 0.8;transform:scale(1)}
}
@-webkit-keyframes flex-item{
    from{opacity: 0; transform:scale(0)}
    to{opacity: 0.8;transform:scale(1)}
}
.row-box .flex_row1 .flex-item image{
  width: 100%;
  height: 200rpx;
  border-radius: 10rpx 10rpx 0 0;
}
.row-box .flex_row1 .theme{
  width: 92%;
  height: 70rpx;
  font-size: 28rpx;
  margin: 5rpx 4%;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.row-box .flex_row1 .tag{
  color: #888;
  font-size: 22rpx;
  padding: 0 5%;
}
/* 列表1 end */

/* 列表2 start*/
.row-box .flex_row2{
   width:100%;
   background: #ffffff;
   overflow-y: auto;
   padding-bottom:20rpx;
}
.row-box .flex_row2 .flex-item{
  width: 90%;
  height: 150rpx;
  margin: 20rpx 5% 10rpx;
  background: #ffffff;
  border-radius: 10rpx 10rpx 0 0;
    animation:flex-item 0.5s  linear 1;
  -webkit-animation:flex-item 0.5s  linear 1;
}
@keyframes flex-item{
    from{opacity: 0; transform:scaleX(0)}
    to{opacity: 0.8;transform:scaleX(1)}
}
@-webkit-keyframes flex-item{
    from{opacity: 0; transform:scaleX(0)}
    to{opacity: 0.8;transform:scaleX(1)}
}
.row-box .flex_row2 .flex-item image{
  width: 45%;
  height: 150rpx;
  border-radius:10rpx;
}
.row-box .flex_row2 .item-right{
  float: right;
  width: 49%;
  padding:0 2% 0 3%;
}
.row-box .flex_row2 .theme{
  width: 100%;
  height: 55rpx;
  font-size: 30rpx;
  overflow: hidden;
  white-space: nowrap; 
  text-overflow:  ellipsis; 
}
.row-box .flex_row2 .state{
  color: #888;
  font-size: 22rpx;
  padding: 0 2%;
  height: 86rpx;  
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}
/* 列表2 end*/

wxml

<view class='row-box'>
<block wx:if="{{type == 'red'}}">
   <view class='headline_box bg_red'>
    <image src='../../img/red.jpg' class='headline_img' bindtap='addCityEvent'></image>
    <text class='tilte'>{{title}}</text>
    <navigator class="morebtn" url="{{url}}">查看全部></navigator>  
   </view>
    <view class="flex_row1">
      <view class="flex-item" wx:for="{{items}}" wx:key="index" >
        <navigator url="{{item.url}}">
          <image src='{{item.img}}'></image>
          <view class='theme'>{{item.theme}}</view>
          <text class='tag'>{{item.tag}}</text>
        </navigator>
      </view>
    </view>
</block>

<block wx:else>
  <view class='headline_box bg_blue'  wx:if="{{type == 'blue'}}"> 
    <image src='../../img/blue.jpg' class='headline_img'></image>
    <text  class='tilte'>{{title}}</text>
    <navigator class="morebtn" url="{{url}}">查看全部></navigator>  
  </view>
  <view class='headline_box bg_purple' wx:if="{{type == 'purple'}}"> 
    <image src='../../img/purple.jpg' class='headline_img'></image>
    <text  class='tilte'>{{title}}</text>
    <navigator class="morebtn" url="{{url}}">查看全部></navigator>  
  </view>
  <view class='headline_box bg_pink' wx:if="{{type == 'pink'}}"> 
    <image src='../../img/pink.jpg' class='headline_img'></image>
    <text  class='tilte'>{{title}}</text>
    <navigator class="morebtn" url="{{url}}">查看全部></navigator>  
  </view>

  <!-- 列表 -->
  <view class="flex_row2">
    <view class="flex-item" wx:for="{{items}}"  wx:key="index">
      <image src='{{item.img}}'></image>
      <view class='item-right'>
        <view class='theme'>{{item.theme}}</view>
        <view class='state'>{{item.state}}</view>
      </view>
    </view> 
  </view>

</block>
</view>

js

Component({
  options:{
    multipleSlots: true
  },
  properties:{
    type: {
      type: String,
      value: '類型',
    },
    title: {
      type: String,
      value: '標題',
    },
    url: {
      type: String,
      value: '地址',
    },
    items: {
      type: Array,
      value: '標題',
    },
  },
  data: {
  },
  methods: {
  }
})

index (注:要引用組件的文件)


wxml

<rowBox id="rowBox" title='推薦' type='red' url='#' items='{{recommends}}'></rowBox>
<rowBox id="rowBox" title='游戲' type='blue' url='#' items='{{games}}'></rowBox>

json

{
  "usingComponents": {
    "rowBox": "/component/rowBox/rowBox"     
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末央串,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子碗啄,更是在濱河造成了極大的恐慌质和,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稚字,死亡現(xiàn)場離奇詭異饲宿,居然都是意外死亡,警方通過查閱死者的電腦和手機胆描,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門瘫想,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人昌讲,你說我怎么就攤上這事国夜。” “怎么了短绸?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵车吹,是天一觀的道長。 經(jīng)常有香客問我鸠按,道長礼搁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任目尖,我火速辦了婚禮馒吴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瑟曲。我一直安慰自己饮戳,他們只是感情好,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布洞拨。 她就那樣靜靜地躺著扯罐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烦衣。 梳的紋絲不亂的頭發(fā)上歹河,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天掩浙,我揣著相機與錄音,去河邊找鬼秸歧。 笑死厨姚,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的键菱。 我是一名探鬼主播谬墙,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼经备!你這毒婦竟也來了拭抬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤侵蒙,失蹤者是張志新(化名)和其女友劉穎造虎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蘑志,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡累奈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年贬派,在試婚紗的時候發(fā)現(xiàn)自己被綠了急但。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡搞乏,死狀恐怖波桩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情请敦,我是刑警寧澤镐躲,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站侍筛,受9級特大地震影響萤皂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜匣椰,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一裆熙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧禽笑,春花似錦入录、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蟀伸,卻和暖如春蚀同,著一層夾襖步出監(jiān)牢的瞬間缅刽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工蠢络, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拷恨,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓谢肾,卻偏偏與公主長得像腕侄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子芦疏,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容

  • wxs 一種類似于js的小程序腳本語言冕杠。注意; wxs 文件不依賴于運行時的庫酸茴。 wxs 與js是另外一門語言分预。 ...
    小小小8021閱讀 2,389評論 0 2
  • 微信小程序文檔中提供的組件有限,一定程度上限制了開發(fā)需求薪捍,這里就需要我們自定義一些控件笼痹,實現(xiàn)開發(fā)需求。自定義控件有...
    韓發(fā)發(fā)吖閱讀 18,824評論 0 6
  • 好吧酪穿,突然發(fā)現(xiàn)學不完了凳干,一下子,那就分開吧被济,由于時間太久救赐,直接重新大致復習了一下 微信小程序自定義組件微信小程序支...
    小小小8021閱讀 2,606評論 0 9
  • 又翻了一遍手邊的小箱子。 無論是在寢室還是臥室我都有一個寶貝箱子只磷,里面裝著很多很多稀奇古怪的小東西...
    T巖閱讀 530評論 0 2
  • 讀詩:江路西南永经磅,歸流東北騖。天際識歸舟钮追,云中辨江樹预厌。旅思倦搖搖,孤游昔已屢元媚。既歡懷祿情轧叽,復協(xié)滄洲趣。囂塵自茲隔惠毁,...
    余瑗閱讀 433評論 0 3