`

移动端安卓和IOS开发框架Framework7教程-Smart Select

阅读更多

Smart Select 可以自动帮你把原生的select变成一个由 分组单选按钮 构成的动态页面。在很多iOs native应用中你可以看到这种特性。

Smart Select 布局

Smart Select 布局非常简单,只需要在 列表 中插入 <select>,并且给 item-link 加上 "smart-select" class即可。

  1. <div class="list-block">
  2.   <ul>
  3.     <!-- Smart select item -->
  4.     <li>
  5.       <!-- Additional "smart-select" class -->
  6.       <a href="#" class="item-link smart-select">
  7.         <!-- select -->
  8.         <select name="fruits">
  9.           <option value="apple" selected>Apple</option>
  10.           <option value="pineapple">Pineapple</option>
  11.           ...
  12.         </select>
  13.         <div class="item-content">
  14.           <div class="item-inner">
  15.             <!-- Select label -->
  16.             <div class="item-title">Fruit</div>
  17.             <!-- Selected value, not required -->
  18.             <div class="item-after">Apple</div>
  19.           </div>
  20.         </div>
  21.       </a>
  22.     </li>
  23.     <!-- Another smart selects or list view elements -->
  24.     ...
  25.   </ul>
  26. </div>
复制

实例预览

注意,smart select 只有在 初始化 之后的View中才可用。

带有搜索栏的Smart Select

Smart select 可以结合 搜索栏 使用。如果你希望所有的 Smart Select 都带有搜索栏,你可以在初始化 的时候传入一个smartSelectSearchbar: true 参数。

也可以通过 "data-" 属性来启用搜索栏:

  1. <div class="list-block">
  2.   <ul>
  3.     <!-- Smart select item -->
  4.     <li>
  5.       <a href="#" class="item-link smart-select" data-searchbar="true" data-searchbar-placeholder="Search fruits">
  6.         ... same Smart select Fruits structure as in previous example ...
  7.       </a>
  8.     </li>
  9.     <li>
  10.       <a href="#" class="item-link smart-select" data-searchbar="true" data-searchbar-placeholder="Search cars">
  11.         ... same Smart select Cars structure as in previous example ...
  12.       </a>
  13.     </li>
  14.   </ul>
  15. </div>
复制

其中

  • data-searchbar - 对当前的Smart Select启用搜索栏(或者可以通过全局的 smartSelectSearchbar 参数来启用
  • data-searchbar-placeholder - 搜索栏输入框的占位符,可选。默认是 "Search"
  • data-searchbar-cancel - 取消按钮的文案,可选。 默认是 "cancel"

实例预览

自定义页面的title和返回按钮的文案

默认情况下,Smart Select 页面的标题总是和被点击条目的 "item-title" 文案一直,返回按钮的文案总是和 "smartSelectBackText" 中设置的文案一直。

有时候你需要自定义文案,可以通过在 Smart Select 链接上使用 "data-page-title" 和 "data-back-text" 来设置

  1. <div class="list-block">
  2.   <ul>
  3.     <!-- Smart select item -->
  4.     <li>
  5.       <a href="#" class="item-link smart-select" data-page-title="Awesome Fruits" data-back-text="Go back">
  6.         ... same Smart select Fruits structure as in previous example ...
  7.       </a>
  8.     </li>
  9.     <li>
  10.       <a href="#" class="item-link smart-select" data-page-title="Super Cars" data-back-text="Go back">
  11.         ... same Smart select Cars structure as in previous example ...
  12.       </a>
  13.     </li>
  14.   </ul>
  15. </div>
复制

 实例预览

在弹层中打开

Smart select 可以在弹层中打开,而不是新页面。如果你希望所有的Smart select 都在弹层中打开,那么你可以在 App 初始化 的时候设置smartSelectInPopup:true参数。

另外,他也可以通过 "data-open-in" 属性来配置:

  1. <div class="list-block">
  2.   <ul>
  3.     <li>
  4.       <!-- Smart select, will be opened in Popup -->
  5.       <a href="#" class="item-link smart-select" data-open-in="popup">
  6.         ... same Smart select Fruits structure as in previous example ...
  7.       </a>
  8.     </li>
  9.     <li>
  10.       <!-- Smart select, will be opened in Popup with custom "Close" text -->
  11.       <a href="#" class="item-link smart-select" data-open-in="popup" data-popup-close-text="Close Cars">
  12.         ... same Smart select Cars structure as in previous example ...
  13.       </a>
  14.     </li>
  15.   </ul>
  16. </div>
复制

 实例预览

注意,如果你通过设置smartSelectInPopup:true使所有的 Smart select 都以弹层的方式打开,你依然可通过设置 data-open-in="page" 属性来设置以页面方式打开。

自定义图标和图片

你可以自定义Smart Select列表中的图标和图片。我们必须通过在smart select 的 <select>或者<option>上设置 "data-option-icon" 或者 "data-option-image"来实现自定义。如果是在<select>上设置的,则对所有的option都生效;如果是在<option>上设置的,则只对当前一条生效。

For single option we may also use data-option-color and data-option-class attributes to add specific option color or css class for additional styling

  1. <a href="#" class="item-link smart-select">
  2.   <select name="fruits">
  3.     <option value="apple" selected data-option-image="http://lorempixel.com/29/29/">Apple</option>
  4.     <option value="pineapple" data-option-image="http://lorempixel.com/29/29/?2">Pineapple</option>
  5.     <option value="pear" data-option-color="orange" data-option-image="http://lorempixel.com/29/29/?3">Pear</option>
  6.     ...
  7.   </select>
  8.   <div class="item-content">
  9.     <div class="item-inner">
  10.       <div class="item-title">Fruit</div>
  11.     </div>
  12.   </div>
  13. </a>
复制

 实例预览

多选和分组

  1. <div class="list-block">
  2.   <ul>
  3.     <li><a href="#" class="item-link smart-select">
  4.         <!-- "multiple" attribute for multiple select-->
  5.         <select name="car" multiple>
  6.           <!-- options grouped within "optgroup" tag-->
  7.           <optgroup label="Japanese">
  8.             <option value="honda" selected>Honda</option>
  9.             <option value="lexus">Lexus</option>
  10.             <option value="mazda">Mazda</option>
  11.             <option value="nissan">Nissan</option>
  12.             <option value="toyota">Toyota</option>
  13.           </optgroup>
  14.           <optgroup label="German">
  15.             <option value="audi" selected>Audi</option>
  16.             <option value="bmw">BMW</option>
  17.             <option value="mercedes">Mercedes</option>
  18.             <option value="vw">Volkswagen</option>
  19.             <option value="volvo">Volvo</option>
  20.           </optgroup>
  21.           <optgroup label="American">
  22.             <option value="cadillac">Cadillac</option>
  23.             <option value="chrysler">Chrysler</option>
  24.             <option value="dodge">Dodge</option>
  25.             <option value="ford" selected>Ford</option>
  26.           </optgroup>
  27.         </select>
  28.         <div class="item-content">
  29.           <div class="item-inner">
  30.             <div class="item-title">Car</div>
  31.           </div>
  32.         </div></a></li>
  33.   </ul>
  34. </div>
复制

 实例预览

我们可以通过 <optgroup> 来使用分组,可以通过在 select 上设置 "multiple" 属性来使用多选(页面会自动换成checkbox)。

用户选择之后自动关闭

可以设置用户选择之后自动关闭页面。只需要设置 data-back-on-select 属性即可:

  1. <div class="list-block">
  2.   <ul>
  3.     <!-- data-back-on-select="true" to close page automatically -->
  4.     <li><a href="#" class="item-link smart-select" data-back-on-select="true">
  5.         <select name="car" multiple>
  6.           ...
  7.         </select>
  8.         <div class="item-content">
  9.           <div class="item-inner">
  10.             <div class="item-title">Car</div>
  11.           </div>
  12.         </div></a></li>
  13.   </ul>
  14. </div>
复制

你可以在 初始化 的时候设置 smartSelectBackOnSelect 来使所有的Smart Select 都能点击之后自动关闭。

Smart Select 结合 虚拟列表

如果你的 smart select 有大量的数据(成百上千),你可以对其启用虚拟列表。这种情况下,我们只需要添加在smart select 上 data-virtual-list 属性即可:

  1. <div class="list-block">
  2.     <ul>
  3.         <li>
  4.             <!-- data-virtual-list="true" attribute to enable virtual list  -->
  5.             <a href="#" class="item-link smart-select" data-virtual-list="true">
  6.                 <select name="numbers">
  7.                     <option value="1">1</option>
  8.                     <option value="2">2</option>
  9.                     ...
  10.                     <option value="100000">100000</option>
  11.                 </select>
  12.                 <div class="item-content">
  13.                     <div class="item-inner">
  14.                         <div class="item-title">Numbers</div>
  15.                     </div>
  16.                 </div>
  17.             </a>
  18.         </li>
  19.     </ul>
  20. </div>
复制

如果你需要指定虚拟列表中条目的高度,你可以直接添加一个 data-virtual-list-height 属性:

  1. <div class="list-block">
  2.     <ul>
  3.         <li>
  4.             <!-- data-virtual-list-height="55" attribute to set virtual list single item height to 55px -->
  5.             <a href="#" class="item-link smart-select" data-virtual-list="true" data-virtual-list-height="55">
  6.                 <select name="numbers">
  7.                     <option value="1">1</option>
  8.                     <option value="2">2</option>
  9.                     ...
  10.                     <option value="100000">100000</option>
  11.                 </select>
  12.                 <div class="item-content">
  13.                     <div class="item-inner">
  14.                         <div class="item-title">Numbers</div>
  15.                     </div>
  16.                 </div>
  17.             </a>
  18.         </li>
  19.     </ul>
  20. </div>
复制

Smart Select 颜色主题

You can also specify form and navbar color themes on smart select page or in smart select popup using data-form-theme and data-navbar-theme attributes:

你可以通过 data-form-theme 和 data-navbar-theme 属性来设置 smart select 页面或者弹层中表单和导航栏的主题。

  1. <div class="list-block">
  2.     <ul>
  3.         <li>
  4.             <!-- data-navbar-theme="red" to set red color theme for navbar -->
  5.             <!-- data-form-theme="green" to set green color theme for form -->
  6.             <a href="#" class="item-link smart-select" data-navbar-theme="red" data-form-theme="green">
  7.                 <select name="car">
  8.                     ...
  9.                 </select>
  10.                 <div class="item-content">
  11.                     <div class="item-inner">
  12.                         <div class="item-title">Car</div>
  13.                     </div>
  14.                 </div>
  15.             </a>
  16.         </li>
  17.     </ul>
  18. </div>
复制

通过可选的文案来设置值

It is possible to set smart select (and its select) value depending on selected option value. For this case we need to add additional"smart-select-value" class to "item-after":

  1. <div class="list-block">
  2.   <ul>
  3.     <li>
  4.       <a href="#" class="item-link smart-select">
  5.         <!-- select -->
  6.         <select name="fruits">
  7.           <option value="apple">Apple</option>
  8.           <option value="pineapple">Pineapple</option>
  9.           ...
  10.         </select>
  11.         <div class="item-content">
  12.           <div class="item-inner">
  13.             <div class="item-title">Fruit</div>
  14.             <!-- Additional "smart-select-value" class to set selected option depending on this text value -->
  15.             <div class="item-after smart-select-value">Apple</div>
  16.           </div>
  17.         </div>
  18.       </a>
  19.     </li>
  20.   </ul>
  21. </div>
复制

After that <option> with "Apple" text value will be set as selected.

通过 JavaScript 打开 smart select

也可以通过 JavaScript 来打开 smart select。我们需要使用这些相关的App方法:

myApp.smartSelectOpen(smartSelect) - 打开指定的 smart select

  • smartSelect - HTMLElement or string (with CSS Selector) of required ".smart-select". Required.

Add options dynamically

It is possible to add Smart Select options later dynamically, if it is even already opened. We need to use appropriate App method:

myApp.smartSelectAddOption(select, optionHTML, index) - add option to select at specified index

  • select - HTMLElement or string (with CSS Selector) of Smart Select's <select> or <optgroup>. Required.
  • optionHTML - string with HTML of option to add. Required.
  • index - number index number for new option. If not specified, then option will be added to the end

For example:

  1. // Append option
  2. myApp.smartSelectAddOption('.smart-select select', '<option value="apple">Apple</option>');
  3.  
  4. // Add new option as first selected option
  5. myApp.smartSelectAddOption('.smart-select select', '<option value="apple" selected>Apple</option>', 0);
  6.  
  7. // Append new option to second <optgroup>
  8. myApp.smartSelectAddOption($$('.smart-select select optigroup').eq(1), '<option value="apple">Apple</option>', 0);
复制
 
0
1
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    iOS开发视频教程

    资源名称:iOS开发视频教程资源目录:【】iOS开发视频教程-第01讲-iOS历史介绍【】iOS开发视频教程-第02讲-XCode安装【】iOS开发视频教程-第03讲-UIView_PPT【】iOS开发视频教程-第04讲-UILabel【】iOS开发视频教程-...

    HTML移动端框架Framework7.zip

    Framework7 是免费开源的 HTML 移动端框架,用来开发混合移动端应用或者 iOS 7 的 Web 应用,并且带有 iOS 7 的原生外观和感觉。Framework7 也是独立的原型应用工具。Framework7 使用 Javascript,CSS 和 HTML 来...

    《iOS开发零基础入门教程》(40集)

    资源名称:《iOS开发零基础入门教程》(40集)资源目录:【】传智播客《iOS开发零基础入门教程》1.1【】传智播客《iOS开发零基础入门教程》1.2【】传智播客《iOS开发零基础入门教程》1.3【】传智播客《iOS开发零基础...

    ios开发 AES-128-ECB加密

    之前遇到的需求,ios上没有类似的实现。搞了好久在网上搜了很多资料都不能解决最后找到了一个c/c++的底层源码,才实现了最后整理了下上传了。是个ios的demo很详细你定能看懂的。运行在xcode环境下,关键算法的文件是...

    framework7-icons, Framework7的免费iOS图标字体.zip

    framework7-icons, Framework7的免费iOS图标字体 Framework7图标Framework7的高级和免费ios图标字体。这种字体可以用在 Framework7插件中,但是你可以在任何地方看到它适合它,个人或者商业。 它是免费的使用和许可...

    PyPI 官网下载 | pyobjc-framework-Cocoa-6.0.1.tar.gz

    Objective-C是苹果公司开发的一种面向对象的编程语言,广泛应用于MacOS和iOS平台的软件开发。Cocoa是Apple为这两种操作系统提供的原生开发框架,包含了大量用于构建图形用户界面、处理事件、管理文件系统等任务的...

    Framework7Vue使用Framework7和Vue构建完整的iOS和Android应用程序

    Framework7是一款免费、开源的移动应用框架,旨在为开发者提供构建iOS和Android应用的全套工具。它提供了丰富的组件库,包括导航、表单、视图、滑块等,使开发者能够轻松实现原生应用的界面和交互效果。 二、Vue.js...

    iPhone开发入门到精通视频教程

    iPhone开发入门到精通视频教程资源目录:【】iOS开发源码系列---工具【】iOS开发源码系列---应用【】iOS开发源码系列---游戏【】iOS开发源码系列---类库与框架【】iOS开发真机测试与发布【】iOS开发视频教程01~05...

    IOS开发框架、开发步骤、开发重点技术详细讲解.zip

    IOS开发框架、开发步骤、开发重点技术详细讲解.zip IOS开发框架、开发步骤、开发重点技术详细讲解.zip IOS开发框架、开发步骤、开发重点技术详细讲解.zip IOS开发框架、开发步骤、开发重点技术详细讲解.zip IOS开发...

    UI第一章:无限互联iOS开发教程课件-- iPhone开发入门

    ### UI第一章:无限互联iOS开发教程课件 -- iPhone开发入门 #### iOS系统概述与架构 - **iOS系统**:作为苹果公司专为iPhone、iPod touch及iPad设计的操作系统,iOS自诞生以来就以其简洁易用的特点受到全球用户的...

    IOS应用源码Demo-iOS framework 制作教程【非静态包】-毕设学习.zip

    提供的【应用】★★★★-iOS framework 制作教程【非静态包】源码示例,应该包含了完整的框架创建过程和相关代码,你可以通过阅读和运行这个项目来加深理解。在实践中,你可以尝试修改源代码,添加新的功能,或者...

    移动端兼容安卓IOS的高仿支付密码输入功能

    移动端兼容安卓IOS的高仿支付密码输入功能。 类似支付宝,微信的支付密码功能。

    手机移动端电商,IOS,Android

    总之,手机移动端电商在iOS和Android平台上的实现涉及多方面的技术和策略。从H5页面的构建到原生功能的集成,再到用户体验的优化,每一个环节都需要精心设计和实施。随着技术的不断发展,未来的移动端电商将更加智能...

    Framework7是一个用于构建iOS和Android应用的全功能HTML框架

    Framework7 是免费开源的 HTML 移动端框架,用来开发混合移动端应用或者 iOS 7 的 Web 应用,并且带有 iOS 7 的原生外观和感觉。Framework7 也是独立的原型应用工具。

    Framework7用于构建iOS和Android应用全功能移动HTML框架

    Framework7是一款强大的、免费的HTML5移动应用框架,专为构建具有原生iOS和Android界面风格的混合式移动应用而设计。它允许开发者使用Web技术(如HTML, CSS, JavaScript)来创建高度交互且功能丰富的应用程序,同时...

    iOS开发框架

    本资源“iOS开发框架”显然是一个专为学习和开发iOS应用而设计的集合,其中包含了多个有用的工具和示例项目。 1. **CTools使用.rtf**: 这个文件可能是关于`CTools`的使用指南,`CTools`通常是指一套用于iOS开发的...

    WebRTC.framework iOS Debug arm64与x86-64架构

    iOS Debug环境 arm64与x86_64架构 WebRTC.framework Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [arm64] Mach-O 64-bit dynamically linked ...

    ios开发-使用mpass移动开发框架在ios端抓包hook脚本.zip

    "ios开发-使用mpass移动开发框架在ios端抓包hook脚本.zip"是一个针对iOS开发者的重要资源,它包含了一套利用mpass移动开发框架在iOS设备上实现抓包功能的hook脚本。本文将详细介绍如何使用这个框架和脚本来实现iOS端...

    road-ios-framework, 道路- 快速 Objective C 应用程序开发.zip

    road-ios-framework, 道路- 快速 Objective C 应用程序开发 一组重用组件利用额外的维度属性定向程序 。##Components基础类的属性。反射和辅助扩展支持核心 。服务 implementation服务定位器 Pattern的实现,集中...

    appium-ios-device-自动化-手机自动化-移动端IOS自动化-自动化测试-ios真机驱动

    Appium 是一个流行的开源自动化测试框架,用于移动应用测试,支持iOS和Android平台。在iOS自动化测试领域,Appium 提供了对真实设备和模拟器的控制能力,使得开发者和测试工程师可以编写跨平台的自动化测试脚本。...

Global site tag (gtag.js) - Google Analytics