12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247 |
- <!DOCTYPE html>
- <html lang="en-US">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width,initial-scale=1">
- <title>wheel | BetterScroll 2.0</title>
- <meta name="generator" content="VuePress 1.9.10">
- <link rel="shortcut icon" href="/docs/assets/bs.ico" type="images/x-icon">
- <script src="https://www.googletagmanager.com/gtag/js?id=G-7E85TW7P27"></script>
- <script type="text/javascript">
- window.dataLayer = window.dataLayer || [];
- function gtag(){dataLayer.push(arguments);}
- gtag('js', new Date());
- gtag('config', 'G-7E85TW7P27');
- </script>
- <meta name="description" content="Make Scroll Perfect">
-
- <link rel="preload" href="/docs/assets/css/0.styles.0cd93813.css" as="style"><link rel="preload" href="/docs/assets/js/app.c71b64d3.js" as="script"><link rel="preload" href="/docs/assets/js/5.d6412664.js" as="script"><link rel="preload" href="/docs/assets/js/4.4855b9ef.js" as="script"><link rel="preload" href="/docs/assets/js/3.481632b4.js" as="script"><link rel="preload" href="/docs/assets/js/96.6e382fd5.js" as="script"><link rel="preload" href="/docs/assets/js/56.cd04bae9.js" as="script"><link rel="preload" href="/docs/assets/js/7.518ccda7.js" as="script"><link rel="prefetch" href="/docs/assets/js/1.8644db92.js"><link rel="prefetch" href="/docs/assets/js/10.6f8c38eb.js"><link rel="prefetch" href="/docs/assets/js/100.ee08226e.js"><link rel="prefetch" href="/docs/assets/js/101.fd2f3d9f.js"><link rel="prefetch" href="/docs/assets/js/102.79d86e3d.js"><link rel="prefetch" href="/docs/assets/js/103.7a3ae3b5.js"><link rel="prefetch" href="/docs/assets/js/104.7be4589d.js"><link rel="prefetch" href="/docs/assets/js/105.75386d15.js"><link rel="prefetch" href="/docs/assets/js/106.a4a18e8d.js"><link rel="prefetch" href="/docs/assets/js/107.561ec2e2.js"><link rel="prefetch" href="/docs/assets/js/108.1c61689f.js"><link rel="prefetch" href="/docs/assets/js/109.da71a73e.js"><link rel="prefetch" href="/docs/assets/js/110.5e0fa2d1.js"><link rel="prefetch" href="/docs/assets/js/111.1e326dd1.js"><link rel="prefetch" href="/docs/assets/js/112.590ba317.js"><link rel="prefetch" href="/docs/assets/js/113.cf201ace.js"><link rel="prefetch" href="/docs/assets/js/114.6d895ce2.js"><link rel="prefetch" href="/docs/assets/js/115.572aee19.js"><link rel="prefetch" href="/docs/assets/js/116.754722a0.js"><link rel="prefetch" href="/docs/assets/js/117.15e4dab3.js"><link rel="prefetch" href="/docs/assets/js/118.721d68f8.js"><link rel="prefetch" href="/docs/assets/js/119.c5c28d96.js"><link rel="prefetch" href="/docs/assets/js/120.12cd2e0e.js"><link rel="prefetch" href="/docs/assets/js/121.e41f8100.js"><link rel="prefetch" href="/docs/assets/js/122.9ebe2f53.js"><link rel="prefetch" href="/docs/assets/js/123.f90c91f9.js"><link rel="prefetch" href="/docs/assets/js/13.b0c40cd7.js"><link rel="prefetch" href="/docs/assets/js/14.28bec126.js"><link rel="prefetch" href="/docs/assets/js/15.87b22af4.js"><link rel="prefetch" href="/docs/assets/js/16.c10e14e7.js"><link rel="prefetch" href="/docs/assets/js/17.5c921c77.js"><link rel="prefetch" href="/docs/assets/js/18.dc23b7e3.js"><link rel="prefetch" href="/docs/assets/js/19.a4034f95.js"><link rel="prefetch" href="/docs/assets/js/2.03f0f2c8.js"><link rel="prefetch" href="/docs/assets/js/20.8633fd45.js"><link rel="prefetch" href="/docs/assets/js/21.1fbf8d7e.js"><link rel="prefetch" href="/docs/assets/js/22.2888cfc5.js"><link rel="prefetch" href="/docs/assets/js/23.f951d302.js"><link rel="prefetch" href="/docs/assets/js/24.12842718.js"><link rel="prefetch" href="/docs/assets/js/25.5a5a3137.js"><link rel="prefetch" href="/docs/assets/js/26.88e81f0b.js"><link rel="prefetch" href="/docs/assets/js/27.152b8fda.js"><link rel="prefetch" href="/docs/assets/js/28.22550ea8.js"><link rel="prefetch" href="/docs/assets/js/29.f43fa807.js"><link rel="prefetch" href="/docs/assets/js/30.4ed38f67.js"><link rel="prefetch" href="/docs/assets/js/31.af4018f6.js"><link rel="prefetch" href="/docs/assets/js/32.930ee0b7.js"><link rel="prefetch" href="/docs/assets/js/33.c6a68c75.js"><link rel="prefetch" href="/docs/assets/js/34.6d10da1e.js"><link rel="prefetch" href="/docs/assets/js/35.11ba7b51.js"><link rel="prefetch" href="/docs/assets/js/36.8a54712b.js"><link rel="prefetch" href="/docs/assets/js/37.b26eb85d.js"><link rel="prefetch" href="/docs/assets/js/38.d6569a11.js"><link rel="prefetch" href="/docs/assets/js/39.1d22cfba.js"><link rel="prefetch" href="/docs/assets/js/40.577a94d7.js"><link rel="prefetch" href="/docs/assets/js/41.155e01e0.js"><link rel="prefetch" href="/docs/assets/js/42.3c26eaba.js"><link rel="prefetch" href="/docs/assets/js/43.d90991e2.js"><link rel="prefetch" href="/docs/assets/js/44.5437344c.js"><link rel="prefetch" href="/docs/assets/js/45.0d2eca0a.js"><link rel="prefetch" href="/docs/assets/js/46.11455b40.js"><link rel="prefetch" href="/docs/assets/js/47.1ee1a8f0.js"><link rel="prefetch" href="/docs/assets/js/48.c82450ab.js"><link rel="prefetch" href="/docs/assets/js/49.8016ee5f.js"><link rel="prefetch" href="/docs/assets/js/50.ab73e091.js"><link rel="prefetch" href="/docs/assets/js/51.bce6eb99.js"><link rel="prefetch" href="/docs/assets/js/52.c9b1992f.js"><link rel="prefetch" href="/docs/assets/js/53.7057f0f5.js"><link rel="prefetch" href="/docs/assets/js/54.cbb0a6b5.js"><link rel="prefetch" href="/docs/assets/js/55.89176a68.js"><link rel="prefetch" href="/docs/assets/js/57.c7a42e07.js"><link rel="prefetch" href="/docs/assets/js/58.09d6cb1b.js"><link rel="prefetch" href="/docs/assets/js/59.8445a09f.js"><link rel="prefetch" href="/docs/assets/js/6.5737c458.js"><link rel="prefetch" href="/docs/assets/js/60.86b1f417.js"><link rel="prefetch" href="/docs/assets/js/61.fa371ad1.js"><link rel="prefetch" href="/docs/assets/js/62.dbc75ddc.js"><link rel="prefetch" href="/docs/assets/js/63.a4465c93.js"><link rel="prefetch" href="/docs/assets/js/64.a39c3193.js"><link rel="prefetch" href="/docs/assets/js/65.a7275f82.js"><link rel="prefetch" href="/docs/assets/js/66.afd0af7d.js"><link rel="prefetch" href="/docs/assets/js/67.8009e00e.js"><link rel="prefetch" href="/docs/assets/js/68.de3c51dd.js"><link rel="prefetch" href="/docs/assets/js/69.41a50235.js"><link rel="prefetch" href="/docs/assets/js/70.938e9532.js"><link rel="prefetch" href="/docs/assets/js/71.af7fca59.js"><link rel="prefetch" href="/docs/assets/js/72.25df569a.js"><link rel="prefetch" href="/docs/assets/js/73.f16b7dc3.js"><link rel="prefetch" href="/docs/assets/js/74.d2184ed7.js"><link rel="prefetch" href="/docs/assets/js/75.9497b6fa.js"><link rel="prefetch" href="/docs/assets/js/76.2081d35e.js"><link rel="prefetch" href="/docs/assets/js/77.e5a8b470.js"><link rel="prefetch" href="/docs/assets/js/78.6d3ef23b.js"><link rel="prefetch" href="/docs/assets/js/79.025583e1.js"><link rel="prefetch" href="/docs/assets/js/8.8547d4ad.js"><link rel="prefetch" href="/docs/assets/js/80.e7e3ef35.js"><link rel="prefetch" href="/docs/assets/js/81.569d569f.js"><link rel="prefetch" href="/docs/assets/js/82.ac3ed0f7.js"><link rel="prefetch" href="/docs/assets/js/83.3393dfc3.js"><link rel="prefetch" href="/docs/assets/js/84.e5352ac1.js"><link rel="prefetch" href="/docs/assets/js/85.c7cdb129.js"><link rel="prefetch" href="/docs/assets/js/86.0aa0af94.js"><link rel="prefetch" href="/docs/assets/js/87.0db12b1e.js"><link rel="prefetch" href="/docs/assets/js/88.e8651cfa.js"><link rel="prefetch" href="/docs/assets/js/89.1b58abde.js"><link rel="prefetch" href="/docs/assets/js/9.0a882dfc.js"><link rel="prefetch" href="/docs/assets/js/90.d65d2d13.js"><link rel="prefetch" href="/docs/assets/js/91.32b2ad41.js"><link rel="prefetch" href="/docs/assets/js/92.795675a1.js"><link rel="prefetch" href="/docs/assets/js/93.818e5569.js"><link rel="prefetch" href="/docs/assets/js/94.79c2b16e.js"><link rel="prefetch" href="/docs/assets/js/95.4810ee5e.js"><link rel="prefetch" href="/docs/assets/js/97.e270d7b5.js"><link rel="prefetch" href="/docs/assets/js/98.728ef6c2.js"><link rel="prefetch" href="/docs/assets/js/99.c75096e0.js"><link rel="prefetch" href="/docs/assets/js/vendors~docsearch.2091e099.js">
- <link rel="stylesheet" href="/docs/assets/css/0.styles.0cd93813.css">
- </head>
- <body>
- <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/docs/en-US/" class="home-link router-link-active"><img src="https://dpubstatic.udache.com/static/dpubimg/t_L6vAgQ-E/logo.svg" alt="BetterScroll 2.0" class="logo"> <span class="site-name can-hide">BetterScroll 2.0</span></a> <div class="links"><form id="search-form" role="search" class="algolia-search-wrapper search-box"><input id="algolia-search-input" class="search-query"></form> <nav class="nav-links can-hide"><div class="nav-item"><a href="/docs/en-US/guide/" class="nav-link">
- Guide
- </a></div><div class="nav-item"><a href="/docs/en-US/plugins/" class="nav-link router-link-active">
- Plugin
- </a></div><div class="nav-item"><a href="/docs/en-US/FAQ/" class="nav-link">
- FAQ
- </a></div><div class="nav-item"><a href="https://github.com/ustbhuangyi/better-scroll/issues" target="_blank" rel="noopener noreferrer" class="nav-link external">
- Discuss
- <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Select language" class="dropdown-title"><span class="title">Languages</span> <span class="arrow down"></span></button> <button type="button" aria-label="Select language" class="mobile-dropdown-title"><span class="title">Languages</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/docs/en-US/plugins/wheel.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">
- English
- </a></li><li class="dropdown-item"><!----> <a href="/docs/zh-CN/plugins/wheel.html" class="nav-link">
- 简体中文
- </a></li></ul></div></div> <a href="https://github.com/ustbhuangyi/better-scroll" target="_blank" rel="noopener noreferrer" class="repo-link">
- GitHub
- <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/docs/en-US/guide/" class="nav-link">
- Guide
- </a></div><div class="nav-item"><a href="/docs/en-US/plugins/" class="nav-link router-link-active">
- Plugin
- </a></div><div class="nav-item"><a href="/docs/en-US/FAQ/" class="nav-link">
- FAQ
- </a></div><div class="nav-item"><a href="https://github.com/ustbhuangyi/better-scroll/issues" target="_blank" rel="noopener noreferrer" class="nav-link external">
- Discuss
- <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Select language" class="dropdown-title"><span class="title">Languages</span> <span class="arrow down"></span></button> <button type="button" aria-label="Select language" class="mobile-dropdown-title"><span class="title">Languages</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/docs/en-US/plugins/wheel.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">
- English
- </a></li><li class="dropdown-item"><!----> <a href="/docs/zh-CN/plugins/wheel.html" class="nav-link">
- 简体中文
- </a></li></ul></div></div> <a href="https://github.com/ustbhuangyi/better-scroll" target="_blank" rel="noopener noreferrer" class="repo-link">
- GitHub
- <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>Plugins Guide</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/en-US/plugins/" aria-current="page" class="sidebar-link">plugins</a></li><li><a href="/docs/en-US/plugins/how-to-write.html" class="sidebar-link">How to write plugins</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>Plugins</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/en-US/plugins/mouse-wheel.html" class="sidebar-link">mouse-wheel</a></li><li><a href="/docs/en-US/plugins/observe-dom.html" class="sidebar-link">observe-dom</a></li><li><a href="/docs/en-US/plugins/observe-image.html" class="sidebar-link">observe-image</a></li><li><a href="/docs/en-US/plugins/pulldown.html" class="sidebar-link">pulldown</a></li><li><a href="/docs/en-US/plugins/pullup.html" class="sidebar-link">pullup</a></li><li><a href="/docs/en-US/plugins/scroll-bar.html" class="sidebar-link">scrollbar</a></li><li><a href="/docs/en-US/plugins/indicators.html" class="sidebar-link">indicators</a></li><li><a href="/docs/en-US/plugins/slide.html" class="sidebar-link">slide</a></li><li><a href="/docs/en-US/plugins/wheel.html" aria-current="page" class="active sidebar-link">wheel</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/en-US/plugins/wheel.html#introduction" class="sidebar-link">Introduction</a></li><li class="sidebar-sub-header"><a href="/docs/en-US/plugins/wheel.html#install" class="sidebar-link">Install</a></li><li class="sidebar-sub-header"><a href="/docs/en-US/plugins/wheel.html#usage" class="sidebar-link">Usage</a></li><li class="sidebar-sub-header"><a href="/docs/en-US/plugins/wheel.html#wheel-options" class="sidebar-link">wheel options</a></li><li class="sidebar-sub-header"><a href="/docs/en-US/plugins/wheel.html#instance-methods" class="sidebar-link">Instance Methods</a></li><li class="sidebar-sub-header"><a href="/docs/en-US/plugins/wheel.html#events" class="sidebar-link">Events</a></li></ul></li><li><a href="/docs/en-US/plugins/zoom.html" class="sidebar-link">zoom</a></li><li><a href="/docs/en-US/plugins/nested-scroll.html" class="sidebar-link">nested-scroll</a></li><li><a href="/docs/en-US/plugins/infinity.html" class="sidebar-link">infinity</a></li><li><a href="/docs/en-US/plugins/movable.html" class="sidebar-link">movable</a></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="wheel"><a href="#wheel" class="header-anchor">#</a> wheel</h1> <h2 id="introduction"><a href="#introduction" class="header-anchor">#</a> Introduction</h2> <p>The wheel plugin is the cornerstone for implementing similar iOS Picker components.</p> <h2 id="install"><a href="#install" class="header-anchor">#</a> Install</h2> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token function">npm</span> <span class="token function">install</span> @better-scroll/wheel <span class="token parameter variable">--save</span>
- // or
- <span class="token function">yarn</span> <span class="token function">add</span> @better-scroll/wheel
- </code></pre></div><h2 id="usage"><a href="#usage" class="header-anchor">#</a> Usage</h2> <p>import <code>wheel</code>, then call <code>BScroll.use()</code>.</p> <div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">import</span> BScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/core'</span>
- <span class="token keyword">import</span> Wheel <span class="token keyword">from</span> <span class="token string">'@better-scroll/wheel'</span>
- BScroll<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>Wheel<span class="token punctuation">)</span>
- </code></pre></div><p>pass in the correct configuration in options, for example:</p> <div class="language-js extra-class"><pre class="language-js"><code> <span class="token keyword">let</span> bs <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">BScroll</span><span class="token punctuation">(</span><span class="token string">'.bs-wrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">wheel</span><span class="token operator">:</span> <span class="token boolean">true</span> <span class="token comment">// wheel options</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- </code></pre></div><div class="custom-block tip"><p class="custom-block-title">TIP</p> <p>Wheel options is <code>true</code> or object, otherwise the plugin is invalid, please refer to <a href="/docs/en-US/plugins/wheel.html#wheel-options">wheel options</a>.</p></div> <div class="custom-block danger"><p class="custom-block-title">DANGER</p> <p>BetterScroll combined with the Wheel plugin is just the JS logic part of the Picker effect, and the DOM template is user-implemented. Fortunately, for most Picker scenarios, we have corresponding examples.</p></div> <ul><li><p><strong>Basic usage</strong></p> <div class="demo-wrap"><div class="demo-nav"><i class="demo-nav-btn icon-code"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#000"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"></path></svg></i> <div class="v-popover"><div class="trigger" style="display:inline-block;"><i class="demo-nav-btn icon-qrcode"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#666"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M16 20h4M4 12h4m12 0h.01M5 8h2a1 1 0 001-1V5a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1zm12 0h2a1 1 0 001-1V5a1 1 0 00-1-1h-2a1 1 0 00-1 1v2a1 1 0 001 1zM5 20h2a1 1 0 001-1v-2a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1z"></path></svg></i> </div> <div id="popover_estolgjlod" aria-hidden="true" tabindex="0" class="tooltip popover vue-popover-theme" style="visibility:hidden;"><div class="wrapper"><div class="tooltip-inner popover-inner" style="position:relative;"><div><div></div></div> <div tabindex="-1" class="resize-observer" data-v-8859cc6c></div></div> <div class="tooltip-arrow popover-arrow"></div></div></div></div> <i class="demo-nav-btn icon-preview"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#666"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg></i></div> <div class="demo-code" style="display:;"><div class="demo-code-nav"><button class="demo-code-btn active">Template</button><button class="demo-code-btn">Script</button><button class="demo-code-btn">Style</button></div> <div class="demo-code-content"><div class="demo-code-item" style="display:;"><div class="language-vue extra-class"><pre class="language-vue"><code><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>template</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>container<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ul</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>example-list<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>example-item<span class="token punctuation">"</span></span> <span class="token attr-name">@click</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>show<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>open<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>{{selectedText}}<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>ul</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>transition</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-fade<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker<span class="token punctuation">"</span></span> <span class="token attr-name">v-show</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>state===1<span class="token punctuation">"</span></span> <span class="token attr-name">@touchmove.prevent</span> <span class="token attr-name">@click</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_cancel<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>transition</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-move<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-panel<span class="token punctuation">"</span></span> <span class="token attr-name">v-show</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>state===1<span class="token punctuation">"</span></span> <span class="token attr-name">@click.stop</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-choose border-bottom-1px<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>cancel<span class="token punctuation">"</span></span> <span class="token attr-name">@click</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_cancel<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Cancel<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>confirm<span class="token punctuation">"</span></span> <span class="token attr-name">@click</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_confirm<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Confirm<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-title<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Title<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-content<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mask-top border-bottom-1px<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mask-bottom border-top-1px<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheel-wrapper<span class="token punctuation">"</span></span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheelWrapper<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheel<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ul</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheel-scroll<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span>
- <span class="token attr-name">v-for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>(item, index) in pickerData<span class="token punctuation">"</span></span> <span class="token attr-name">:key</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>index<span class="token punctuation">"</span></span>
- <span class="token attr-name">:class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{'wheel-disabled-item':item.disabled}<span class="token punctuation">"</span></span>
- <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheel-item<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>{{item.text}}<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>ul</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-footer<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>transition</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>transition</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>template</span><span class="token punctuation">></span></span></code></pre></div></div><div class="demo-code-item" style="display:none;"><div class="language-vue extra-class"><pre class="language-vue"><code><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/ecmascript-6<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript">
- <span class="token keyword">import</span> BScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/core'</span>
- <span class="token keyword">import</span> Wheel <span class="token keyword">from</span> <span class="token string">'@better-scroll/wheel'</span>
- BScroll<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>Wheel<span class="token punctuation">)</span>
- <span class="token keyword">const</span> <span class="token constant">STATE_HIDE</span> <span class="token operator">=</span> <span class="token number">0</span>
- <span class="token keyword">const</span> <span class="token constant">STATE_SHOW</span> <span class="token operator">=</span> <span class="token number">1</span>
- <span class="token keyword">const</span> <span class="token constant">COMPONENT_NAME</span> <span class="token operator">=</span> <span class="token string">'picker'</span>
- <span class="token keyword">const</span> <span class="token constant">EVENT_SELECT</span> <span class="token operator">=</span> <span class="token string">'select'</span>
- <span class="token keyword">const</span> <span class="token constant">EVENT_CANCEL</span> <span class="token operator">=</span> <span class="token string">'cancel'</span>
- <span class="token keyword">const</span> <span class="token constant">EVENT_CHANGE</span> <span class="token operator">=</span> <span class="token string">'change'</span>
- <span class="token keyword">const</span> <span class="token constant">WHEEL_INDEX_CHANGED</span> <span class="token operator">=</span> <span class="token string">'wheelIndexChanged'</span>
- <span class="token keyword">const</span> <span class="token constant">DATA</span> <span class="token operator">=</span> <span class="token punctuation">[</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Venomancer'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
- <span class="token literal-property property">disabled</span><span class="token operator">:</span> <span class="token string">'wheel-disabled-item'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Nerubian Weaver'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">2</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Spectre'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">3</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Juggernaut'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">4</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Karl'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">5</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Zeus'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">6</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Witch Doctor'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">7</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Lich'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">8</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Oracle'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">9</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Earthshaker'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">10</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">]</span>
- <span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token constant">COMPONENT_NAME</span><span class="token punctuation">,</span>
- <span class="token function">data</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">return</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">state</span><span class="token operator">:</span> <span class="token constant">STATE_HIDE</span><span class="token punctuation">,</span>
- <span class="token literal-property property">selectedIndex</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
- <span class="token literal-property property">selectedText</span><span class="token operator">:</span> <span class="token string">'open'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">pickerData</span><span class="token operator">:</span> <span class="token constant">DATA</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token literal-property property">methods</span><span class="token operator">:</span> <span class="token punctuation">{</span>
- <span class="token function">_confirm</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token comment">/*
- * if bs is scrolling, force it stop at the nearest wheel-item
- * or you can use 'restorePosition' method as the below
- */</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheel<span class="token punctuation">.</span><span class="token function">stop</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token comment">/*
- * if bs is scrolling, restore it to the start position
- * it is same with iOS picker and web Select element implementation
- * supported at v2.1.0
- */</span>
- <span class="token comment">// this.wheel.restorePosition()</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">hide</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token keyword">const</span> currentSelectedIndex <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>selectedIndex <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>wheel<span class="token punctuation">.</span><span class="token function">getSelectedIndex</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>selectedText <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token keyword">this</span><span class="token punctuation">.</span>pickerData<span class="token punctuation">[</span>currentSelectedIndex<span class="token punctuation">]</span><span class="token punctuation">.</span>text<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">-</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>currentSelectedIndex<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$emit</span><span class="token punctuation">(</span><span class="token constant">EVENT_SELECT</span><span class="token punctuation">,</span> currentSelectedIndex<span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">_cancel</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token comment">/*
- * if bs is scrolling, restore it to the start position
- * it is same with iOS picker and web Select element implementation
- * supported at v2.1.0
- */</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheel<span class="token punctuation">.</span><span class="token function">restorePosition</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">hide</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$emit</span><span class="token punctuation">(</span><span class="token constant">EVENT_CANCEL</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">show</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>state <span class="token operator">===</span> <span class="token constant">STATE_SHOW</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">return</span>
- <span class="token punctuation">}</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>state <span class="token operator">=</span> <span class="token constant">STATE_SHOW</span>
- <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">this</span><span class="token punctuation">.</span>wheel<span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token comment">// waiting for DOM rendered</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$nextTick</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token keyword">const</span> wrapper <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>$refs<span class="token punctuation">.</span>wheelWrapper<span class="token punctuation">.</span>children<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">_createWheel</span><span class="token punctuation">(</span>wrapper<span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">hide</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>state <span class="token operator">=</span> <span class="token constant">STATE_HIDE</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">_createWheel</span><span class="token punctuation">(</span><span class="token parameter">wheelWrapper</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">this</span><span class="token punctuation">.</span>wheel<span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheel <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">BScroll</span><span class="token punctuation">(</span>wheelWrapper<span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">wheel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">selectedIndex</span><span class="token operator">:</span> <span class="token keyword">this</span><span class="token punctuation">.</span>selectedIndex<span class="token punctuation">,</span>
- <span class="token literal-property property">wheelWrapperClass</span><span class="token operator">:</span> <span class="token string">'wheel-scroll'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">wheelItemClass</span><span class="token operator">:</span> <span class="token string">'wheel-item'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">wheelDisabledItemClass</span><span class="token operator">:</span> <span class="token string">'wheel-disabled-item'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token literal-property property">useTransition</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
- <span class="token literal-property property">probeType</span><span class="token operator">:</span> <span class="token number">3</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token comment">// < v2.1.0</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheel<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'scrollEnd'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$emit</span><span class="token punctuation">(</span><span class="token constant">EVENT_CHANGE</span><span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>wheel<span class="token punctuation">.</span><span class="token function">getSelectedIndex</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token comment">// v2.1.0, only when selectedIndex changed</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheel<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token constant">WHEEL_INDEX_CHANGED</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">index</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>index<span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheel<span class="token punctuation">.</span><span class="token function">refresh</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span>
- <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">.</span>wheel
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
- </span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span></code></pre></div></div><div class="demo-code-item" style="display:none;"><div class="language-styl extra-class"><pre class="language-styl"><code><style scoped lang=<span class="token string">"stylus"</span> rel=<span class="token string">"stylesheet/stylus"</span>>
- <span class="token selector"><span class="token comment">/* reset */</span>
- ul</span>
- <span class="token property-declaration"><span class="token property">list-style</span> none</span>
- <span class="token property-declaration"><span class="token property">padding</span> <span class="token number">0</span></span>
- <span class="token selector">.border-bottom-1px<span class="token punctuation">,</span> .border-top-1px</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
- <span class="token selector">&:before<span class="token punctuation">,</span> &:after</span>
- <span class="token property-declaration"><span class="token property">content</span><span class="token punctuation">:</span> <span class="token string">""</span></span>
- <span class="token property-declaration"><span class="token property">display</span><span class="token punctuation">:</span> block</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">transform-origin</span><span class="token punctuation">:</span> <span class="token number">0</span> <span class="token number">0</span></span>
- <span class="token selector">.border-bottom-1px</span>
- <span class="token selector">&:after</span>
- <span class="token property-declaration"><span class="token property">border-bottom</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">px</span> solid <span class="token hexcode">#ebebeb</span></span>
- <span class="token property-declaration"><span class="token property">left</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">bottom</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform-origin</span><span class="token punctuation">:</span> <span class="token number">0</span> bottom</span>
- <span class="token selector">.border-top-1px</span>
- <span class="token selector">&:before</span>
- <span class="token property-declaration"><span class="token property">border-top</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">px</span> solid <span class="token hexcode">#ebebeb</span></span>
- <span class="token property-declaration"><span class="token property">left</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform-origin</span><span class="token punctuation">:</span> <span class="token number">0</span> top</span>
- <span class="token atrule-declaration"><span class="token atrule">@media</span> <span class="token punctuation">(</span>-webkit-min-device-pixel-ratio<span class="token punctuation">:</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>min-device-pixel-ratio<span class="token punctuation">:</span> <span class="token number">2</span><span class="token punctuation">)</span></span>
- <span class="token selector">.border-top-1px</span>
- <span class="token selector">&:before</span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">200</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">scale</span><span class="token punctuation">(</span><span class="token number">.5</span><span class="token punctuation">)</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span></span>
- <span class="token selector">.border-bottom-1px</span>
- <span class="token selector">&:after</span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">200</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">scale</span><span class="token punctuation">(</span><span class="token number">.5</span><span class="token punctuation">)</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span></span>
- <span class="token atrule-declaration"><span class="token atrule">@media</span> <span class="token punctuation">(</span>-webkit-min-device-pixel-ratio<span class="token punctuation">:</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>min-device-pixel-ratio<span class="token punctuation">:</span> <span class="token number">3</span><span class="token punctuation">)</span></span>
- <span class="token selector">.border-top-1px</span>
- <span class="token selector">&:before</span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">300</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">scale</span><span class="token punctuation">(</span><span class="token number">.333</span><span class="token punctuation">)</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span></span>
- <span class="token selector">.border-bottom-1px</span>
- <span class="token selector">&:after</span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">300</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">scale</span><span class="token punctuation">(</span><span class="token number">.333</span><span class="token punctuation">)</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span></span>
- <span class="token selector">.example-list</span>
- <span class="token property-declaration"><span class="token property">display</span><span class="token punctuation">:</span> flex</span>
- <span class="token property-declaration"><span class="token property">justify-content</span><span class="token punctuation">:</span> space-between</span>
- <span class="token property-declaration"><span class="token property">flex-wrap</span><span class="token punctuation">:</span> wrap</span>
- <span class="token property-declaration"><span class="token property">margin</span><span class="token punctuation">:</span> <span class="token number">2</span><span class="token unit">rem</span></span>
- <span class="token selector">.example-item</span>
- <span class="token property-declaration"><span class="token property">background-color</span> <span class="token color">white</span></span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">0.8</span><span class="token unit">rem</span></span>
- <span class="token property-declaration"><span class="token property">border</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">px</span> solid <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">.1</span><span class="token punctuation">)</span></span></span>
- <span class="token property-declaration"><span class="token property">box-shadow</span><span class="token punctuation">:</span> <span class="token number">0</span> <span class="token number">1</span><span class="token unit">px</span> <span class="token number">2</span><span class="token unit">px</span> <span class="token number">0</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token number">0.1</span><span class="token punctuation">)</span></span></span>
- <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
- <span class="token property-declaration"><span class="token property">margin-bottom</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">rem</span></span>
- <span class="token property-declaration"><span class="token property">flex</span><span class="token punctuation">:</span> <span class="token number">1</span></span>
- <span class="token selector">&.placeholder</span>
- <span class="token property-declaration"><span class="token property">visibility</span><span class="token punctuation">:</span> hidden</span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">margin</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token selector">.picker</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> fixed</span>
- <span class="token property-declaration"><span class="token property">left</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">z-index</span><span class="token punctuation">:</span> <span class="token number">100</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
- <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
- <span class="token property-declaration"><span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token number">14</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">background-color</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">37</span><span class="token punctuation">,</span> <span class="token number">38</span><span class="token punctuation">,</span> <span class="token number">45</span><span class="token punctuation">,</span> <span class="token number">.4</span><span class="token punctuation">)</span></span></span>
- <span class="token selector">&.picker-fade-enter<span class="token punctuation">,</span> &.picker-fade-leave-active</span>
- <span class="token property-declaration"><span class="token property">opacity</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token selector">&.picker-fade-enter-active<span class="token punctuation">,</span> &.picker-fade-leave-active</span>
- <span class="token property-declaration"><span class="token property">transition</span><span class="token punctuation">:</span> all <span class="token number">.3</span><span class="token unit">s</span> ease-<span class="token operator">in</span>-out</span>
- <span class="token selector">.picker-panel</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">z-index</span><span class="token punctuation">:</span> <span class="token number">600</span></span>
- <span class="token property-declaration"><span class="token property">bottom</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">273</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">background</span><span class="token punctuation">:</span> <span class="token color">white</span></span>
- <span class="token selector">&.picker-move-enter<span class="token punctuation">,</span> &.picker-move-leave-active</span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">translate3d</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">273</span><span class="token unit">px</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span></span></span>
- <span class="token selector">&.picker-move-enter-active<span class="token punctuation">,</span> &.picker-move-leave-active</span>
- <span class="token property-declaration"><span class="token property">transition</span><span class="token punctuation">:</span> all <span class="token number">.3</span><span class="token unit">s</span> ease-<span class="token operator">in</span>-out</span>
- <span class="token selector">.picker-choose</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">60</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#999</span></span>
- <span class="token selector">.picker-title</span>
- <span class="token property-declaration"><span class="token property">margin</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">line-height</span><span class="token punctuation">:</span> <span class="token number">60</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">font-weight</span><span class="token punctuation">:</span> normal</span>
- <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
- <span class="token property-declaration"><span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token number">18</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#333</span></span>
- <span class="token selector">.confirm<span class="token punctuation">,</span> .cancel</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">6</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">16</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token number">14</span><span class="token unit">px</span></span>
- <span class="token selector">.confirm</span>
- <span class="token property-declaration"><span class="token property">right</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#007bff</span></span>
- <span class="token selector">&:active</span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#5aaaff</span></span>
- <span class="token selector">.cancel</span>
- <span class="token property-declaration"><span class="token property">left</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token selector">&:active</span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#c2c2c2</span></span>
- <span class="token selector">.picker-content</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">20</span><span class="token unit">px</span></span>
- <span class="token selector">.mask-top<span class="token punctuation">,</span> .mask-bottom</span>
- <span class="token property-declaration"><span class="token property">z-index</span><span class="token punctuation">:</span> <span class="token number">10</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">68</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">pointer-events</span><span class="token punctuation">:</span> none</span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span>
- <span class="token selector">.mask-top</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">background</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">linear-gradient</span><span class="token punctuation">(</span>to top<span class="token punctuation">,</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">0.4</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">0.8</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span></span></span></span>
- <span class="token selector">.mask-bottom</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">bottom</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">background</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">linear-gradient</span><span class="token punctuation">(</span>to bottom<span class="token punctuation">,</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">0.4</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">0.8</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span></span></span></span>
- <span class="token selector">.wheel-wrapper</span>
- <span class="token property-declaration"><span class="token property">display</span><span class="token punctuation">:</span> flex</span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">0</span> <span class="token number">16</span><span class="token unit">px</span></span>
- <span class="token selector">.wheel</span>
- <span class="token property-declaration"><span class="token property">flex</span><span class="token punctuation">:</span> <span class="token number">1</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">173</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
- <span class="token property-declaration"><span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token number">18</span><span class="token unit">px</span></span>
- <span class="token selector">.wheel-scroll</span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">margin-top</span><span class="token punctuation">:</span> <span class="token number">68</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">line-height</span><span class="token punctuation">:</span> <span class="token number">36</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">list-style</span><span class="token punctuation">:</span> none</span>
- <span class="token selector">.wheel-item</span>
- <span class="token property-declaration"><span class="token property">list-style</span><span class="token punctuation">:</span> none</span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">36</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
- <span class="token property-declaration"><span class="token property">white-space</span><span class="token punctuation">:</span> nowrap</span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#333</span></span>
- <span class="token selector">&.wheel-disabled-item</span>
- <span class="token property-declaration"><span class="token property">opacity</span><span class="token punctuation">:</span> <span class="token number">.2</span><span class="token punctuation">;</span></span>
- <span class="token selector">.picker-footer</span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">20</span><span class="token unit">px</span></span>
- </style></code></pre></div></div> <i class="demo-code-content-copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#ccc"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3"></path></svg></i> <!----></div></div> <div class="demo-main"><div class="demo-component-wrap"></div></div></div> <p>Single-column Picker is a more common effect. You can use <code>selectedIndex</code> to configure the item that initializes the corresponding index. <code>wheelDisabledItemClass</code> configures the item you want to disable to simulate the Web Select tag's disable option.</p></li> <li><p><strong>Double-column Picker</strong></p> <div class="demo-wrap"><div class="demo-nav"><i class="demo-nav-btn icon-code"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#666"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"></path></svg></i> <div class="v-popover"><div class="trigger" style="display:inline-block;"><i class="demo-nav-btn icon-qrcode"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#666"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M16 20h4M4 12h4m12 0h.01M5 8h2a1 1 0 001-1V5a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1zm12 0h2a1 1 0 001-1V5a1 1 0 00-1-1h-2a1 1 0 00-1 1v2a1 1 0 001 1zM5 20h2a1 1 0 001-1v-2a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1z"></path></svg></i> </div> <div id="popover_gzluoxo9ln" aria-hidden="true" tabindex="0" class="tooltip popover vue-popover-theme" style="visibility:hidden;"><div class="wrapper"><div class="tooltip-inner popover-inner" style="position:relative;"><div><div></div></div> <div tabindex="-1" class="resize-observer" data-v-8859cc6c></div></div> <div class="tooltip-arrow popover-arrow"></div></div></div></div> <i class="demo-nav-btn icon-preview"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#666"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg></i></div> <div class="demo-code" style="display:none;"><div class="demo-code-nav"><button class="demo-code-btn active">Template</button><button class="demo-code-btn">Script</button><button class="demo-code-btn">Style</button></div> <div class="demo-code-content"><div class="demo-code-item" style="display:;"><div class="language-vue extra-class"><pre class="language-vue"><code><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>template</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>container<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ul</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>example-list<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>example-item<span class="token punctuation">"</span></span> <span class="token attr-name">@click</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>show<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>open<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>{{selectedText}}<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>ul</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>transition</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-fade<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker<span class="token punctuation">"</span></span> <span class="token attr-name">v-show</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>state===1<span class="token punctuation">"</span></span> <span class="token attr-name">@touchmove.prevent</span> <span class="token attr-name">@click</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_cancel<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>transition</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-move<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-panel<span class="token punctuation">"</span></span> <span class="token attr-name">v-show</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>state===1<span class="token punctuation">"</span></span> <span class="token attr-name">@click.stop</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-choose border-bottom-1px<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>cancel<span class="token punctuation">"</span></span> <span class="token attr-name">@click</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_cancel<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Cancel<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>confirm<span class="token punctuation">"</span></span> <span class="token attr-name">@click</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_confirm<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Confirm<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-title<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Title<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-content<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mask-top border-bottom-1px<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mask-bottom border-top-1px<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheel-wrapper<span class="token punctuation">"</span></span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheelWrapper<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheel<span class="token punctuation">"</span></span> <span class="token attr-name">v-for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>(data, index) in pickerData<span class="token punctuation">"</span></span> <span class="token attr-name">:key</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>index<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ul</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheel-scroll<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span>
- <span class="token attr-name">v-for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>item in data<span class="token punctuation">"</span></span> <span class="token attr-name">:key</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>item.value<span class="token punctuation">"</span></span>
- <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheel-item<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>{{item.text}}<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>ul</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-footer<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>transition</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>transition</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>template</span><span class="token punctuation">></span></span></code></pre></div></div><div class="demo-code-item" style="display:none;"><div class="language-vue extra-class"><pre class="language-vue"><code><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/ecmascript-6<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript">
- <span class="token keyword">import</span> BScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/core'</span>
- <span class="token keyword">import</span> Wheel <span class="token keyword">from</span> <span class="token string">'@better-scroll/wheel'</span>
- BScroll<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>Wheel<span class="token punctuation">)</span>
- <span class="token keyword">const</span> <span class="token constant">STATE_HIDE</span> <span class="token operator">=</span> <span class="token number">0</span>
- <span class="token keyword">const</span> <span class="token constant">STATE_SHOW</span> <span class="token operator">=</span> <span class="token number">1</span>
- <span class="token keyword">const</span> <span class="token constant">COMPONENT_NAME</span> <span class="token operator">=</span> <span class="token string">'picker'</span>
- <span class="token keyword">const</span> <span class="token constant">EVENT_SELECT</span> <span class="token operator">=</span> <span class="token string">'select'</span>
- <span class="token keyword">const</span> <span class="token constant">EVENT_CANCEL</span> <span class="token operator">=</span> <span class="token string">'cancel'</span>
- <span class="token keyword">const</span> <span class="token constant">EVENT_CHANGE</span> <span class="token operator">=</span> <span class="token string">'change'</span>
- <span class="token keyword">const</span> <span class="token constant">DATA1</span> <span class="token operator">=</span> <span class="token punctuation">[</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Venomancer'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">1</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Nerubian Weaver'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">2</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Spectre'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">3</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Juggernaut'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">4</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Karl'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">5</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Zeus'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">6</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Witch Doctor'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">7</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Lich'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">8</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Oracle'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">9</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Earthshaker'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token number">10</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">]</span>
- <span class="token keyword">const</span> <span class="token constant">DATA2</span> <span class="token operator">=</span> <span class="token punctuation">[</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Durable'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'a'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Pusher'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'b'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Carry'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'c'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Nuker'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'d'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Support'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'e'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Jungle'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'f'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Escape'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'g'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'Initiator'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'h'</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">]</span>
- <span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token constant">COMPONENT_NAME</span><span class="token punctuation">,</span>
- <span class="token function">data</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">return</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">state</span><span class="token operator">:</span> <span class="token constant">STATE_HIDE</span><span class="token punctuation">,</span>
- <span class="token literal-property property">selectedIndexPair</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
- <span class="token literal-property property">selectedText</span><span class="token operator">:</span> <span class="token string">'open'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">pickerData</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token constant">DATA1</span><span class="token punctuation">,</span> <span class="token constant">DATA2</span><span class="token punctuation">]</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token literal-property property">methods</span><span class="token operator">:</span> <span class="token punctuation">{</span>
- <span class="token function">_confirm</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token parameter">wheel</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token comment">/*
- * if bs is scrolling, force it stop at the nearest wheel-item
- * or you can use 'restorePosition' method as the below
- */</span>
- <span class="token comment">// wheel.stop()</span>
- <span class="token comment">/*
- * if bs is scrolling, restore it to the start position
- * it is same with iOS picker and web Select element implementation
- * supported at v2.1.0
- */</span>
- wheel<span class="token punctuation">.</span><span class="token function">restorePosition</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">hide</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token keyword">const</span> currentSelectedIndexPair <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>selectedIndexPair <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token parameter">wheel</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token keyword">return</span> wheel<span class="token punctuation">.</span><span class="token function">getSelectedIndex</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>selectedText <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>pickerData<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">data<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token keyword">const</span> index <span class="token operator">=</span> currentSelectedIndexPair<span class="token punctuation">[</span>i<span class="token punctuation">]</span>
- <span class="token keyword">return</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>data<span class="token punctuation">[</span>index<span class="token punctuation">]</span><span class="token punctuation">.</span>text<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">-</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>index<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'__'</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$emit</span><span class="token punctuation">(</span><span class="token constant">EVENT_SELECT</span><span class="token punctuation">,</span> currentSelectedIndexPair<span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">_cancel</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token comment">/*
- * if bs is scrolling, restore it to the start position
- * it is same with iOS picker and web Select element implementation
- * supported at v2.1.0
- */</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token parameter">wheel</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- wheel<span class="token punctuation">.</span><span class="token function">restorePosition</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">hide</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$emit</span><span class="token punctuation">(</span><span class="token constant">EVENT_CANCEL</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">show</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>state <span class="token operator">===</span> <span class="token constant">STATE_SHOW</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">return</span>
- <span class="token punctuation">}</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>state <span class="token operator">=</span> <span class="token constant">STATE_SHOW</span>
- <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token comment">// waiting for DOM rendered</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$nextTick</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheels <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
- <span class="token keyword">let</span> wheelWrapper <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>$refs<span class="token punctuation">.</span>wheelWrapper
- <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token keyword">this</span><span class="token punctuation">.</span>pickerData<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">_createWheel</span><span class="token punctuation">(</span>wheelWrapper<span class="token punctuation">,</span> i<span class="token punctuation">)</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">hide</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>state <span class="token operator">=</span> <span class="token constant">STATE_HIDE</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">_createWheel</span><span class="token punctuation">(</span><span class="token parameter">wheelWrapper<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">BScroll</span><span class="token punctuation">(</span>wheelWrapper<span class="token punctuation">.</span>children<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">wheel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">selectedIndex</span><span class="token operator">:</span> <span class="token keyword">this</span><span class="token punctuation">.</span>selectedIndexPair<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span>
- <span class="token literal-property property">wheelWrapperClass</span><span class="token operator">:</span> <span class="token string">'wheel-scroll'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">wheelItemClass</span><span class="token operator">:</span> <span class="token string">'wheel-item'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token literal-property property">probeType</span><span class="token operator">:</span> <span class="token number">3</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'scrollEnd'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$emit</span><span class="token punctuation">(</span><span class="token constant">EVENT_CHANGE</span><span class="token punctuation">,</span> i<span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">getSelectedIndex</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">refresh</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span>
- <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">[</span>i<span class="token punctuation">]</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
- </span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span></code></pre></div></div><div class="demo-code-item" style="display:none;"><div class="language-styl extra-class"><pre class="language-styl"><code><style scoped lang=<span class="token string">"stylus"</span> rel=<span class="token string">"stylesheet/stylus"</span>>
- <span class="token selector"><span class="token comment">/* reset */</span>
- ul</span>
- <span class="token property-declaration"><span class="token property">list-style</span> none</span>
- <span class="token property-declaration"><span class="token property">padding</span> <span class="token number">0</span></span>
- <span class="token selector">.border-bottom-1px<span class="token punctuation">,</span> .border-top-1px</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
- <span class="token selector">&:before<span class="token punctuation">,</span> &:after</span>
- <span class="token property-declaration"><span class="token property">content</span><span class="token punctuation">:</span> <span class="token string">""</span></span>
- <span class="token property-declaration"><span class="token property">display</span><span class="token punctuation">:</span> block</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">transform-origin</span><span class="token punctuation">:</span> <span class="token number">0</span> <span class="token number">0</span></span>
- <span class="token selector">.border-bottom-1px</span>
- <span class="token selector">&:after</span>
- <span class="token property-declaration"><span class="token property">border-bottom</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">px</span> solid <span class="token hexcode">#ebebeb</span></span>
- <span class="token property-declaration"><span class="token property">left</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">bottom</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform-origin</span><span class="token punctuation">:</span> <span class="token number">0</span> bottom</span>
- <span class="token selector">.border-top-1px</span>
- <span class="token selector">&:before</span>
- <span class="token property-declaration"><span class="token property">border-top</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">px</span> solid <span class="token hexcode">#ebebeb</span></span>
- <span class="token property-declaration"><span class="token property">left</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform-origin</span><span class="token punctuation">:</span> <span class="token number">0</span> top</span>
- <span class="token atrule-declaration"><span class="token atrule">@media</span> <span class="token punctuation">(</span>-webkit-min-device-pixel-ratio<span class="token punctuation">:</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>min-device-pixel-ratio<span class="token punctuation">:</span> <span class="token number">2</span><span class="token punctuation">)</span></span>
- <span class="token selector">.border-top-1px</span>
- <span class="token selector">&:before</span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">200</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">scale</span><span class="token punctuation">(</span><span class="token number">.5</span><span class="token punctuation">)</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span></span>
- <span class="token selector">.border-bottom-1px</span>
- <span class="token selector">&:after</span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">200</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">scale</span><span class="token punctuation">(</span><span class="token number">.5</span><span class="token punctuation">)</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span></span>
- <span class="token atrule-declaration"><span class="token atrule">@media</span> <span class="token punctuation">(</span>-webkit-min-device-pixel-ratio<span class="token punctuation">:</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>min-device-pixel-ratio<span class="token punctuation">:</span> <span class="token number">3</span><span class="token punctuation">)</span></span>
- <span class="token selector">.border-top-1px</span>
- <span class="token selector">&:before</span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">300</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">scale</span><span class="token punctuation">(</span><span class="token number">.333</span><span class="token punctuation">)</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span></span>
- <span class="token selector">.border-bottom-1px</span>
- <span class="token selector">&:after</span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">300</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">scale</span><span class="token punctuation">(</span><span class="token number">.333</span><span class="token punctuation">)</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span></span>
- <span class="token selector">.example-list</span>
- <span class="token property-declaration"><span class="token property">display</span><span class="token punctuation">:</span> flex</span>
- <span class="token property-declaration"><span class="token property">justify-content</span><span class="token punctuation">:</span> space-between</span>
- <span class="token property-declaration"><span class="token property">flex-wrap</span><span class="token punctuation">:</span> wrap</span>
- <span class="token property-declaration"><span class="token property">margin</span><span class="token punctuation">:</span> <span class="token number">2</span><span class="token unit">rem</span></span>
- <span class="token selector">.example-item</span>
- <span class="token property-declaration"><span class="token property">background-color</span> <span class="token color">white</span></span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">0.8</span><span class="token unit">rem</span></span>
- <span class="token property-declaration"><span class="token property">border</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">px</span> solid <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">.1</span><span class="token punctuation">)</span></span></span>
- <span class="token property-declaration"><span class="token property">box-shadow</span><span class="token punctuation">:</span> <span class="token number">0</span> <span class="token number">1</span><span class="token unit">px</span> <span class="token number">2</span><span class="token unit">px</span> <span class="token number">0</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token number">0.1</span><span class="token punctuation">)</span></span></span>
- <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
- <span class="token property-declaration"><span class="token property">margin-bottom</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">rem</span></span>
- <span class="token property-declaration"><span class="token property">flex</span><span class="token punctuation">:</span> <span class="token number">1</span></span>
- <span class="token selector">&.placeholder</span>
- <span class="token property-declaration"><span class="token property">visibility</span><span class="token punctuation">:</span> hidden</span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">margin</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token selector">.picker</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> fixed</span>
- <span class="token property-declaration"><span class="token property">left</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">z-index</span><span class="token punctuation">:</span> <span class="token number">100</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
- <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
- <span class="token property-declaration"><span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token number">14</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">background-color</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">37</span><span class="token punctuation">,</span> <span class="token number">38</span><span class="token punctuation">,</span> <span class="token number">45</span><span class="token punctuation">,</span> <span class="token number">.4</span><span class="token punctuation">)</span></span></span>
- <span class="token selector">&.picker-fade-enter<span class="token punctuation">,</span> &.picker-fade-leave-active</span>
- <span class="token property-declaration"><span class="token property">opacity</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token selector">&.picker-fade-enter-active<span class="token punctuation">,</span> &.picker-fade-leave-active</span>
- <span class="token property-declaration"><span class="token property">transition</span><span class="token punctuation">:</span> all <span class="token number">.3</span><span class="token unit">s</span> ease-<span class="token operator">in</span>-out</span>
- <span class="token selector">.picker-panel</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">z-index</span><span class="token punctuation">:</span> <span class="token number">600</span></span>
- <span class="token property-declaration"><span class="token property">bottom</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">273</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">background</span><span class="token punctuation">:</span> <span class="token color">white</span></span>
- <span class="token selector">&.picker-move-enter<span class="token punctuation">,</span> &.picker-move-leave-active</span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">translate3d</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">273</span><span class="token unit">px</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span></span></span>
- <span class="token selector">&.picker-move-enter-active<span class="token punctuation">,</span> &.picker-move-leave-active</span>
- <span class="token property-declaration"><span class="token property">transition</span><span class="token punctuation">:</span> all <span class="token number">.3</span><span class="token unit">s</span> ease-<span class="token operator">in</span>-out</span>
- <span class="token selector">.picker-choose</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">60</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#999</span></span>
- <span class="token selector">.picker-title</span>
- <span class="token property-declaration"><span class="token property">margin</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">line-height</span><span class="token punctuation">:</span> <span class="token number">60</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">font-weight</span><span class="token punctuation">:</span> normal</span>
- <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
- <span class="token property-declaration"><span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token number">18</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#333</span></span>
- <span class="token selector">.confirm<span class="token punctuation">,</span> .cancel</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">6</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">16</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token number">14</span><span class="token unit">px</span></span>
- <span class="token selector">.confirm</span>
- <span class="token property-declaration"><span class="token property">right</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#007bff</span></span>
- <span class="token selector">&:active</span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#5aaaff</span></span>
- <span class="token selector">.cancel</span>
- <span class="token property-declaration"><span class="token property">left</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token selector">&:active</span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#c2c2c2</span></span>
- <span class="token selector">.picker-content</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">20</span><span class="token unit">px</span></span>
- <span class="token selector">.mask-top<span class="token punctuation">,</span> .mask-bottom</span>
- <span class="token property-declaration"><span class="token property">z-index</span><span class="token punctuation">:</span> <span class="token number">10</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">68</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">pointer-events</span><span class="token punctuation">:</span> none</span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span>
- <span class="token selector">.mask-top</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">background</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">linear-gradient</span><span class="token punctuation">(</span>to top<span class="token punctuation">,</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">0.4</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">0.8</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span></span></span></span>
- <span class="token selector">.mask-bottom</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">bottom</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">background</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">linear-gradient</span><span class="token punctuation">(</span>to bottom<span class="token punctuation">,</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">0.4</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">0.8</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span></span></span></span>
- <span class="token selector">.wheel-wrapper</span>
- <span class="token property-declaration"><span class="token property">display</span><span class="token punctuation">:</span> flex</span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">0</span> <span class="token number">16</span><span class="token unit">px</span></span>
- <span class="token selector">.wheel</span>
- <span class="token property-declaration"><span class="token property">flex</span><span class="token punctuation">:</span> <span class="token number">1</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">173</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
- <span class="token property-declaration"><span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token number">18</span><span class="token unit">px</span></span>
- <span class="token selector">.wheel-scroll</span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">margin-top</span><span class="token punctuation">:</span> <span class="token number">68</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">line-height</span><span class="token punctuation">:</span> <span class="token number">36</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">list-style</span><span class="token punctuation">:</span> none</span>
- <span class="token selector">.wheel-item</span>
- <span class="token property-declaration"><span class="token property">list-style</span><span class="token punctuation">:</span> none</span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">36</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
- <span class="token property-declaration"><span class="token property">white-space</span><span class="token punctuation">:</span> nowrap</span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#333</span></span>
- <span class="token selector">&.wheel-disabled-item</span>
- <span class="token property-declaration"><span class="token property">opacity</span><span class="token punctuation">:</span> <span class="token number">.2</span><span class="token punctuation">;</span></span>
- <span class="token selector">.picker-footer</span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">20</span><span class="token unit">px</span></span>
- </style></code></pre></div></div> <i class="demo-code-content-copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#ccc"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3"></path></svg></i> <!----></div></div> <div class="demo-main"><div class="demo-component-wrap"></div></div></div> <p>The JS logic part is not much different from the single-column selector. You will find that there is no correlation between the two column selectors because they are two different BetterScroll instances. If you want to achieve the effect of the provincial and city linkage, then add a part of the code to make the two BetterScroll instances can be associated. Please see the next example:</p></li> <li><p><strong>Linkage Picker</strong></p> <div class="demo-wrap"><div class="demo-nav"><i class="demo-nav-btn icon-code"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#666"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"></path></svg></i> <div class="v-popover"><div class="trigger" style="display:inline-block;"><i class="demo-nav-btn icon-qrcode"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#666"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M16 20h4M4 12h4m12 0h.01M5 8h2a1 1 0 001-1V5a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1zm12 0h2a1 1 0 001-1V5a1 1 0 00-1-1h-2a1 1 0 00-1 1v2a1 1 0 001 1zM5 20h2a1 1 0 001-1v-2a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1z"></path></svg></i> </div> <div id="popover_nfg4hb61ca" aria-hidden="true" tabindex="0" class="tooltip popover vue-popover-theme" style="visibility:hidden;"><div class="wrapper"><div class="tooltip-inner popover-inner" style="position:relative;"><div><div></div></div> <div tabindex="-1" class="resize-observer" data-v-8859cc6c></div></div> <div class="tooltip-arrow popover-arrow"></div></div></div></div> <i class="demo-nav-btn icon-preview"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#666"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg></i></div> <div class="demo-code" style="display:none;"><div class="demo-code-nav"><button class="demo-code-btn active">Template</button><button class="demo-code-btn">Script</button><button class="demo-code-btn">Style</button></div> <div class="demo-code-content"><div class="demo-code-item" style="display:;"><div class="language-vue extra-class"><pre class="language-vue"><code><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>template</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>container<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ul</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>example-list<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>example-item<span class="token punctuation">"</span></span> <span class="token attr-name">@click</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>show<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>open<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>{{selectedText}}<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>ul</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>transition</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-fade<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker<span class="token punctuation">"</span></span> <span class="token attr-name">v-show</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>state===1<span class="token punctuation">"</span></span> <span class="token attr-name">@touchmove.prevent</span> <span class="token attr-name">@click</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_cancel<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>transition</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-move<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-panel<span class="token punctuation">"</span></span> <span class="token attr-name">v-show</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>state===1<span class="token punctuation">"</span></span> <span class="token attr-name">@click.stop</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-choose border-bottom-1px<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>cancel<span class="token punctuation">"</span></span> <span class="token attr-name">@click</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_cancel<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Cancel<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>confirm<span class="token punctuation">"</span></span> <span class="token attr-name">@click</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>_confirm<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Confirm<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>span</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-title<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Title<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-content<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mask-top border-bottom-1px<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>mask-bottom border-top-1px<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheel-wrapper<span class="token punctuation">"</span></span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheelWrapper<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheel<span class="token punctuation">"</span></span> <span class="token attr-name">v-for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>(data, index) in pickerData<span class="token punctuation">"</span></span> <span class="token attr-name">:key</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>index<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ul</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheel-scroll<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span>
- <span class="token attr-name">v-for</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>item in data<span class="token punctuation">"</span></span> <span class="token attr-name">:key</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>item.value<span class="token punctuation">"</span></span>
- <span class="token attr-name">:class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{'wheel-disabled-item':item.disabled}<span class="token punctuation">"</span></span>
- <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>wheel-item<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>{{item.text}}<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>ul</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>picker-footer<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>transition</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>transition</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span>
- <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>template</span><span class="token punctuation">></span></span></code></pre></div></div><div class="demo-code-item" style="display:none;"><div class="language-vue extra-class"><pre class="language-vue"><code><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/ecmascript-6<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript">
- <span class="token keyword">import</span> BScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/core'</span>
- <span class="token keyword">import</span> Wheel <span class="token keyword">from</span> <span class="token string">'@better-scroll/wheel'</span>
- BScroll<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>Wheel<span class="token punctuation">)</span>
- <span class="token keyword">const</span> <span class="token constant">STATE_HIDE</span> <span class="token operator">=</span> <span class="token number">0</span>
- <span class="token keyword">const</span> <span class="token constant">STATE_SHOW</span> <span class="token operator">=</span> <span class="token number">1</span>
- <span class="token keyword">const</span> <span class="token constant">COMPONENT_NAME</span> <span class="token operator">=</span> <span class="token string">'picker'</span>
- <span class="token keyword">const</span> <span class="token constant">EVENT_SELECT</span> <span class="token operator">=</span> <span class="token string">'select'</span>
- <span class="token keyword">const</span> <span class="token constant">EVENT_CANCEL</span> <span class="token operator">=</span> <span class="token string">'cancel'</span>
- <span class="token keyword">const</span> <span class="token constant">EVENT_CHANGE</span> <span class="token operator">=</span> <span class="token string">'change'</span>
- <span class="token keyword">const</span> <span class="token constant">DATA</span> <span class="token operator">=</span> <span class="token punctuation">[</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'北京市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'110000'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">children</span><span class="token operator">:</span> <span class="token punctuation">[</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">"北京市"</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'110100'</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">]</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'天津市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'120000'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">children</span><span class="token operator">:</span> <span class="token punctuation">[</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">"天津市"</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'120000'</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">]</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'河北省'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'130000'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">children</span><span class="token operator">:</span> <span class="token punctuation">[</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'石家庄市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'130100'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'唐山市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'130200'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'秦皇岛市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'130300'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'邯郸市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'130400'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'邢台市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'130500'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'保定市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'130600'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'张家口市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'130700'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'承德市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'130800'</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">]</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'山西省'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'140000'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">children</span><span class="token operator">:</span> <span class="token punctuation">[</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'太原市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'140100'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'大同市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'140200'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'阳泉市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'140300'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'长治市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'140400'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'晋城市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'140500'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'朔州市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'140600'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token punctuation">{</span>
- <span class="token literal-property property">text</span><span class="token operator">:</span> <span class="token string">'晋中市'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">value</span><span class="token operator">:</span> <span class="token string">'140700'</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">]</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">]</span>
- <span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">name</span><span class="token operator">:</span> <span class="token constant">COMPONENT_NAME</span><span class="token punctuation">,</span>
- <span class="token function">data</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">return</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">state</span><span class="token operator">:</span> <span class="token constant">STATE_HIDE</span><span class="token punctuation">,</span>
- <span class="token literal-property property">selectedIndexPair</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
- <span class="token literal-property property">selectedText</span><span class="token operator">:</span> <span class="token string">'open'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">pickerData</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">created</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token comment">// generate data</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">_loadPickerData</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>selectedIndexPair<span class="token punctuation">,</span> <span class="token keyword">undefined</span> <span class="token comment">/* no prevSelectedIndex due to instantiating */</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token literal-property property">methods</span><span class="token operator">:</span> <span class="token punctuation">{</span>
- <span class="token function">_loadPickerData</span> <span class="token punctuation">(</span><span class="token parameter">newIndexPair<span class="token punctuation">,</span> oldIndexPair</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">let</span> provinces
- <span class="token keyword">let</span> cities
- <span class="token comment">// first instantiated</span>
- <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>oldIndexPair<span class="token punctuation">)</span> <span class="token punctuation">{</span>
- provinces <span class="token operator">=</span> <span class="token constant">DATA</span><span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter"><span class="token punctuation">{</span> value<span class="token punctuation">,</span> text <span class="token punctuation">}</span></span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">(</span><span class="token punctuation">{</span> value<span class="token punctuation">,</span> text <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
- cities <span class="token operator">=</span> <span class="token constant">DATA</span><span class="token punctuation">[</span>newIndexPair<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">.</span>children
- <span class="token keyword">this</span><span class="token punctuation">.</span>pickerData <span class="token operator">=</span> <span class="token punctuation">[</span>provinces<span class="token punctuation">,</span> cities<span class="token punctuation">]</span>
- <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
- <span class="token comment">// provinces'index changed, refresh cities data</span>
- <span class="token keyword">if</span> <span class="token punctuation">(</span>newIndexPair<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">!==</span> oldIndexPair<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- cities <span class="token operator">=</span> <span class="token constant">DATA</span><span class="token punctuation">[</span>newIndexPair<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">.</span>children
- <span class="token keyword">this</span><span class="token punctuation">.</span>pickerData<span class="token punctuation">.</span><span class="token function">splice</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> cities<span class="token punctuation">)</span>
- <span class="token comment">// Since cities data changed</span>
- <span class="token comment">// refresh better-scroll to recaculate scrollHeight</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$nextTick</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">refresh</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">_confirm</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token parameter">wheel</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token comment">/*
- * if bs is scrolling, force it stop at the nearest wheel-item
- * or you can use 'restorePosition' method as the below
- */</span>
- <span class="token comment">// wheel.stop()</span>
- <span class="token comment">/*
- * if bs is scrolling, restore it to the start position
- * it is same with iOS picker and web Select element implementation
- * supported at v2.1.0
- */</span>
- wheel<span class="token punctuation">.</span><span class="token function">restorePosition</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">hide</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token keyword">const</span> currentSelectedIndexPair <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>selectedIndexPair <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token parameter">wheel</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token keyword">return</span> wheel<span class="token punctuation">.</span><span class="token function">getSelectedIndex</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>selectedText <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>pickerData<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">data<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token keyword">const</span> index <span class="token operator">=</span> currentSelectedIndexPair<span class="token punctuation">[</span>i<span class="token punctuation">]</span>
- <span class="token keyword">return</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>data<span class="token punctuation">[</span>index<span class="token punctuation">]</span><span class="token punctuation">.</span>text<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">-</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>index<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">'__'</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$emit</span><span class="token punctuation">(</span><span class="token constant">EVENT_SELECT</span><span class="token punctuation">,</span> currentSelectedIndexPair<span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">_cancel</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token comment">/*
- * if bs is scrolling, restore it to the start position
- * it is same with iOS picker and web Select element implementation
- * supported at v2.1.0
- */</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token parameter">wheel</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- wheel<span class="token punctuation">.</span><span class="token function">restorePosition</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">hide</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$emit</span><span class="token punctuation">(</span><span class="token constant">EVENT_CANCEL</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">show</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>state <span class="token operator">===</span> <span class="token constant">STATE_SHOW</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">return</span>
- <span class="token punctuation">}</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>state <span class="token operator">=</span> <span class="token constant">STATE_SHOW</span>
- <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$nextTick</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>wheels <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
- <span class="token keyword">let</span> wheelWrapper <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>$refs<span class="token punctuation">.</span>wheelWrapper
- <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token keyword">this</span><span class="token punctuation">.</span>pickerData<span class="token punctuation">.</span>length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">_createWheel</span><span class="token punctuation">(</span>wheelWrapper<span class="token punctuation">,</span> i<span class="token punctuation">)</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">hide</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span>state <span class="token operator">=</span> <span class="token constant">STATE_HIDE</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token function">_createWheel</span><span class="token punctuation">(</span><span class="token parameter">wheelWrapper<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- <span class="token keyword">const</span> wheels <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>wheels
- <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>wheels<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
- wheels<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">BScroll</span><span class="token punctuation">(</span>wheelWrapper<span class="token punctuation">.</span>children<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">wheel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">selectedIndex</span><span class="token operator">:</span> <span class="token keyword">this</span><span class="token punctuation">.</span>selectedIndexPair<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span>
- <span class="token literal-property property">wheelWrapperClass</span><span class="token operator">:</span> <span class="token string">'wheel-scroll'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">wheelItemClass</span><span class="token operator">:</span> <span class="token string">'wheel-item'</span>
- <span class="token punctuation">}</span><span class="token punctuation">,</span>
- <span class="token literal-property property">probeType</span><span class="token operator">:</span> <span class="token number">3</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token comment">// when any of wheels'scrolling ended , refresh data</span>
- <span class="token keyword">let</span> prevSelectedIndexPair <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>selectedIndexPair
- wheels<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'scrollEnd'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- <span class="token keyword">const</span> currentSelectedIndexPair <span class="token operator">=</span> wheels<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token parameter">wheel</span> <span class="token operator">=></span> wheel<span class="token punctuation">.</span><span class="token function">getSelectedIndex</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">_loadPickerData</span><span class="token punctuation">(</span>currentSelectedIndexPair<span class="token punctuation">,</span> prevSelectedIndexPair<span class="token punctuation">)</span>
- prevSelectedIndexPair <span class="token operator">=</span> currentSelectedIndexPair
- <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$emit</span><span class="token punctuation">(</span><span class="token constant">EVENT_CHANGE</span><span class="token punctuation">,</span> i<span class="token punctuation">,</span> <span class="token keyword">this</span><span class="token punctuation">.</span>wheels<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">getSelectedIndex</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
- wheels<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">refresh</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- <span class="token punctuation">}</span>
- <span class="token keyword">return</span> wheels<span class="token punctuation">[</span>i<span class="token punctuation">]</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span>
- </span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>script</span><span class="token punctuation">></span></span></code></pre></div></div><div class="demo-code-item" style="display:none;"><div class="language-styl extra-class"><pre class="language-styl"><code><style scoped lang=<span class="token string">"stylus"</span> rel=<span class="token string">"stylesheet/stylus"</span>>
- <span class="token selector"><span class="token comment">/* reset */</span>
- ul</span>
- <span class="token property-declaration"><span class="token property">list-style</span> none</span>
- <span class="token property-declaration"><span class="token property">padding</span> <span class="token number">0</span></span>
- <span class="token selector">.border-bottom-1px<span class="token punctuation">,</span> .border-top-1px</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
- <span class="token selector">&:before<span class="token punctuation">,</span> &:after</span>
- <span class="token property-declaration"><span class="token property">content</span><span class="token punctuation">:</span> <span class="token string">""</span></span>
- <span class="token property-declaration"><span class="token property">display</span><span class="token punctuation">:</span> block</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">transform-origin</span><span class="token punctuation">:</span> <span class="token number">0</span> <span class="token number">0</span></span>
- <span class="token selector">.border-bottom-1px</span>
- <span class="token selector">&:after</span>
- <span class="token property-declaration"><span class="token property">border-bottom</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">px</span> solid <span class="token hexcode">#ebebeb</span></span>
- <span class="token property-declaration"><span class="token property">left</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">bottom</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform-origin</span><span class="token punctuation">:</span> <span class="token number">0</span> bottom</span>
- <span class="token selector">.border-top-1px</span>
- <span class="token selector">&:before</span>
- <span class="token property-declaration"><span class="token property">border-top</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">px</span> solid <span class="token hexcode">#ebebeb</span></span>
- <span class="token property-declaration"><span class="token property">left</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform-origin</span><span class="token punctuation">:</span> <span class="token number">0</span> top</span>
- <span class="token atrule-declaration"><span class="token atrule">@media</span> <span class="token punctuation">(</span>-webkit-min-device-pixel-ratio<span class="token punctuation">:</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>min-device-pixel-ratio<span class="token punctuation">:</span> <span class="token number">2</span><span class="token punctuation">)</span></span>
- <span class="token selector">.border-top-1px</span>
- <span class="token selector">&:before</span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">200</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">scale</span><span class="token punctuation">(</span><span class="token number">.5</span><span class="token punctuation">)</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span></span>
- <span class="token selector">.border-bottom-1px</span>
- <span class="token selector">&:after</span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">200</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">scale</span><span class="token punctuation">(</span><span class="token number">.5</span><span class="token punctuation">)</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span></span>
- <span class="token atrule-declaration"><span class="token atrule">@media</span> <span class="token punctuation">(</span>-webkit-min-device-pixel-ratio<span class="token punctuation">:</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>min-device-pixel-ratio<span class="token punctuation">:</span> <span class="token number">3</span><span class="token punctuation">)</span></span>
- <span class="token selector">.border-top-1px</span>
- <span class="token selector">&:before</span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">300</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">scale</span><span class="token punctuation">(</span><span class="token number">.333</span><span class="token punctuation">)</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span></span>
- <span class="token selector">.border-bottom-1px</span>
- <span class="token selector">&:after</span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">300</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">scale</span><span class="token punctuation">(</span><span class="token number">.333</span><span class="token punctuation">)</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span></span>
- <span class="token selector">.example-list</span>
- <span class="token property-declaration"><span class="token property">display</span><span class="token punctuation">:</span> flex</span>
- <span class="token property-declaration"><span class="token property">justify-content</span><span class="token punctuation">:</span> space-between</span>
- <span class="token property-declaration"><span class="token property">flex-wrap</span><span class="token punctuation">:</span> wrap</span>
- <span class="token property-declaration"><span class="token property">margin</span><span class="token punctuation">:</span> <span class="token number">2</span><span class="token unit">rem</span></span>
- <span class="token selector">.example-item</span>
- <span class="token property-declaration"><span class="token property">background-color</span> <span class="token color">white</span></span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">0.8</span><span class="token unit">rem</span></span>
- <span class="token property-declaration"><span class="token property">border</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">px</span> solid <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">.1</span><span class="token punctuation">)</span></span></span>
- <span class="token property-declaration"><span class="token property">box-shadow</span><span class="token punctuation">:</span> <span class="token number">0</span> <span class="token number">1</span><span class="token unit">px</span> <span class="token number">2</span><span class="token unit">px</span> <span class="token number">0</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token number">0.1</span><span class="token punctuation">)</span></span></span>
- <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
- <span class="token property-declaration"><span class="token property">margin-bottom</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">rem</span></span>
- <span class="token property-declaration"><span class="token property">flex</span><span class="token punctuation">:</span> <span class="token number">1</span></span>
- <span class="token selector">&.placeholder</span>
- <span class="token property-declaration"><span class="token property">visibility</span><span class="token punctuation">:</span> hidden</span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">margin</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token selector">.picker</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> fixed</span>
- <span class="token property-declaration"><span class="token property">left</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">z-index</span><span class="token punctuation">:</span> <span class="token number">100</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
- <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
- <span class="token property-declaration"><span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token number">14</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">background-color</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">37</span><span class="token punctuation">,</span> <span class="token number">38</span><span class="token punctuation">,</span> <span class="token number">45</span><span class="token punctuation">,</span> <span class="token number">.4</span><span class="token punctuation">)</span></span></span>
- <span class="token selector">&.picker-fade-enter<span class="token punctuation">,</span> &.picker-fade-leave-active</span>
- <span class="token property-declaration"><span class="token property">opacity</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token selector">&.picker-fade-enter-active<span class="token punctuation">,</span> &.picker-fade-leave-active</span>
- <span class="token property-declaration"><span class="token property">transition</span><span class="token punctuation">:</span> all <span class="token number">.3</span><span class="token unit">s</span> ease-<span class="token operator">in</span>-out</span>
- <span class="token selector">.picker-panel</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">z-index</span><span class="token punctuation">:</span> <span class="token number">600</span></span>
- <span class="token property-declaration"><span class="token property">bottom</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">273</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">background</span><span class="token punctuation">:</span> <span class="token color">white</span></span>
- <span class="token selector">&.picker-move-enter<span class="token punctuation">,</span> &.picker-move-leave-active</span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">translate3d</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">273</span><span class="token unit">px</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span></span></span>
- <span class="token selector">&.picker-move-enter-active<span class="token punctuation">,</span> &.picker-move-leave-active</span>
- <span class="token property-declaration"><span class="token property">transition</span><span class="token punctuation">:</span> all <span class="token number">.3</span><span class="token unit">s</span> ease-<span class="token operator">in</span>-out</span>
- <span class="token selector">.picker-choose</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">60</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#999</span></span>
- <span class="token selector">.picker-title</span>
- <span class="token property-declaration"><span class="token property">margin</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">line-height</span><span class="token punctuation">:</span> <span class="token number">60</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">font-weight</span><span class="token punctuation">:</span> normal</span>
- <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
- <span class="token property-declaration"><span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token number">18</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#333</span></span>
- <span class="token selector">.confirm<span class="token punctuation">,</span> .cancel</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">6</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">16</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token number">14</span><span class="token unit">px</span></span>
- <span class="token selector">.confirm</span>
- <span class="token property-declaration"><span class="token property">right</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#007bff</span></span>
- <span class="token selector">&:active</span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#5aaaff</span></span>
- <span class="token selector">.cancel</span>
- <span class="token property-declaration"><span class="token property">left</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token selector">&:active</span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#c2c2c2</span></span>
- <span class="token selector">.picker-content</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">20</span><span class="token unit">px</span></span>
- <span class="token selector">.mask-top<span class="token punctuation">,</span> .mask-bottom</span>
- <span class="token property-declaration"><span class="token property">z-index</span><span class="token punctuation">:</span> <span class="token number">10</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">100</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">68</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">pointer-events</span><span class="token punctuation">:</span> none</span>
- <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">translateZ</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span></span></span>
- <span class="token selector">.mask-top</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">top</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">background</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">linear-gradient</span><span class="token punctuation">(</span>to top<span class="token punctuation">,</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">0.4</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">0.8</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span></span></span></span>
- <span class="token selector">.mask-bottom</span>
- <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> absolute</span>
- <span class="token property-declaration"><span class="token property">bottom</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">background</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">linear-gradient</span><span class="token punctuation">(</span>to bottom<span class="token punctuation">,</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">0.4</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">255</span><span class="token punctuation">,</span> <span class="token number">0.8</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span></span></span></span>
- <span class="token selector">.wheel-wrapper</span>
- <span class="token property-declaration"><span class="token property">display</span><span class="token punctuation">:</span> flex</span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">0</span> <span class="token number">16</span><span class="token unit">px</span></span>
- <span class="token selector">.wheel</span>
- <span class="token property-declaration"><span class="token property">flex</span><span class="token punctuation">:</span> <span class="token number">1</span></span>
- <span class="token property-declaration"><span class="token property">width</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token unit">%</span></span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">173</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
- <span class="token property-declaration"><span class="token property">font-size</span><span class="token punctuation">:</span> <span class="token number">18</span><span class="token unit">px</span></span>
- <span class="token selector">.wheel-scroll</span>
- <span class="token property-declaration"><span class="token property">padding</span><span class="token punctuation">:</span> <span class="token number">0</span></span>
- <span class="token property-declaration"><span class="token property">margin-top</span><span class="token punctuation">:</span> <span class="token number">68</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">line-height</span><span class="token punctuation">:</span> <span class="token number">36</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">list-style</span><span class="token punctuation">:</span> none</span>
- <span class="token selector">.wheel-item</span>
- <span class="token property-declaration"><span class="token property">list-style</span><span class="token punctuation">:</span> none</span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">36</span><span class="token unit">px</span></span>
- <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
- <span class="token property-declaration"><span class="token property">white-space</span><span class="token punctuation">:</span> nowrap</span>
- <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#333</span></span>
- <span class="token selector">&.wheel-disabled-item</span>
- <span class="token property-declaration"><span class="token property">opacity</span><span class="token punctuation">:</span> <span class="token number">.2</span><span class="token punctuation">;</span></span>
- <span class="token selector">.picker-footer</span>
- <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">20</span><span class="token unit">px</span></span>
- </style></code></pre></div></div> <i class="demo-code-content-copy"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#ccc"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3"></path></svg></i> <!----></div></div> <div class="demo-main"><div class="demo-component-wrap"></div></div></div> <p>The effect of the city linkage Picker must be linked through the JS part of the logic to the different instances of BetterScroll.</p></li></ul> <h2 id="wheel-options"><a href="#wheel-options" class="header-anchor">#</a> wheel options</h2> <div class="custom-block tip"><p class="custom-block-title">TIP</p> <p>When <code>wheel</code> is configured as <code>true</code>, the plugin uses the default plugin option.</p> <div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> bs <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">BScroll</span><span class="token punctuation">(</span><span class="token string">'.wrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">wheel</span><span class="token operator">:</span> <span class="token boolean">true</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- <span class="token comment">// equals</span>
- <span class="token keyword">const</span> bs <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">BScroll</span><span class="token punctuation">(</span><span class="token string">'.wrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">wheel</span><span class="token operator">:</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">wheelWrapperClass</span><span class="token operator">:</span> <span class="token string">'wheel-scroll'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">wheelItemClass</span><span class="token operator">:</span> <span class="token string">'wheel-item'</span><span class="token punctuation">,</span>
- <span class="token literal-property property">rotate</span><span class="token operator">:</span> <span class="token number">25</span><span class="token punctuation">,</span>
- <span class="token literal-property property">adjustTime</span><span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span>
- <span class="token literal-property property">selectedIndex</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
- <span class="token literal-property property">wheelDisabledItemClass</span><span class="token operator">:</span> <span class="token string">'wheel-disabled-item'</span>
- <span class="token punctuation">}</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- </code></pre></div></div> <h3 id="selectedindex"><a href="#selectedindex" class="header-anchor">#</a> selectedIndex</h3> <ul><li><strong>Type</strong>: <code>number</code></li> <li><strong>Default</strong>:<code>0</code></li></ul> <p>Instantiate the Wheel, the <code>selectedIndex</code> item is selected by default, and the index starts from 0.</p> <h3 id="rotate"><a href="#rotate" class="header-anchor">#</a> rotate</h3> <ul><li><strong>Type</strong>: <code>number</code></li> <li><strong>Default</strong>: <code>25</code></li></ul> <p>When rolling the wheel, the degree of bending of the wheel item.</p> <h3 id="adjusttime"><a href="#adjusttime" class="header-anchor">#</a> adjustTime</h3> <ul><li><strong>Type</strong>: <code>number</code></li> <li><strong>Default</strong>: <code>400</code>(ms)</li></ul> <p>When an item is clicked, the duration of scroll.</p> <h3 id="wheelwrapperclass"><a href="#wheelwrapperclass" class="header-anchor">#</a> wheelWrapperClass</h3> <ul><li><strong>Type</strong>: <code>string</code></li> <li><strong>Default</strong>: <code>wheel-scroll</code></li></ul> <p>The className of the scroll element, where "scroll element" refers to the <code>content</code> element of BetterScroll.</p> <h3 id="wheelitemclass"><a href="#wheelitemclass" class="header-anchor">#</a> wheelItemClass</h3> <ul><li><strong>Type</strong>: <code>string</code></li> <li><strong>Default</strong>: <code>wheel-item</code></li></ul> <p>The style of the child elements of the scroll element.</p> <h3 id="wheeldisableditemclass"><a href="#wheeldisableditemclass" class="header-anchor">#</a> wheelDisabledItemClass</h3> <ul><li><strong>Type</strong>: <code>string</code></li> <li><strong>Default</strong>: <code>wheel-disabled-item</code></li></ul> <p>The child element that you want to disable in the scroll element is similar to the effect of the disabled option in the select element. The wheel plugin judges whether the item is designated as disabled according to the <code>wheelDisabledItemClass</code> configuration.</p> <h2 id="instance-methods"><a href="#instance-methods" class="header-anchor">#</a> Instance Methods</h2> <div class="custom-block tip"><p class="custom-block-title">TIP</p> <p>All methods are proxied to BetterScroll instance, for example:</p> <div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">import</span> BScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/core'</span>
- <span class="token keyword">import</span> Wheel <span class="token keyword">from</span> <span class="token string">'@better-scroll/wheel'</span>
- BScroll<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>Wheel<span class="token punctuation">)</span>
- <span class="token keyword">const</span> bs <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">BScroll</span><span class="token punctuation">(</span><span class="token string">'.bs-wrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">wheel</span><span class="token operator">:</span> <span class="token boolean">true</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- bs<span class="token punctuation">.</span><span class="token function">getSelectedIndex</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
- bs<span class="token punctuation">.</span><span class="token function">wheelTo</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">300</span><span class="token punctuation">)</span>
- </code></pre></div></div> <h3 id="getselectedindex"><a href="#getselectedindex" class="header-anchor">#</a> getSelectedIndex()</h3> <ul><li><strong>Returns</strong>: The index of the currently selected item, the subscript starts from 0</li></ul> <p>Get the index of the currently selected item.</p> <h3 id="wheelto-index-0-time-0-ease"><a href="#wheelto-index-0-time-0-ease" class="header-anchor">#</a> wheelTo(index = 0, time = 0, [ease])</h3> <ul><li><strong>Arguments</strong>:
- <ul><li><code>{ number } index</code></li> <li><code>{ number } time</code>: Animation duration</li> <li><code>{ number } ease<Optional></code>: Ease effect configuration, refer to <a href="https://github.com/ustbhuangyi/better-scroll/blob/dev/packages/shared-utils/src/ease.ts" target="_blank" rel="noopener noreferrer">ease.ts<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>, the default is <code>bounce</code> effect</li></ul> <div class="language-typescript extra-class"><pre class="language-typescript"><code><span class="token keyword">interface</span> <span class="token class-name">EaseItem</span> <span class="token punctuation">{</span>
- style<span class="token operator">:</span> <span class="token builtin">string</span>
- <span class="token function">fn</span><span class="token punctuation">(</span>t<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token builtin">number</span>
- <span class="token punctuation">}</span>
- </code></pre></div></li></ul> <p>Scroll to the list item corresponding to the index.</p> <h3 id="stop"><a href="#stop" class="header-anchor">#</a> stop() <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>2.1.0</span></h3> <p>Force the scrolling BetterScroll to stop and snap to the position of the wheel-item closest to the current one.</p> <h3 id="restoreposition"><a href="#restoreposition" class="header-anchor">#</a> restorePosition() <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>2.1.0</span></h3> <p>Force the scrolling BetterScroll to stop and return to the position before the scrolling started.</p> <div class="custom-block tip"><p class="custom-block-title">TIP</p> <p>The above two methods are only valid for <strong>the scrolling BetterScroll</strong>, and <code>restorePosition</code> is exactly the same as the original iOS Picker component. Users can choose the corresponding method according to their needs.</p></div> <h2 id="events"><a href="#events" class="header-anchor">#</a> Events</h2> <h3 id="wheelindexchanged"><a href="#wheelindexchanged" class="header-anchor">#</a> wheelIndexChanged <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>2.1.0</span></h3> <ul><li><strong>Arguments</strong>: The index of the current selected wheel-item.</li> <li><strong>Trigger timing</strong>: When the selected wheel-item changes.</li></ul> <div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">import</span> BScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/core'</span>
- <span class="token keyword">import</span> Wheel <span class="token keyword">from</span> <span class="token string">'@better-scroll/wheel'</span>
- BScroll<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>Wheel<span class="token punctuation">)</span>
- <span class="token keyword">const</span> bs <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">BScroll</span><span class="token punctuation">(</span><span class="token string">'.bs-wrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
- <span class="token literal-property property">wheel</span><span class="token operator">:</span> <span class="token boolean">true</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- bs<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'wheelIndexChanged'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">index</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
- console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>index<span class="token punctuation">)</span>
- <span class="token punctuation">}</span><span class="token punctuation">)</span>
- </code></pre></div></div> <footer class="page-edit"><div class="edit-link"><a href="https://github.com/ustbhuangyi/better-scroll/edit/dev/packages/vuepress-docs/docs/en-US/plugins/wheel.md" target="_blank" rel="noopener noreferrer">Edit this page on GitHub</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <div class="last-updated"><span class="prefix">Last Updated:</span> <span class="time">2/1/2021, 11:07:17 PM</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
- ←
- <a href="/docs/en-US/plugins/slide.html" class="prev">
- slide
- </a></span> <span class="next"><a href="/docs/en-US/plugins/zoom.html">
- zoom
- </a>
- →
- </span></p></div> </main></div><div class="global-ui"><!----></div></div>
- <script src="/docs/assets/js/app.c71b64d3.js" defer></script><script src="/docs/assets/js/5.d6412664.js" defer></script><script src="/docs/assets/js/4.4855b9ef.js" defer></script><script src="/docs/assets/js/3.481632b4.js" defer></script><script src="/docs/assets/js/96.6e382fd5.js" defer></script><script src="/docs/assets/js/56.cd04bae9.js" defer></script><script src="/docs/assets/js/7.518ccda7.js" defer></script>
- </body>
- </html>
|