小程序-checkbox改造

在開(kāi)發(fā)小程序的過(guò)程中,經(jīng)常要用到Checkbox來(lái)承載用戶(hù)對(duì)于某選項(xiàng)的選擇或者不選擇异逐,聽(tīng)上去像是廢話(huà)(哈哈)耕肩。
我們先看一下小程序官方推薦的Checkbox使用方法

  • 第一步,定義結(jié)構(gòu)
<checkbox-group bindchange="checkboxChange">
  <label class="checkbox" wx:for="{{items}}">
    <checkbox value="{{item.name}}" checked="{{item.checked}}"/>{{item.value}}
  </label>
</checkbox-group>

對(duì)應(yīng)到html表單欲逃,這個(gè)結(jié)構(gòu)是非常容易理解的找蜜,一個(gè)多選框組,這個(gè)組內(nèi)包含若干個(gè)checkbox稳析,組的根節(jié)點(diǎn)負(fù)責(zé)監(jiān)聽(tīng)用戶(hù)的選擇洗做、取消選擇等事件,并映射到指定的處理方法上彰居。

  • 第二步诚纸,定義用于渲染的初始數(shù)據(jù)
Page({
  data: {
    items: [
      {name: 'USA', value: '美國(guó)'},
      {name: 'CHN', value: '中國(guó)', checked: 'true'},
      {name: 'BRA', value: '巴西'},
      {name: 'JPN', value: '日本'},
      {name: 'ENG', value: '英國(guó)'},
      {name: 'TUR', value: '法國(guó)'},
    ]
  },
  checkboxChange: function(e) {
    console.log('checkbox發(fā)生change事件,攜帶value值為:', e.detail.value)
  }
})

這樣裕菠,Checkbox的原生小程序組件就實(shí)現(xiàn)了咬清。但是,問(wèn)題來(lái)了奴潘。

原生的Checkbox太丑了旧烧!要改掉它的表現(xiàn)。
好吧画髓,這種事情對(duì)于前端開(kāi)發(fā)而言簡(jiǎn)直太常見(jiàn)了掘剪,不就是改表現(xiàn)嘛,咱們來(lái)重置掉它的默認(rèn)表現(xiàn)奈虾,換成美麗的設(shè)計(jì)稿上的圖片就萬(wàn)事大吉啦夺谁。
打開(kāi)小程序開(kāi)發(fā)者工具的調(diào)試模式,查看元素的樣式肉微,截圖如下


Checkbox元素調(diào)試截圖

心里無(wú)限的憂(yōu)傷啊匾鸥,完全看不到小程序是如何設(shè)置Checkbox的樣式的,小程序?qū)崿F(xiàn)Checkbox的樣式代碼對(duì)我們是黑盒的碉纳。
于是很多同學(xué)自己開(kāi)始吭哧吭哧地編寫(xiě)一個(gè)模擬的組件勿负,創(chuàng)建一個(gè)template,編寫(xiě)它的數(shù)據(jù)渲染和事件監(jiān)聽(tīng)處理劳曹,以及對(duì)用戶(hù)操作的數(shù)據(jù)進(jìn)行實(shí)時(shí)更新奴愉,總之是自己要做一套類(lèi)原生的工作。
本文要說(shuō)的點(diǎn)就是铁孵,我們不用重寫(xiě)一套Checkbox組件锭硼,我們還是在原生的Checkbox上進(jìn)行表現(xiàn)的重置即可,其他的繼續(xù)沿用Checkbox本身的機(jī)制蜕劝,工作量大大減少檀头。
接下來(lái)是比較關(guān)鍵的一步

  1. 切到開(kāi)發(fā)者工具
  2. 選擇調(diào)試模式
  3. 選中


  4. 將鼠標(biāo)hover到Checkbox上

我們會(huì)看到在鼠標(biāo)的上會(huì)有元素實(shí)際選擇器的顯示

