`
yiminghe
  • 浏览: 1460180 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

下拉框的分离设计

    博客分类:
  • ui
阅读更多

     模拟系统内置下拉框,使得在所有的系统以及浏览器中具有同样的表现,目标是功能分解,利用 mixin 分离实现。

 

下拉框功能点分析:

 

1.可以存储值,是一个存储数据的容器,相当于 readonly 的 input。

 

2.有下拉箭头,点击下拉箭头可以弹出选项列表。(实际上点击存储容器也有同样的表现)。

 

3.选项列表本质是一个 overlay,选项列表弹出后会遮盖存储容器下面的内容。

 

4.选项列表浮层具有默认的对齐属性,即选项列表的左上角与存储容器的左下角对齐。

 

5.最重要的:下拉框的内容(选项列表)是一个列表,可以通过鼠标或键盘选中特定列表项值。

 

 

下拉框实现设计:

 

1.值容器

 

值容器使用 input 来表现,不过新增自定义属性 data-value 用来表示下拉框的值,input 本身的 value 则用来表示下拉框值的对应展现内容。

 

值容器作为最基本的实现,具备 inputNode(关联input) ,inputValue (下拉框值),inputDisplay(下拉框展现内容)三个属性,不仅能为下拉框提供支持,经过扩展也可以作为自动补全组件的存储底层:

 

function Base(){}
Base.ATTRS = {
        inputNode:{
            setter:function(el) {

                return Node.one(el);
            }
        },

        inputValue:{
        },

        inputDisplay:{
            valueFn:function() {
                this.get("inputNode").val();
            }
        }
    };

  2.列表

 

列表表示列表数据项的有序组合,列表使用语义化的 ul ,li来表示:

 

 

var LIST_WRAP_TMPL = "<ul class='{listClass}'>";

var LIST_ITEM_TMPL = "<li class='{listItemClass}' data-value='{listItemValue}'>{listItem}</li>";
 

 

具备 listData (列表内容数据),hoverListItem(当前鼠标掠过的单个表项),selectListItem(当前鼠标点击确定的单个表项),以及一些样式类配置:

 

function List(){}

List.ATTRS = {
        listData:{
            setter:function(v) {
                return v || [];
            }
        },
        listClass:{
            value:"ks-selectable2-list"
        },
        listItemClass:{
            value:"ks-selectable2-list-item"
        },

        listItemHoverClass:{
            value:"ks-selectable2-list-item-hover"
        },
        listItemActiveClass:{
            value:"ks-selectable2-list-item-active"
        },

        hoverListItem:{setter:smooth},
        activeListItem:{setter:smooth},
        selectListItem:{setter:smooth}
    };
 

主要逻辑为监控鼠标动作来更新对应属性值(hover,click)。(经扩展也可支持键盘)。

 

 

3.overlay 特性扩充

 

通过扩充 overlay 的特性(盒子,定位,对齐)并结合上述 1,2 的 input 和 list 来产生模拟系统的下拉框类

 

 

UIBase.create([
        S.require("uibase/box"),
        S.require("uibase/contentbox"),
        S.require("uibase/position"),
        UA['ie'] == 6 ? S.require("uibase/shim") : null,
        S.require("uibase/align"),
        SelectBase,
        SelectList);
 

下拉框要处理自己的逻辑了:

 

1.监控 list 的选择项变化,同步 input 的展现内容与自定义的 data-value 属性值。

 

2.将 input 设为只读,并且屏蔽 input 获得焦点 (系统下拉框的 input 是不会出现光标的)。

 

3.添加下拉箭头。

 

3.控制列表显示:点击 input 以及下拉箭头进行列表的显示和隐藏,点击空白区域隐藏列表。

 

4.设置默认对齐属性,列表默认对齐于 input。

 

 

3.demo

 

模拟系统下拉框

 

分享到:
评论

相关推荐

    下拉框和文本框组合共用-可以输入的下拉框ok

    在网页设计和开发中,"下拉框和文本框组合共用-可以输入的下拉框"是一个常见的交互元素,它结合了下拉选择框(Dropdown)和输入文本框(Input Text)的功能,以提供更灵活、用户友好的界面。这种设计通常用于场景,...

    WPF颜色选择下拉框

    创建颜色选择下拉框的第一步是设计界面。在XAML文件中,我们将使用ComboBox控件,并为它添加一个ItemsSource属性,该属性将绑定到包含颜色的集合。例如: ```xml &lt;!-- 添加更多颜色 --&gt; ``` 这里的...

    jQuery多级联动下拉框插件

    jQuery多级联动下拉框插件是一种常用的前端交互组件,主要应用于网页表单设计中,以实现级联选择的效果。这种插件可以帮助用户在多个下拉框之间建立关联,当用户在一级下拉框中选择一个选项时,二级下拉框会自动更新...

    js三级联动下拉框

    ### JS三级联动下拉框知识点解析 #### 一、知识点概览 在Web开发中,三级联动下拉框是一种常见的用户...总结,三级联动下拉框是一种实用且高效的前端交互组件,通过合理设计和优化,可以在多种场景中发挥重要作用。

    仿美团网团购搜索级联下拉框DEMO

    2. **级联下拉框**: 级联下拉框是一种交互设计,它允许用户在一个下拉框的选择基础上,打开另一个相关的下拉框,形成一种递进的筛选过程。例如,用户先选择城市,接着在选择的城市基础上展示相应的商圈或者类别。...

    下拉框查询

    在下拉框查询中,数据库设计通常会包含一个或多个表,这些表的字段可能与下拉框选项相关联。通过优化查询语句和索引设置,可以提高数据检索速度,提升用户体验。 下拉框查询的实现通常涉及前端和后端的配合。前端...

    自定义下拉选框 【已分离】

    标题“自定义下拉选框 【已分离】”所涉及的知识点主要集中在前端网页开发中的交互元素设计,特别是下拉菜单的实现。下拉菜单是一种常见的用户界面元素,用于节省空间并提供多级导航选项。在网页设计中,自定义下拉...

    C#文本框输入提示功能 下拉框

    - 使用MVVM(Model-View-ViewModel)设计模式,将UI逻辑与业务逻辑分离,提高代码的可维护性。 - 考虑使用数据绑定,将下拉框选项动态加载,适应数据变化。 总的来说,"C#文本框输入提示功能 下拉框"这个主题涵盖...

    WPF DataGrid ComboBox下拉框数据绑定 代码实例

    C#是WPF编程的主要语言,它与XAML(Extensible Application Markup Language)结合,使得UI设计和逻辑代码分离。 首先,我们要理解`WpfApp2.csproj`是项目的解决方案文件,包含了项目的配置和引用信息。`App.config...

    基于jquery带搜索功能的下拉框,兼容IE5/6/7/8/9/10

    这种设计允许开发者将友好的展示文本与实际数据值分离,使得数据处理更加灵活。 为了实现对老旧浏览器,如IE5至IE10的兼容,开发者需要特别关注这些浏览器的特性差异和限制。例如,它们可能不支持某些现代CSS属性、...

    市区二级联动下拉框

    8. **响应式设计**:考虑到不同设备的屏幕大小,代码可能还包含了适应移动设备的设计,确保下拉框在手机和平板上也能正常工作。 9. **错误处理**:良好的错误处理机制是必不可少的,如请求失败或数据格式不正确时,...

    Vue使用枚举类型实现HTML下拉框步骤详解

    在本文中,我们使用枚举类型 `StatusEnum` 来定义下拉框的选项,枚举类型的优点是可以将选项的值和显示的文本分离,方便后台数据的处理和前台的显示。在 `StatusEnum` 枚举类型中,我们定义了三个选项:`RED`、`...

    JS+XML 省市区 三级联动下拉框

    在网页开发中,"JS+XML 省市区 三级联动下拉框"是一种常见的交互设计,用于用户选择他们的地理位置,如省、市、区。这个功能通常在注册、填写地址等场景中出现,能够提供良好的用户体验,因为它使得用户可以通过简单...

    jQuery移动下拉框带搜索代码.zip

    CSS(Cascading Style Sheets)用于控制网页的样式和布局,它可以将设计从内容中分离出来,让开发者能够独立调整界面的视觉效果。在移动下拉框中,CSS用于设置下拉框的样式,使其适应各种屏幕尺寸,并实现平滑的动画...

    用Struts+hibernate+SQLServer2000写的级联下拉框程序

    它帮助开发者组织和构建应用程序,使控制逻辑与业务逻辑和视图分离。在级联下拉框的应用中,Struts负责处理用户的HTTP请求,调用相应的Action,然后将结果转发给JSP页面显示。 2. **Hibernate**:Hibernate 是一个...

    ASP.NET MVC下拉框联动实例解析

    *** MVC是微软推出的一种MVC架构的WEB应用程序框架,它将用户界面层和业务逻辑层分离开,从而实现高内聚低耦合的设计目标。在*** MVC框架中,下拉框联动是一种常见的用户交互方式,它能够根据用户在第一个下拉框中的...

    省市联动下拉框必备资料

    省市联动下拉框是网页设计或应用程序中常见的一种交互元素,它通常用于用户选择地理位置时,省份选择后,对应的市区会动态更新显示。这种联动效果能够简化用户输入,提高用户体验。下面将详细介绍省市联动的基本原理...

    ul li 模拟省市区下拉框

    在网页开发中,为了提供更好的用户体验,我们常常需要模拟出具有层级关系的...以上就是“ul li 模拟省市区下拉框”的相关知识点,它涉及到前端UI设计、数据处理、事件驱动编程等多个方面,是网页开发中的一个重要技能。

    MVC实现下拉框联动效果(单选)

    下拉框联动是一种常见的前端交互设计,通常用于在两个或多个下拉菜单之间建立依赖关系,当用户在一个下拉菜单中做出选择时,另一个下拉菜单的内容会根据所选选项动态更新。这种功能在很多场景中都很实用,例如我们以...

    DIV+CSS下拉菜单

    在网页设计领域,`DIV+CSS`是一种常见的布局方式,它通过HTML的`&lt;div&gt;`元素结合CSS(层叠样式表)来实现页面结构与样式的分离,提高页面的可维护性和可扩展性。本资源提供了5个独特的`DIV+CSS`下拉菜单示例,这些...

Global site tag (gtag.js) - Google Analytics