移动端安卓和IOS开发框架Framework7教程-Picker Modal

Picker Modal is a special overlay type which is similar to Picker/Calendar's overlay. Such modal allows to create custom picker overlays with custom content

Picker Modal HTML Layout

Picker Modal layout is pretty simple, just add it somewhere in the end of the <body>

  1. <body>
  2.   ...
  3.   <!-- Picker Modal Container -->
  4.   <div class="picker-modal">
  5.     <!-- Picker Modal Toolbar, optional -->
  6.     <div class="toolbar">
  7.       <div class="toolbar-inner">
  8.         <div class="left"></div>
  9.         <div class="right">
  10.           <a href="#" class="link close-picker">Done</a>
  11.         </div>
  12.       </div>
  13.     </div>
  14.     <!-- Picker Modal Inner -->
  15.     <div class="picker-modal-inner">
  16.       <!-- Picker content -->
  17.       <div class="content-block">
  18.         <p>Integer mollis nulla id nibh elementum finibus...</p>
  19.       </div>
  20.     </div>
  21.   </div>
  22.  
  23. </body>
复制

Open and Close Picker Modal

From HTML

It is possible to open and close required Picker Modal using special classes and data attributes on links:

  • To open picker we need to add "open-picker" class to any HTML element (prefered to link)

  • To close picker we may add "close-picker" class to any HTML element (prefered to link)

  • If you have more than one picker in app, you need to specify appropriate picker via additional data-picker=".my-picker-modal"attribute on this HTML element

  1. <body>
  2.   <div class="views">
  3.     <div class="view view-main">
  4.       <div class="pages">
  5.         <div data-page="home" class="page navbar-fixed">
  6.           <div class="navbar">
  7.             <div class="navbar-inner">
  8.               <!-- In data-picker attribute we specify CSS selector of picker we need to open-->
  9.               <div class="left"></div>
  10.               <div class="center">Picker Modal</div>
  11.               <div class="right">
  12.                 <a href="#" data-picker=".picker-1" class="link open-picker">Picker</a>
  13.               </div>
  14.             </div>
  15.           </div>
  16.           <div class="page-content">
  17.             <div class="content-block">
  18.               <!-- In data-picker attribute we specify CSS selector of picker we need to open-->
  19.               <p><a href="#" data-picker=".picker-1" class="open-picker">Open Picker </a></p>
  20.               <!-- Link to close picker-->
  21.               <p><a href="#" data-picker=".picker-1" class="close-picker">Close Picker </a></p>
  22.             </div>
  23.           </div>
  24.         </div>
  25.       </div>
  26.     </div>
  27.   </div>
  28.   <!-- Picker -->
  29.   <div class="picker-modal picker-1">
  30.     <div class="toolbar">
  31.       <div class="toolbar-inner">
  32.         <div class="left"></div>
  33.         <div class="right"><a href="#" class="close-picker">Done</a></div>
  34.       </div>
  35.     </div>
  36.     <div class="picker-modal-inner">
  37.       <div class="content-block">
  38.         <h4>Info 1</h4>
  39.         <p>Lorem ipsum dolor...</p>
  40.       </div>
  41.     </div>
  42.   </div>
  43. </body>
复制

实例预览

Using JavaScript

We can also open and close Picker Modal with JavaScript, for this we need to look at related App methods:

myApp.pickerModal(picker) - open specified Picker Modal

  • picker - HTMLElement or string (with CSS Selector) of Picker to open. Requred
  • This method returns Picker's HTMLElement

myApp.closeModal(picker) - close Picker

  • picker - HTMLElement or string (with CSS Selector). Optional. If not specified, any opened Picker will be closed
  1. <body>
  2.   <div class="views">
  3.     <div class="view view-main">
  4.       <div class="pages">
  5.         <div data-page="home" class="page navbar-fixed">
  6.           <div class="navbar">
  7.             <div class="navbar-inner">
  8.               <div class="left"></div>
  9.               <div class="center">Picker Modal</div>
  10.               <div class="right">
  11.                 <a href="#" class="link open-info">Info</a>
  12.               </div>
  13.             </div>
  14.           </div>
  15.           <div class="page-content">
  16.             <div class="content-block">
  17.               <p><a href="#" class="open-info">Open Info </a></p>
  18.               <p><a href="#" class="close-info">Close Info </a></p>
  19.             </div>
  20.           </div>
  21.         </div>
  22.       </div>
  23.     </div>
  24.   </div>
  25.   <div class="picker-modal picker-info">
  26.     <div class="toolbar">
  27.       <div class="toolbar-inner">
  28.         <div class="left"></div>
  29.         <div class="right"><a href="#" class="close-picker">Done</a></div>
  30.       </div>
  31.     </div>
  32.     <div class="picker-modal-inner">
  33.       <div class="content-block">
  34.         <h4>Info 1</h4>
  35.         <p>Lorem ipsum dolor ...</p>
  36.       </div>
  37.     </div>
  38.   </div>
  39. </body>
复制
  1. var myApp = new Framework7();
  2.  
  3. var $$ = Dom7;
  4.  
  5. $$('.open-info').on('click', function () {
  6.   myApp.pickerModal('.picker-info')
  7. });
  8. $$('.close-info').on('click', function () {
  9.   myApp.closeModal('.picker-info')
  10. });
复制

 实例预览

Dynamic Picker Modal

Framework7 allows you to create Picker Modals dynamically by passing its HTML to related App methods:

myApp.pickerModal(pickerHTML, removeOnClose) - open Picker with pickerHTML

  • pickerHTML - string. HTML string of picker
  • removeOnClose - boolean. Optional, by default - true. If true then Picker will be removed from DOM when closed
  • This method returns dynamically created Picker's HTMLElement
  1. <div class="page-content">
  2.   <div class="content-block">
  3.     <p><a href="#" class="create-picker">Create Picker</a></p>
  4.     <p><a href="#" class="close-picker">Close Picker</a></p>
  5.   </div>
  6. </div>
复制
  1. var myApp = new Framework7();
  2.  
  3. var $$ = Dom7;
  4.  
  5. $$('.create-picker').on('click', function () {
  6.   // Check first, if we already have opened picker
  7.   if ($$('.picker-modal.modal-in').length > 0) {
  8.     myApp.closeModal('.picker-modal.modal-in');
  9.   }
  10.   myApp.pickerModal(
  11.     '<div class="picker-modal">' +
  12.       '<div class="toolbar">' +
  13.         '<div class="toolbar-inner">' +
  14.           '<div class="left"></div>' +
  15.           '<div class="right"><a href="#" class="close-picker">Close</a></div>' +
  16.         '</div>' +
  17.       '</div>' +
  18.       '<div class="picker-modal-inner">' +
  19.         '<div class="content-block">' +
  20.           '<p>Lorem ipsum dolor ...</p>' +
  21.         '</div>' +
  22.       '</div>' +
  23.     '</div>'
  24.   )
  25. });
复制

实例预览

Picker Events

Picker has the same events as any Modal

Event Target Description
open Picker Element<div class="picker-modal"> Event will be triggered when Picker starts its opening animation
opened Picker Element<div class="picker-modal"> Event will be triggered after Picker completes its opening animation
close Picker Element<div class="picker-modal"> Event will be triggered when Picker starts its closing animation
closed Picker Element<div class="picker-modal"> Event will be triggered after Picker completes its closing animation

猜你喜欢

转载自zaixianshouce.iteye.com/blog/2303247