nested-scroll.html 123 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611
  1. <!DOCTYPE html>
  2. <html lang="en-US">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <title>nested-scroll | BetterScroll 2.0</title>
  7. <meta name="generator" content="VuePress 1.9.10">
  8. <link rel="shortcut icon" href="/docs/assets/bs.ico" type="images/x-icon">
  9. <script src="https://www.googletagmanager.com/gtag/js?id=G-7E85TW7P27"></script>
  10. <script type="text/javascript">
  11. window.dataLayer = window.dataLayer || [];
  12. function gtag(){dataLayer.push(arguments);}
  13. gtag('js', new Date());
  14. gtag('config', 'G-7E85TW7P27');
  15. </script>
  16. <meta name="description" content="Make Scroll Perfect">
  17. <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/89.1b58abde.js" as="script"><link rel="preload" href="/docs/assets/js/7.518ccda7.js" as="script"><link rel="preload" href="/docs/assets/js/56.cd04bae9.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/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/96.6e382fd5.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">
  18. <link rel="stylesheet" href="/docs/assets/css/0.styles.0cd93813.css">
  19. </head>
  20. <body>
  21. <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">
  22. Guide
  23. </a></div><div class="nav-item"><a href="/docs/en-US/plugins/" class="nav-link router-link-active">
  24. Plugin
  25. </a></div><div class="nav-item"><a href="/docs/en-US/FAQ/" class="nav-link">
  26. FAQ
  27. </a></div><div class="nav-item"><a href="https://github.com/ustbhuangyi/better-scroll/issues" target="_blank" rel="noopener noreferrer" class="nav-link external">
  28. Discuss
  29. <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/nested-scroll.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">
  30. English
  31. </a></li><li class="dropdown-item"><!----> <a href="/docs/zh-CN/plugins/nested-scroll.html" class="nav-link">
  32. 简体中文
  33. </a></li></ul></div></div> <a href="https://github.com/ustbhuangyi/better-scroll" target="_blank" rel="noopener noreferrer" class="repo-link">
  34. GitHub
  35. <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">
  36. Guide
  37. </a></div><div class="nav-item"><a href="/docs/en-US/plugins/" class="nav-link router-link-active">
  38. Plugin
  39. </a></div><div class="nav-item"><a href="/docs/en-US/FAQ/" class="nav-link">
  40. FAQ
  41. </a></div><div class="nav-item"><a href="https://github.com/ustbhuangyi/better-scroll/issues" target="_blank" rel="noopener noreferrer" class="nav-link external">
  42. Discuss
  43. <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/nested-scroll.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">
  44. English
  45. </a></li><li class="dropdown-item"><!----> <a href="/docs/zh-CN/plugins/nested-scroll.html" class="nav-link">
  46. 简体中文
  47. </a></li></ul></div></div> <a href="https://github.com/ustbhuangyi/better-scroll" target="_blank" rel="noopener noreferrer" class="repo-link">
  48. GitHub
  49. <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" class="sidebar-link">wheel</a></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" aria-current="page" class="active sidebar-link">nested-scroll</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/en-US/plugins/nested-scroll.html#introduction" class="sidebar-link">Introduction</a></li><li class="sidebar-sub-header"><a href="/docs/en-US/plugins/nested-scroll.html#install" class="sidebar-link">Install</a></li><li class="sidebar-sub-header"><a href="/docs/en-US/plugins/nested-scroll.html#usage" class="sidebar-link">Usage</a></li><li class="sidebar-sub-header"><a href="/docs/en-US/plugins/nested-scroll.html#demo" class="sidebar-link">Demo</a></li><li class="sidebar-sub-header"><a href="/docs/en-US/plugins/nested-scroll.html#instance-methods" class="sidebar-link">Instance Methods</a></li><li class="sidebar-sub-header"><a href="/docs/en-US/plugins/nested-scroll.html#static-methods" class="sidebar-link">Static Methods</a></li></ul></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="nested-scroll"><a href="#nested-scroll" class="header-anchor">#</a> nested-scroll</h1> <h2 id="introduction"><a href="#introduction" class="header-anchor">#</a> Introduction</h2> <p>Coordinates nested BetterScroll scrolling behavior.</p> <div class="custom-block warning"><p class="custom-block-title">WARNING</p> <p><strong>v2.1.0</strong> supports BetterScroll with <strong>Multi Nesting</strong>, with more powerful functions and better performance. Only <strong>Double Nesting</strong> is supported in old version, please upgrade to <strong>v2.1.0</strong> as soon as possible.</p></div> <div class="custom-block tip"><p class="custom-block-title">TIP</p> <p><strong>v2.1.0</strong> Perfectly solves the problem that the click event of multi-level nested BetterScroll is dispatched multiple times.</p></div> <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/nested-scroll <span class="token parameter variable">--save</span>
  50. // or
  51. <span class="token function">yarn</span> <span class="token function">add</span> @better-scroll/nested-scroll
  52. </code></pre></div><h2 id="usage"><a href="#usage" class="header-anchor">#</a> Usage</h2> <p>import the <code>nested-scroll</code> plugin and use it with the static method <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>
  53. <span class="token keyword">import</span> NestedScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/nested-scroll'</span>
  54. BScroll<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>NestedScroll<span class="token punctuation">)</span>
  55. </code></pre></div><p>After the above steps are completed, <code>nestedScroll</code> is configured in BScroll's <code>options</code>.</p> <div class="language-js extra-class"><pre class="language-js"><code> <span class="token comment">// &lt; v2.1.0</span>
  56. <span class="token comment">// parent bs</span>
  57. <span class="token keyword">new</span> <span class="token class-name">BScroll</span><span class="token punctuation">(</span><span class="token string">'.outerWrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
  58. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token boolean">true</span>
  59. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  60. <span class="token comment">// child bs</span>
  61. <span class="token keyword">new</span> <span class="token class-name">BScroll</span><span class="token punctuation">(</span><span class="token string">'.innerWrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
  62. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token boolean">true</span>
  63. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  64. <span class="token comment">// &gt;= v2.1.0</span>
  65. <span class="token comment">// parent bs</span>
  66. <span class="token keyword">new</span> <span class="token class-name">BScroll</span><span class="token punctuation">(</span><span class="token string">'.outerWrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
  67. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  68. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'dummy-divide'</span> <span class="token comment">// string or number</span>
  69. <span class="token punctuation">}</span>
  70. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  71. <span class="token comment">// child bs</span>
  72. <span class="token keyword">new</span> <span class="token class-name">BScroll</span><span class="token punctuation">(</span><span class="token string">'.innerWrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
  73. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  74. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'dummy-divide'</span>
  75. <span class="token punctuation">}</span>
  76. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  77. </code></pre></div><p>BetterScroll instances (bs) with the same <code>groupId</code> <strong>share the same NestedScroll instance</strong>(<code>ns</code>), <code>ns</code> will coordinate the scrolling behavior of each bs, once a bs is destroyed, <code>ns</code> will lose control of it, for example:</p> <div class="language-js extra-class"><pre class="language-js"><code><span class="token comment">// parent bs</span>
  78. <span class="token keyword">const</span> bs1 <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">'.outerWrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
  79. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  80. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'shared'</span> <span class="token comment">// string or number</span>
  81. <span class="token punctuation">}</span>
  82. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  83. <span class="token comment">// child bs</span>
  84. <span class="token keyword">const</span> bs2 <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">'.innerWrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
  85. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  86. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'shared'</span>
  87. <span class="token punctuation">}</span>
  88. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  89. console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>bs1<span class="token punctuation">.</span>plugins<span class="token punctuation">.</span>nestedScroll <span class="token operator">===</span> bs2<span class="token punctuation">.</span>plugins<span class="token punctuation">.</span>nestedScroll<span class="token punctuation">)</span> <span class="token comment">// true</span>
  90. <span class="token comment">// nestedScroll no longer constrains bs2</span>
  91. <span class="token comment">// nestedScroll no longer coordinates the scrolling behavior of bs1 and bs2</span>
  92. bs2<span class="token punctuation">.</span><span class="token function">destroy</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  93. </code></pre></div><h2 id="demo"><a href="#demo" class="header-anchor">#</a> Demo</h2> <ul><li><p><strong>Nested vertical scroll <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>2.1.0</span></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_tl7xjnpahq" 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">&lt;</span>template</span><span class="token punctuation">&gt;</span></span>
  94. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>container<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  95. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">&quot;</span>outerScroll<span class="token punctuation">&quot;</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">&quot;</span>outer-wrapper<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  96. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>outer-content<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  97. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">&gt;</span></span>
  98. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>outer-list-item<span class="token punctuation">&quot;</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">&quot;</span>handleOuterClick<span class="token punctuation">&quot;</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">&quot;</span>(item, index) in outerOpenData<span class="token punctuation">&quot;</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">&quot;</span>index<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>{{item}}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">&gt;</span></span>
  99. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">&gt;</span></span>
  100. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">&quot;</span>innerScroll<span class="token punctuation">&quot;</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">&quot;</span>inner-wrapper<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  101. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>inner-content<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  102. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>inner-list-item<span class="token punctuation">&quot;</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">&quot;</span>(item, index) in innerData<span class="token punctuation">&quot;</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">&quot;</span>handleInnerClick<span class="token punctuation">&quot;</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">&quot;</span>index<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>{{item}}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">&gt;</span></span>
  103. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">&gt;</span></span>
  104. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  105. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">&gt;</span></span>
  106. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>outer-list-item<span class="token punctuation">&quot;</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">&quot;</span>handleOuterClick<span class="token punctuation">&quot;</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">&quot;</span>(item, index) in outerCloseData<span class="token punctuation">&quot;</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">&quot;</span>index<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>{{item}}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">&gt;</span></span>
  107. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">&gt;</span></span>
  108. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  109. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  110. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  111. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>template</span><span class="token punctuation">&gt;</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">&lt;</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">&quot;</span>text/ecmascript-6<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token script"><span class="token language-javascript">
  112. <span class="token keyword">import</span> BScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/core'</span>
  113. <span class="token keyword">import</span> NestedScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/nested-scroll'</span>
  114. BScroll<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>NestedScroll<span class="token punctuation">)</span>
  115. <span class="token keyword">const</span> outerOpenData <span class="token operator">=</span> <span class="token punctuation">[</span>
  116. <span class="token string">'----Outer Start----'</span><span class="token punctuation">,</span>
  117. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span><span class="token punctuation">,</span>
  118. <span class="token string">'🙂 🤔 😄 🤨 😐 🙃 '</span><span class="token punctuation">,</span>
  119. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span>
  120. <span class="token punctuation">]</span>
  121. <span class="token keyword">const</span> outerCloseData <span class="token operator">=</span> <span class="token punctuation">[</span>
  122. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span><span class="token punctuation">,</span>
  123. <span class="token string">'🙂 🤔 😄 🤨 😐 🙃 '</span><span class="token punctuation">,</span>
  124. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span><span class="token punctuation">,</span>
  125. <span class="token string">'😔 😕 🙃 🤑 😲 😲 '</span><span class="token punctuation">,</span>
  126. <span class="token string">'🙂 🤔 😄 🤨 😐 🙃 '</span><span class="token punctuation">,</span>
  127. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span><span class="token punctuation">,</span>
  128. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span><span class="token punctuation">,</span>
  129. <span class="token string">'😔 😕 🙃 🤑 😲 😲 '</span><span class="token punctuation">,</span>
  130. <span class="token string">'🙂 🤔 😄 🤨 😐 🙃 '</span><span class="token punctuation">,</span>
  131. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span><span class="token punctuation">,</span>
  132. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span><span class="token punctuation">,</span>
  133. <span class="token string">'🙂 🤔 😄 🤨 😐 🙃 '</span><span class="token punctuation">,</span>
  134. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span><span class="token punctuation">,</span>
  135. <span class="token string">'----Outer End----'</span><span class="token punctuation">,</span>
  136. <span class="token punctuation">]</span>
  137. <span class="token keyword">const</span> innerData <span class="token operator">=</span> <span class="token punctuation">[</span>
  138. <span class="token string">'------Inner Start-----'</span><span class="token punctuation">,</span>
  139. <span class="token string">'😀 😁 😂 🤣 😃 🙃 '</span><span class="token punctuation">,</span>
  140. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  141. <span class="token string">'🙂 🤔 😄 🤨 😐 🙃 '</span><span class="token punctuation">,</span>
  142. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  143. <span class="token string">'😔 😕 🙃 🤑 😲 😐 🙃 '</span><span class="token punctuation">,</span>
  144. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  145. <span class="token string">'🐣 🐣 🐣 🐣 🐣 🐣 '</span><span class="token punctuation">,</span>
  146. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  147. <span class="token string">'🐥 🐥 🐥 🐥 🐥 🐥 '</span><span class="token punctuation">,</span>
  148. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  149. <span class="token string">'🤓 🤓 🤓 🤓 🤓 🤓 '</span><span class="token punctuation">,</span>
  150. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  151. <span class="token string">'🦔 🦔 🦔 🦔 🦔 🦔 '</span><span class="token punctuation">,</span>
  152. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  153. <span class="token string">'🙈 🙈 🙈 🙈 🙈 🙈 '</span><span class="token punctuation">,</span>
  154. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  155. <span class="token string">'🚖 🚖 🚖 🚖 🚖 🚖 '</span><span class="token punctuation">,</span>
  156. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  157. <span class="token string">'✌🏻 ✌🏻 ✌🏻 ✌🏻 ✌🏻 ✌🏻 '</span><span class="token punctuation">,</span>
  158. <span class="token string">'-----Inner End-----'</span>
  159. <span class="token punctuation">]</span>
  160. <span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token punctuation">{</span>
  161. <span class="token function">data</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  162. <span class="token keyword">return</span> <span class="token punctuation">{</span>
  163. outerOpenData<span class="token punctuation">,</span>
  164. outerCloseData<span class="token punctuation">,</span>
  165. innerData<span class="token punctuation">,</span>
  166. <span class="token punctuation">}</span>
  167. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  168. <span class="token function">mounted</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  169. <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">initBScroll</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  170. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  171. <span class="token function">beforeDestroy</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  172. <span class="token keyword">this</span><span class="token punctuation">.</span>outerScroll<span class="token punctuation">.</span><span class="token function">destroy</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  173. <span class="token keyword">this</span><span class="token punctuation">.</span>innerScroll<span class="token punctuation">.</span><span class="token function">destroy</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  174. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  175. <span class="token literal-property property">methods</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  176. <span class="token function">handleOuterClick</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  177. window<span class="token punctuation">.</span><span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'clicked outer item'</span><span class="token punctuation">)</span>
  178. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  179. <span class="token function">handleInnerClick</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  180. window<span class="token punctuation">.</span><span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'clicked inner item'</span><span class="token punctuation">)</span>
  181. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  182. <span class="token function">initBScroll</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  183. <span class="token comment">// outer</span>
  184. <span class="token keyword">this</span><span class="token punctuation">.</span>outerScroll <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 keyword">this</span><span class="token punctuation">.</span>$refs<span class="token punctuation">.</span>outerScroll<span class="token punctuation">,</span> <span class="token punctuation">{</span>
  185. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  186. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'vertical-nested-scroll'</span> <span class="token comment">// groupId is a string or number</span>
  187. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  188. <span class="token literal-property property">click</span><span class="token operator">:</span> <span class="token boolean">true</span>
  189. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  190. <span class="token comment">// inner</span>
  191. <span class="token keyword">this</span><span class="token punctuation">.</span>innerScroll <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 keyword">this</span><span class="token punctuation">.</span>$refs<span class="token punctuation">.</span>innerScroll<span class="token punctuation">,</span> <span class="token punctuation">{</span>
  192. <span class="token comment">// please keep the same groupId as above</span>
  193. <span class="token comment">// outerScroll and innerScroll will be controlled by the same nestedScroll instance</span>
  194. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  195. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'vertical-nested-scroll'</span>
  196. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  197. <span class="token literal-property property">click</span><span class="token operator">:</span> <span class="token boolean">true</span>
  198. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  199. <span class="token punctuation">}</span>
  200. <span class="token punctuation">}</span>
  201. <span class="token punctuation">}</span>
  202. </span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</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><span class="token selector">&lt;style lang=&quot;stylus&quot; rel=&quot;stylesheet/stylus&quot; scoped&gt;
  203. .container</span>
  204. <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>
  205. <span class="token selector">.outer-wrapper
  206. .inner-wrapper</span>
  207. <span class="token property-declaration"><span class="token property">border</span><span class="token punctuation">:</span> <span class="token number">2</span><span class="token unit">px</span> solid <span class="token hexcode">#62B791</span></span>
  208. <span class="token property-declaration"><span class="token property">border-radius</span><span class="token punctuation">:</span> <span class="token number">5</span><span class="token unit">px</span></span>
  209. <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">rotate</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token unit">deg</span><span class="token punctuation">)</span></span></span>
  210. <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
  211. <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
  212. <span class="token selector">.outer-wrapper</span>
  213. <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>
  214. <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>
  215. <span class="token selector">.inner-wrapper</span>
  216. <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">240</span><span class="token unit">px</span></span>
  217. <span class="token property-declaration"><span class="token property">background-color</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">98</span><span class="token punctuation">,</span><span class="token number">183</span><span class="token punctuation">,</span><span class="token number">145</span><span class="token punctuation">,</span> <span class="token number">0.2</span><span class="token punctuation">)</span></span></span>
  218. <span class="token selector">.inner-list-item</span>
  219. <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">50</span><span class="token unit">px</span></span>
  220. <span class="token property-declaration"><span class="token property">line-height</span><span class="token punctuation">:</span> <span class="token number">50</span><span class="token unit">px</span></span>
  221. <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
  222. <span class="token property-declaration"><span class="token property">list-style</span><span class="token punctuation">:</span> none</span>
  223. <span class="token selector">.outer-list-item</span>
  224. <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">40</span><span class="token unit">px</span></span>
  225. <span class="token property-declaration"><span class="token property">line-height</span><span class="token punctuation">:</span> <span class="token number">40</span><span class="token unit">px</span></span>
  226. <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
  227. <span class="token property-declaration"><span class="token property">list-style</span><span class="token punctuation">:</span> none</span>
  228. &lt;/style&gt;</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></li> <li><p><strong>Nested triple vertical scroll <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>2.1.0</span></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_bju826p4ng" 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">&lt;</span>template</span><span class="token punctuation">&gt;</span></span>
  229. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>container<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  230. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">&quot;</span>outerScroll<span class="token punctuation">&quot;</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">&quot;</span>outer-wrapper<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  231. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>outer-content<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  232. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">&gt;</span></span>
  233. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>outer-list-item<span class="token punctuation">&quot;</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">&quot;</span>handleOuterClick<span class="token punctuation">&quot;</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">&quot;</span>(item, index) in outerOpenData<span class="token punctuation">&quot;</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">&quot;</span>index<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>{{item}}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">&gt;</span></span>
  234. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">&gt;</span></span>
  235. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">&quot;</span>middleScroll<span class="token punctuation">&quot;</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">&quot;</span>middle-wrapper<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  236. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>middle-content<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  237. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">&gt;</span></span>
  238. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>middle-list-item<span class="token punctuation">&quot;</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">&quot;</span>handleMiddleClick<span class="token punctuation">&quot;</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">&quot;</span>(item, index) in middleOpenData<span class="token punctuation">&quot;</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">&quot;</span>index<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>{{item}}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">&gt;</span></span>
  239. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">&gt;</span></span>
  240. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">&quot;</span>innerScroll<span class="token punctuation">&quot;</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">&quot;</span>inner-wrapper<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  241. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>inner-content<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  242. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>inner-list-item<span class="token punctuation">&quot;</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">&quot;</span>(item, index) in innerData<span class="token punctuation">&quot;</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">&quot;</span>handleInnerClick<span class="token punctuation">&quot;</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">&quot;</span>index<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>{{item}}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">&gt;</span></span>
  243. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">&gt;</span></span>
  244. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  245. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">&gt;</span></span>
  246. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>middle-list-item<span class="token punctuation">&quot;</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">&quot;</span>handleMiddleClick<span class="token punctuation">&quot;</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">&quot;</span>(item, index) in middleCloseData<span class="token punctuation">&quot;</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">&quot;</span>index + 100<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>{{item}}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">&gt;</span></span>
  247. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">&gt;</span></span>
  248. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  249. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  250. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span><span class="token punctuation">&gt;</span></span>
  251. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>outer-list-item<span class="token punctuation">&quot;</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">&quot;</span>handleOuterClick<span class="token punctuation">&quot;</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">&quot;</span>(item, index) in outerCloseData<span class="token punctuation">&quot;</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">&quot;</span>index + 100<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>{{item}}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">&gt;</span></span>
  252. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">&gt;</span></span>
  253. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  254. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  255. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  256. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>template</span><span class="token punctuation">&gt;</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">&lt;</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">&quot;</span>text/ecmascript-6<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token script"><span class="token language-javascript">
  257. <span class="token keyword">import</span> BScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/core'</span>
  258. <span class="token keyword">import</span> NestedScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/nested-scroll'</span>
  259. BScroll<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>NestedScroll<span class="token punctuation">)</span>
  260. <span class="token keyword">const</span> outerOpenData <span class="token operator">=</span> <span class="token punctuation">[</span>
  261. <span class="token string">'----Outer Start----'</span><span class="token punctuation">,</span>
  262. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span><span class="token punctuation">,</span>
  263. <span class="token string">'🙂 🤔 😄 🤨 😐 🙃 '</span><span class="token punctuation">,</span>
  264. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span>
  265. <span class="token punctuation">]</span>
  266. <span class="token keyword">const</span> outerCloseData <span class="token operator">=</span> <span class="token punctuation">[</span>
  267. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span><span class="token punctuation">,</span>
  268. <span class="token string">'🙂 🤔 😄 🤨 😐 🙃 '</span><span class="token punctuation">,</span>
  269. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span><span class="token punctuation">,</span>
  270. <span class="token string">'😔 😕 🙃 🤑 😲 😲 '</span><span class="token punctuation">,</span>
  271. <span class="token string">'🙂 🤔 😄 🤨 😐 🙃 '</span><span class="token punctuation">,</span>
  272. <span class="token string">'👆🏻 outer scroll 👇🏻 '</span><span class="token punctuation">,</span>
  273. <span class="token string">'----Outer End----'</span><span class="token punctuation">,</span>
  274. <span class="token punctuation">]</span>
  275. <span class="token keyword">const</span> middleOpenData <span class="token operator">=</span> <span class="token punctuation">[</span>
  276. <span class="token string">'----Middle Start----'</span><span class="token punctuation">,</span>
  277. <span class="token string">'👆🏻 middle scroll 👇🏻 '</span><span class="token punctuation">,</span>
  278. <span class="token string">'🐣 🐣 🐣 🐣 🐣 🐣 '</span><span class="token punctuation">,</span>
  279. <span class="token punctuation">]</span>
  280. <span class="token keyword">const</span> middleCloseData <span class="token operator">=</span> <span class="token punctuation">[</span>
  281. <span class="token string">'👆🏻 middle scroll 👇🏻 '</span><span class="token punctuation">,</span>
  282. <span class="token string">'🤓 🤓 🤓 🤓 🤓 🤓 '</span><span class="token punctuation">,</span>
  283. <span class="token string">'👆🏻 middle scroll 👇🏻 '</span><span class="token punctuation">,</span>
  284. <span class="token string">'🦔 🦔 🦔 🦔 🦔 🦔 '</span><span class="token punctuation">,</span>
  285. <span class="token string">'👆🏻 middle scroll 👇🏻 '</span><span class="token punctuation">,</span>
  286. <span class="token string">'🙈 🙈 🙈 🙈 🙈 🙈 '</span><span class="token punctuation">,</span>
  287. <span class="token string">'👆🏻 middle scroll 👇🏻 '</span><span class="token punctuation">,</span>
  288. <span class="token string">'🚖 🚖 🚖 🚖 🚖 🚖 '</span><span class="token punctuation">,</span>
  289. <span class="token string">'👆🏻 middle scroll 👇🏻 '</span><span class="token punctuation">,</span>
  290. <span class="token string">'✌🏻 ✌🏻 ✌🏻 ✌🏻 ✌🏻 ✌🏻 '</span><span class="token punctuation">,</span>
  291. <span class="token string">'----Middle End----'</span><span class="token punctuation">,</span>
  292. <span class="token punctuation">]</span>
  293. <span class="token keyword">const</span> innerData <span class="token operator">=</span> <span class="token punctuation">[</span>
  294. <span class="token string">'------Inner Start-----'</span><span class="token punctuation">,</span>
  295. <span class="token string">'😀 😁 😂 🤣 😃 🙃 '</span><span class="token punctuation">,</span>
  296. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  297. <span class="token string">'🙂 🤔 😄 🤨 😐 🙃 '</span><span class="token punctuation">,</span>
  298. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  299. <span class="token string">'😔 😕 🙃 🤑 😲 😐 🙃 '</span><span class="token punctuation">,</span>
  300. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  301. <span class="token string">'🐣 🐣 🐣 🐣 🐣 🐣 '</span><span class="token punctuation">,</span>
  302. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  303. <span class="token string">'🐥 🐥 🐥 🐥 🐥 🐥 '</span><span class="token punctuation">,</span>
  304. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  305. <span class="token string">'🤓 🤓 🤓 🤓 🤓 🤓 '</span><span class="token punctuation">,</span>
  306. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  307. <span class="token string">'🦔 🦔 🦔 🦔 🦔 🦔 '</span><span class="token punctuation">,</span>
  308. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  309. <span class="token string">'🙈 🙈 🙈 🙈 🙈 🙈 '</span><span class="token punctuation">,</span>
  310. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  311. <span class="token string">'🚖 🚖 🚖 🚖 🚖 🚖 '</span><span class="token punctuation">,</span>
  312. <span class="token string">'👆🏻 inner scroll 👇🏻 '</span><span class="token punctuation">,</span>
  313. <span class="token string">'✌🏻 ✌🏻 ✌🏻 ✌🏻 ✌🏻 ✌🏻 '</span><span class="token punctuation">,</span>
  314. <span class="token string">'-----Inner End-----'</span>
  315. <span class="token punctuation">]</span>
  316. <span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token punctuation">{</span>
  317. <span class="token function">data</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  318. <span class="token keyword">return</span> <span class="token punctuation">{</span>
  319. outerOpenData<span class="token punctuation">,</span>
  320. outerCloseData<span class="token punctuation">,</span>
  321. middleOpenData<span class="token punctuation">,</span>
  322. middleCloseData<span class="token punctuation">,</span>
  323. innerData<span class="token punctuation">,</span>
  324. <span class="token punctuation">}</span>
  325. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  326. <span class="token function">mounted</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  327. <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">initBScroll</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  328. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  329. <span class="token function">beforeDestroy</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  330. <span class="token keyword">this</span><span class="token punctuation">.</span>outerScroll<span class="token punctuation">.</span><span class="token function">destroy</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  331. <span class="token keyword">this</span><span class="token punctuation">.</span>middleScroll<span class="token punctuation">.</span><span class="token function">destroy</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  332. <span class="token keyword">this</span><span class="token punctuation">.</span>innerScroll<span class="token punctuation">.</span><span class="token function">destroy</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  333. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  334. <span class="token literal-property property">methods</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  335. <span class="token function">handleOuterClick</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  336. window<span class="token punctuation">.</span><span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'clicked outer item'</span><span class="token punctuation">)</span>
  337. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  338. <span class="token function">handleMiddleClick</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  339. window<span class="token punctuation">.</span><span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'clicked middle item'</span><span class="token punctuation">)</span>
  340. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  341. <span class="token function">handleInnerClick</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  342. window<span class="token punctuation">.</span><span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'clicked inner item'</span><span class="token punctuation">)</span>
  343. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  344. <span class="token function">initBScroll</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  345. <span class="token comment">// outer</span>
  346. <span class="token keyword">this</span><span class="token punctuation">.</span>outerScroll <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>outerScroll <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 keyword">this</span><span class="token punctuation">.</span>$refs<span class="token punctuation">.</span>outerScroll<span class="token punctuation">,</span> <span class="token punctuation">{</span>
  347. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  348. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'triple-nested-scroll'</span> <span class="token comment">// groupId is a string or number</span>
  349. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  350. <span class="token literal-property property">click</span><span class="token operator">:</span> <span class="token boolean">true</span>
  351. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  352. <span class="token comment">// inner</span>
  353. <span class="token keyword">this</span><span class="token punctuation">.</span>innerScroll <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 keyword">this</span><span class="token punctuation">.</span>$refs<span class="token punctuation">.</span>innerScroll<span class="token punctuation">,</span> <span class="token punctuation">{</span>
  354. <span class="token comment">// please keep the same groupId as above</span>
  355. <span class="token comment">// all scrolls will be controlled by the same nestedScroll instance</span>
  356. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  357. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'triple-nested-scroll'</span>
  358. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  359. <span class="token literal-property property">probeType</span><span class="token operator">:</span><span class="token number">2</span><span class="token punctuation">,</span>
  360. <span class="token literal-property property">click</span><span class="token operator">:</span> <span class="token boolean">true</span>
  361. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  362. <span class="token keyword">this</span><span class="token punctuation">.</span>innerScroll<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'scroll'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
  363. console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'innerScroll scroll'</span><span class="token punctuation">)</span>
  364. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  365. <span class="token keyword">this</span><span class="token punctuation">.</span>innerScroll<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">=&gt;</span> <span class="token punctuation">{</span>
  366. console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'innerScroll scrollEnd'</span><span class="token punctuation">)</span>
  367. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  368. <span class="token comment">// middle</span>
  369. <span class="token keyword">this</span><span class="token punctuation">.</span>middleScroll <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 keyword">this</span><span class="token punctuation">.</span>$refs<span class="token punctuation">.</span>middleScroll<span class="token punctuation">,</span> <span class="token punctuation">{</span>
  370. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  371. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'triple-nested-scroll'</span> <span class="token comment">// groupId is a string or number</span>
  372. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  373. <span class="token literal-property property">probeType</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
  374. <span class="token literal-property property">click</span><span class="token operator">:</span> <span class="token boolean">true</span>
  375. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  376. <span class="token keyword">this</span><span class="token punctuation">.</span>middleScroll<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'scroll'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
  377. console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'middleScroll scroll'</span><span class="token punctuation">)</span>
  378. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  379. <span class="token punctuation">}</span>
  380. <span class="token punctuation">}</span>
  381. <span class="token punctuation">}</span>
  382. </span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</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><span class="token selector">&lt;style lang=&quot;stylus&quot; rel=&quot;stylesheet/stylus&quot; scoped&gt;
  383. .container</span>
  384. <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>
  385. <span class="token selector">.outer-wrapper
  386. .middle-wrapper
  387. .inner-wrapper</span>
  388. <span class="token property-declaration"><span class="token property">border</span><span class="token punctuation">:</span> <span class="token number">2</span><span class="token unit">px</span> solid <span class="token hexcode">#62B791</span></span>
  389. <span class="token property-declaration"><span class="token property">border-radius</span><span class="token punctuation">:</span> <span class="token number">5</span><span class="token unit">px</span></span>
  390. <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">rotate</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token unit">deg</span><span class="token punctuation">)</span></span></span>
  391. <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
  392. <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
  393. <span class="token selector">.outer-wrapper</span>
  394. <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>
  395. <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>
  396. <span class="token selector">.middle-wrapper</span>
  397. <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">480</span><span class="token unit">px</span></span>
  398. <span class="token property-declaration"><span class="token property">background-color</span> <span class="token func"><span class="token function">rgba</span><span class="token punctuation">(</span><span class="token number">240</span><span class="token punctuation">,</span><span class="token number">65</span><span class="token punctuation">,</span><span class="token number">85</span><span class="token punctuation">,</span> <span class="token number">0.2</span><span class="token punctuation">)</span> </span></span>
  399. <span class="token property-declaration"><span class="token property">border</span><span class="token punctuation">:</span> <span class="token number">2</span><span class="token unit">px</span> solid <span class="token hexcode">#f04155</span></span>
  400. <span class="token selector">.inner-wrapper</span>
  401. <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">240</span><span class="token unit">px</span></span>
  402. <span class="token property-declaration"><span class="token property">background-color</span> <span class="token func"><span class="token function">rgb</span><span class="token punctuation">(</span><span class="token number">98</span><span class="token punctuation">,</span><span class="token number">183</span><span class="token punctuation">,</span><span class="token number">145</span><span class="token punctuation">)</span></span></span>
  403. <span class="token selector">.middle-list-item
  404. .inner-list-item</span>
  405. <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">50</span><span class="token unit">px</span></span>
  406. <span class="token property-declaration"><span class="token property">line-height</span><span class="token punctuation">:</span> <span class="token number">50</span><span class="token unit">px</span></span>
  407. <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
  408. <span class="token property-declaration"><span class="token property">list-style</span><span class="token punctuation">:</span> none</span>
  409. <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token color">white</span></span>
  410. <span class="token selector">.middle-list-item</span>
  411. <span class="token property-declaration"><span class="token property">color</span><span class="token punctuation">:</span> <span class="token hexcode">#894e06</span></span>
  412. <span class="token selector">.outer-list-item</span>
  413. <span class="token property-declaration"><span class="token property">height</span><span class="token punctuation">:</span> <span class="token number">40</span><span class="token unit">px</span></span>
  414. <span class="token property-declaration"><span class="token property">line-height</span><span class="token punctuation">:</span> <span class="token number">40</span><span class="token unit">px</span></span>
  415. <span class="token property-declaration"><span class="token property">text-align</span><span class="token punctuation">:</span> center</span>
  416. <span class="token property-declaration"><span class="token property">list-style</span><span class="token punctuation">:</span> none</span>
  417. &lt;/style&gt;</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></li> <li><p><strong>Nested horizontal scroll <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>2.1.0</span></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_v5102laha6" 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">&lt;</span>template</span><span class="token punctuation">&gt;</span></span>
  418. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>container<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  419. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">&quot;</span>outerScroll<span class="token punctuation">&quot;</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">&quot;</span>outer-wrapper<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  420. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>outer-content<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  421. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>(item, idx) in items1<span class="token punctuation">&quot;</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">&quot;</span>handleOuterClick<span class="token punctuation">&quot;</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">&quot;</span>idx<span class="token punctuation">&quot;</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">&quot;</span>list-item<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>{{ item }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">&gt;</span></span>
  422. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>list-item inner-list-item<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  423. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span>
  424. <span class="token attr-name">ref</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">&quot;</span>innerScroll<span class="token punctuation">&quot;</span></span>
  425. <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">&quot;</span>inner-wrapper<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  426. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>inner-content<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
  427. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>(item, idx) in items2<span class="token punctuation">&quot;</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">&quot;</span>handleInnerClick<span class="token punctuation">&quot;</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">&quot;</span>idx<span class="token punctuation">&quot;</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">&quot;</span>list-item<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>{{ item }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">&gt;</span></span>
  428. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">&gt;</span></span>
  429. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  430. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">&gt;</span></span>
  431. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&quot;</span>(item, idx) in items1<span class="token punctuation">&quot;</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">&quot;</span>handleOuterClick<span class="token punctuation">&quot;</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">&quot;</span>idx + 100<span class="token punctuation">&quot;</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">&quot;</span>list-item<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>{{ item }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">&gt;</span></span>
  432. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">&gt;</span></span>
  433. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  434. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">&gt;</span></span>
  435. <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>template</span><span class="token punctuation">&gt;</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">&lt;</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">&quot;</span>text/ecmascript-6<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span><span class="token script"><span class="token language-javascript">
  436. <span class="token keyword">import</span> BScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/core'</span>
  437. <span class="token keyword">import</span> NestedScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/nested-scroll'</span>
  438. BScroll<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>NestedScroll<span class="token punctuation">)</span>
  439. <span class="token keyword">const</span> _data1 <span class="token operator">=</span> <span class="token punctuation">[</span>
  440. <span class="token string">'👈🏻 outer 👉🏻 '</span><span class="token punctuation">,</span>
  441. <span class="token string">'🙂 🤔 😄 🤨 😐 🙃 '</span>
  442. <span class="token punctuation">]</span>
  443. <span class="token keyword">const</span> _data2 <span class="token operator">=</span> <span class="token punctuation">[</span>
  444. <span class="token string">'👈🏻 inner 👉🏻 '</span><span class="token punctuation">,</span>
  445. <span class="token string">'🙂 🤔 😄 🤨 😐 🙃 '</span><span class="token punctuation">,</span>
  446. <span class="token string">'👈🏻 inner 👉🏻 '</span><span class="token punctuation">,</span>
  447. <span class="token string">'😔 😕 🙃 🤑 😲 ☹️ '</span><span class="token punctuation">,</span>
  448. <span class="token string">'👈🏻 inner 👉🏻 '</span><span class="token punctuation">,</span>
  449. <span class="token string">'🐣 🐣 🐣 🐣 🐣 🐣 '</span><span class="token punctuation">,</span>
  450. <span class="token string">'👈🏻 inner 👉🏻 '</span><span class="token punctuation">,</span>
  451. <span class="token string">'🐥 🐥 🐥 🐥 🐥 🐥 '</span>
  452. <span class="token punctuation">]</span>
  453. <span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token punctuation">{</span>
  454. <span class="token function">data</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  455. <span class="token keyword">return</span> <span class="token punctuation">{</span>
  456. <span class="token literal-property property">items1</span><span class="token operator">:</span> _data1<span class="token punctuation">,</span>
  457. <span class="token literal-property property">items2</span><span class="token operator">:</span> _data2
  458. <span class="token punctuation">}</span>
  459. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  460. <span class="token function">mounted</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  461. <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">initBScroll</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  462. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  463. <span class="token function">beforeDestroy</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  464. <span class="token keyword">this</span><span class="token punctuation">.</span>outerScroll<span class="token punctuation">.</span><span class="token function">destroy</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  465. <span class="token keyword">this</span><span class="token punctuation">.</span>innerScroll<span class="token punctuation">.</span><span class="token function">destroy</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  466. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  467. <span class="token literal-property property">methods</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  468. <span class="token function">handleOuterClick</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  469. window<span class="token punctuation">.</span><span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'clicked outer item'</span><span class="token punctuation">)</span>
  470. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  471. <span class="token function">handleInnerClick</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  472. window<span class="token punctuation">.</span><span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'clicked inner item'</span><span class="token punctuation">)</span>
  473. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  474. <span class="token function">initBScroll</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  475. <span class="token comment">// outer</span>
  476. <span class="token keyword">this</span><span class="token punctuation">.</span>outerScroll <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 keyword">this</span><span class="token punctuation">.</span>$refs<span class="token punctuation">.</span>outerScroll<span class="token punctuation">,</span> <span class="token punctuation">{</span>
  477. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  478. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'horizontal-nested-scroll'</span> <span class="token comment">// groupId is a string or number</span>
  479. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  480. <span class="token literal-property property">scrollX</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
  481. <span class="token literal-property property">scrollY</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
  482. <span class="token literal-property property">click</span><span class="token operator">:</span> <span class="token boolean">true</span>
  483. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  484. <span class="token comment">// inner</span>
  485. <span class="token keyword">this</span><span class="token punctuation">.</span>innerScroll <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 keyword">this</span><span class="token punctuation">.</span>$refs<span class="token punctuation">.</span>innerScroll<span class="token punctuation">,</span> <span class="token punctuation">{</span>
  486. <span class="token comment">// please keep the same groupId as above</span>
  487. <span class="token comment">// outerScroll and innerScroll will be controlled by the same nestedScroll instance</span>
  488. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  489. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'horizontal-nested-scroll'</span>
  490. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  491. <span class="token literal-property property">scrollX</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
  492. <span class="token literal-property property">scrollY</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
  493. <span class="token literal-property property">click</span><span class="token operator">:</span> <span class="token boolean">true</span>
  494. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  495. <span class="token punctuation">}</span>
  496. <span class="token punctuation">}</span>
  497. <span class="token punctuation">}</span>
  498. </span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</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><span class="token selector">&lt;style lang=&quot;stylus&quot; rel=&quot;stylesheet/stylus&quot; scoped&gt;</span>
  499. <span class="token selector">.outer-wrapper</span>
  500. <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">0.1</span><span class="token punctuation">)</span></span></span>
  501. <span class="token property-declaration"><span class="token property">border-radius</span><span class="token punctuation">:</span> <span class="token number">5</span><span class="token unit">px</span></span>
  502. <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">rotate</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token unit">deg</span><span class="token punctuation">)</span></span></span>
  503. <span class="token property-declaration"><span class="token property">margin-top</span><span class="token punctuation">:</span> <span class="token number">50</span><span class="token unit">px</span></span>
  504. <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
  505. <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
  506. <span class="token selector">.outer-content</span>
  507. <span class="token property-declaration"><span class="token property">display</span><span class="token punctuation">:</span> inline-block</span>
  508. <span class="token property-declaration"><span class="token property">vertical-align</span><span class="token punctuation">:</span> top</span>
  509. <span class="token property-declaration"><span class="token property">white-space</span><span class="token punctuation">:</span> nowrap</span>
  510. <span class="token selector">.inner-wrapper</span>
  511. <span class="token property-declaration"><span class="token property">border</span><span class="token punctuation">:</span> <span class="token number">2</span><span class="token unit">px</span> solid <span class="token hexcode">#62B791</span></span>
  512. <span class="token property-declaration"><span class="token property">border-radius</span><span class="token punctuation">:</span> <span class="token number">5</span><span class="token unit">px</span></span>
  513. <span class="token property-declaration"><span class="token property">transform</span><span class="token punctuation">:</span> <span class="token func"><span class="token function">rotate</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token unit">deg</span><span class="token punctuation">)</span></span></span>
  514. <span class="token property-declaration"><span class="token property">position</span><span class="token punctuation">:</span> relative</span>
  515. <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">px</span></span>
  516. <span class="token property-declaration"><span class="token property">overflow</span><span class="token punctuation">:</span> hidden</span>
  517. <span class="token selector">.inner-content</span>
  518. <span class="token property-declaration"><span class="token property">display</span><span class="token punctuation">:</span> inline-block</span>
  519. <span class="token property-declaration"><span class="token property">vertical-align</span><span class="token punctuation">:</span> top</span>
  520. <span class="token selector">.list-item</span>
  521. <span class="token property-declaration"><span class="token property">display</span><span class="token punctuation">:</span> inline-block</span>
  522. <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>
  523. <span class="token selector">.inner-list-item</span>
  524. <span class="token property-declaration"><span class="token property">vertical-align</span><span class="token punctuation">:</span> top <span class="token comment">// important</span></span>
  525. <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">98</span><span class="token punctuation">,</span><span class="token number">183</span><span class="token punctuation">,</span><span class="token number">145</span><span class="token punctuation">,</span> <span class="token number">0.2</span><span class="token punctuation">)</span></span></span>
  526. &lt;/style&gt;</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></li></ul> <h2 id="instance-methods"><a href="#instance-methods" class="header-anchor">#</a> Instance Methods <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>2.1.0</span></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>
  527. <span class="token keyword">import</span> NestedScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/nested-scroll'</span>
  528. BScroll<span class="token punctuation">.</span><span class="token function">use</span><span class="token punctuation">(</span>NestedScroll<span class="token punctuation">)</span>
  529. <span class="token keyword">const</span> bs1 <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">'.parent-wrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
  530. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  531. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'dummy'</span>
  532. <span class="token punctuation">}</span>
  533. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  534. <span class="token keyword">const</span> bs2 <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">'.child-wrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
  535. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  536. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'dummy'</span>
  537. <span class="token punctuation">}</span>
  538. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  539. <span class="token comment">// purge nestedScroll</span>
  540. <span class="token comment">// bs1 and bs2 share the same nestedScroll instance because they have the same groupId</span>
  541. bs1<span class="token punctuation">.</span><span class="token function">purgeNestedScroll</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">// Same as bs2.purgeNestedScroll()</span>
  542. </code></pre></div></div> <h3 id="purgenestedscroll"><a href="#purgenestedscroll" class="header-anchor">#</a> <code>purgeNestedScroll()</code></h3> <ul><li><strong>Details</strong>: Purge the nestedScroll that controls itself</li></ul> <div class="custom-block warning"><p class="custom-block-title">WARNING</p> <p>Different <code>groupId</code> will generate different nestedScroll, and the same <code>groupId</code> will share the same nestedScroll, so you should call <code>purgeNestedScroll</code> at the right time (such as when the component is destroyed) to clean up the memory. Or you can call the destroy method of BetterScroll to remove itself from nestedScroll, for example:</p> <div class="language-js extra-class"><pre class="language-js"><code><span class="token keyword">const</span> bs1 <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">'.parent-wrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
  543. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  544. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'dummy'</span>
  545. <span class="token punctuation">}</span>
  546. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  547. <span class="token keyword">const</span> bs2 <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">'.child-wrapper'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
  548. <span class="token literal-property property">nestedScroll</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  549. <span class="token literal-property property">groupId</span><span class="token operator">:</span> <span class="token string">'dummy'</span>
  550. <span class="token punctuation">}</span>
  551. <span class="token punctuation">}</span><span class="token punctuation">)</span>
  552. bs1<span class="token punctuation">.</span><span class="token function">destroy</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">// nestedScroll no longer constrains bs1</span>
  553. bs2<span class="token punctuation">.</span><span class="token function">destroy</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">// nestedScroll no longer constrains bs2</span>
  554. </code></pre></div></div> <h2 id="static-methods"><a href="#static-methods" class="header-anchor">#</a> Static Methods <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>2.1.0</span></h2> <h3 id="getallnestedscrolls"><a href="#getallnestedscrolls" class="header-anchor">#</a> <code>getAllNestedScrolls()</code></h3> <ul><li><p><strong>Details</strong>: Get all current nestedScroll instances</p></li> <li><p><strong>Returns</strong>: An array of nestedScroll instances</p></li></ul> <div class="language-typescript extra-class"><pre class="language-typescript"><code><span class="token keyword">import</span> NestedScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/nested-scroll'</span>
  555. <span class="token keyword">const</span> nestedScrolls<span class="token operator">:</span> NestedScroll<span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> NestedScroll<span class="token punctuation">.</span><span class="token function">getAllNestedScrolls</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  556. </code></pre></div><h3 id="purgeallnestedscrolls"><a href="#purgeallnestedscrolls" class="header-anchor">#</a> <code>purgeAllNestedScrolls()</code></h3> <ul><li><strong>Details</strong>: Purge all current nestedScroll instances</li></ul> <div class="language-typescript extra-class"><pre class="language-typescript"><code><span class="token keyword">import</span> NestedScroll <span class="token keyword">from</span> <span class="token string">'@better-scroll/nested-scroll'</span>
  557. <span class="token comment">// No longer constrain any BetterScroll instances</span>
  558. NestedScroll<span class="token punctuation">.</span><span class="token function">purgeAllNestedScrolls</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
  559. </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/nested-scroll.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">
  560. <a href="/docs/en-US/plugins/zoom.html" class="prev">
  561. zoom
  562. </a></span> <span class="next"><a href="/docs/en-US/plugins/infinity.html">
  563. infinity
  564. </a>
  565. </span></p></div> </main></div><div class="global-ui"><!----></div></div>
  566. <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/89.1b58abde.js" defer></script><script src="/docs/assets/js/7.518ccda7.js" defer></script><script src="/docs/assets/js/56.cd04bae9.js" defer></script>
  567. </body>
  568. </html>