div.wx-checkbox-input

小程序歸根結(jié)底還是要轉(zhuǎn)換成實(shí)際的html來(lái)交給webview渲染轰异,因此我們有理由懷疑,我們只要重置上面的類(lèi)表現(xiàn)就能重置Checkbox的表現(xiàn)鳖擒,于是先做了如下代碼測(cè)試

.wx-checkbox-input{
    display: none;
}

刷新小程序頁(yè)面溉浙,發(fā)現(xiàn)Checkbox不見(jiàn)了,說(shuō)明我們的猜測(cè)是成立的蒋荚,接下來(lái)就是去實(shí)現(xiàn)我們想要的Checkbox樣式啦

  • 首先戳稽,定義結(jié)構(gòu)
<template name="ws-checkbox">
    <checkbox class="ws-checkbox" value="{{text}}" checked="{{checked}}"/>
</template>
  • 然后,定義樣式
.wx-checkbox-input{
    display: none;
}
.ws-checkbox {
  display: inline-block;
  width: 12px;
  height: 12px;
  background-image: url(XXX.png);
  background-size: 100%;
}

.ws-checkbox[checked] {
  background-image: url(XXX-checked.png);
}

各位只需要將上面代碼中的圖片地址換成自己的圖片地址即可期升,一個(gè)自定義的Checkbox就實(shí)現(xiàn)啦惊奇,而且,對(duì)于使用其原生的任何功能都沒(méi)有影響播赁。

有了上面介紹的方法颂郎,大家還可以去實(shí)現(xiàn)自定義的radio-button哦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末容为,一起剝皮案震驚了整個(gè)濱河市乓序,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坎背,老刑警劉巖替劈,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異得滤,居然都是意外死亡陨献,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)懂更,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)眨业,“玉大人,你說(shuō)我怎么就攤上這事沮协×浼瘢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵慷暂,是天一觀(guān)的道長(zhǎng)聘殖。 經(jīng)常有香客問(wèn)我,道長(zhǎng)呜呐,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任悍募,我火速辦了婚禮蘑辑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坠宴。我一直安慰自己洋魂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著副砍,像睡著了一般衔肢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豁翎,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天角骤,我揣著相機(jī)與錄音,去河邊找鬼心剥。 笑死邦尊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的优烧。 我是一名探鬼主播蝉揍,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼畦娄!你這毒婦竟也來(lái)了又沾?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤熙卡,失蹤者是張志新(化名)和其女友劉穎杖刷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體再膳,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挺勿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喂柒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片不瓶。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖灾杰,靈堂內(nèi)的尸體忽然破棺而出蚊丐,到底是詐尸還是另有隱情,我是刑警寧澤艳吠,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布麦备,位于F島的核電站,受9級(jí)特大地震影響昭娩,放射性物質(zhì)發(fā)生泄漏凛篙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一栏渺、第九天 我趴在偏房一處隱蔽的房頂上張望呛梆。 院中可真熱鬧,春花似錦磕诊、人聲如沸填物。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)滞磺。三九已至升薯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間击困,已是汗流浹背涎劈。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沛励,地道東北人责语。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像目派,于是被迫代替她去往敵國(guó)和親坤候。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理企蹭,服務(wù)發(fā)現(xiàn)白筹,斷路器,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停谅摄,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,180評(píng)論 22 257
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,072評(píng)論 25 707
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法徒河,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法送漠,繼承相關(guān)的語(yǔ)法顽照,異常的語(yǔ)法,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,622評(píng)論 18 399
  • 大前天闽寡,一大早代兵,我去倉(cāng)庫(kù)拉貨,因?yàn)閭}(cāng)庫(kù)位置在村里爷狈,有兩條路可以到植影,一個(gè)是走沿河道,路況好涎永,但是繞了很遠(yuǎn)思币;另一個(gè)是走...
    大地_行者閱讀 1,788評(píng)論 2 3