jQuery模拟实现的select点击选择效果【附demo源码下载】


Posted in Javascript onNovember 09, 2016

本文实例讲述了jQuery模拟实现的select点击选择效果。分享给大家供大家参考,具体如下:

有时候有些HTML元素无法让我们用样式控制进行控制,但是射鸡师或是客户的需求就是需要这种效果,还要让每个浏览器都显示同样的效果,这时候就会让我们这些所谓的前端攻城师很蛋疼,客户会认为交了点钱不让你折腾些东西,以为你是没做事的。面对这些对技术一窍不通的客户,技术对于他们来说就是一坨屎,以为我们都是用意念来写代码做程序的,所以都把我们的劳动成果看作是廉价得像是简单的拉出一泡屎而已。

虽然很喜欢什么都没有修饰的默认效果,但是又不得不面对这些客户蛋疼的效果和要求,所以不得不折腾几个来回总不满足,HTML里面,不可以样式控制的元素恐怕也为数不多,select是其中的一个,,所以今天也来折腾一下这个比较喜欢自由不爱样式约束的元素,采用模拟的方式来实现select的效果。

采用模拟的好处可以任意的进行样式控制,做出各种各样的效果,在各个浏览器中的表现都一致,实现客户蛋疼的要求,但缺点也是同样的存在的,网络非常慢或客户端禁止运行脚本的时候//(尽管脚本禁止运行的机率很低,一般只会有服务器版本的浏览器上才会出现),脚本加载不到有可能会影响到其失效,无法进行操作,

其实这个效果早已广泛应用,也不算什么新鲜的了,大家可以随便看一下比较新一点的网站都能找到,下面分别是淘宝和拍拍上也采用模拟的select的截图。

淘宝模拟select:

jQuery模拟实现的select点击选择效果【附demo源码下载】

拍拍模拟select:

jQuery模拟实现的select点击选择效果【附demo源码下载】

本例实现效果:

jQuery模拟实现的select点击选择效果【附demo源码下载】

实现的思路很简单,只有两步:

1、当鼠标进行移入和点击的目标元素的时候,触发弹出一个层,层内装着模拟的不同的元素的值

2、点击选择层内的元素的时候,需要将点击元素文本元素赋到目标元素中,并将元素内的一些参数值传到一个隐藏的域中进行传值

于是就有了以下的HTML、CSS和操作JS:

html:

<span class="selectType">
  <a title="" href="#" class="ipt" id="selectTypeText">全部</a>
  <span id="selectTypeMenu">
    <a rel="0" title="" href="#">全部</a>
    <a rel="1" title="" href="#">商品</a>
    <a rel="2" title="" href="#">商铺</a>
  </span>
  <input type="hidden" name="" class="ipt" value="" id="selectTypeRel">
  <em class="searchArrow hh abs">下拉选择</em>
</span>

css:

.sysSelect{width:76px; height:28px; line-height:28px; border:1px solid #CCC; font-size:14px;}
.sysSelect option{height:28px; line-height:28px;}
.selectType{position:relative; width:78px; height:30px; line-height:30px; font-size:14px;}
.selectType .ipt{width:76px; height:28px; line-height:28px; border:1px solid #CCC; display:inline-block; text-decoration:none; color:#000; text-indent:5px; outline:none;}
.selectType span{position:absolute; width:76px; background-color:#fff; border:1px solid #CCC; border-top-style:dashed; left:0px; top:22px; text-indent:6px; line-height:26px; display:none;}
.selectType span a{color:#333; display:block; text-decoration:none;}
.selectType span a:hover{background-color:#f60; color:#fff;}
.selectType .searchArrow{border-top:6px solid #666; border-left:6px solid #FFF; border-right:6px solid #FFF; position:absolute; width:0; height:0; top:6px; right:12px; cursor:pointer; -webkit-transition:-webkit-transform 0.2s ease-in; -moz-transition:-moz-transform 0.2s ease-in; -o-transition:-o-transform 0.2s ease-in; transition:transform 0.2s ease-in; overflow:hidden; text-indent:-2000px;}
.selectType .searchArrowRote{-moz-transform:rotate(180deg); -moz-transform-origin:50% 30%; -webkit-transform:rotate(180deg); -webkit-transform-origin:50% 30%; -o-transform:rotate(180deg); -o-transform-origin:50% 30%; transform:rotate(180deg);transform-origin:50% 30%; filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); top:-9px/9;}

js:

$("#selectTypeText").click(function () {
  $(this).next("span").slideDown(200);
  $(".searchArrow").addClass("searchArrowRote");
});
$("#selectTypeText").blur(function () {
   $(this).next("span").slideUp(200);
   $(".searchArrow").removeClass("searchArrowRote");
});
$("#selectTypeMenu>a").click(function () {
  $("#selectTypeText").text($(this).text());
  $("#selectTypeRel").attr("value", $(this).attr("rel"));
  $(this).parent().slideUp(200);
  $(".searchArrow").removeClass("searchArrowRote");
  return false;
});

你是否还期待着我的长篇大论?但很遗憾的告诉你,说明已经完毕了,也就是这么简单了,几行代码一看也就明白了。

还有不明白的?那没问题,请看DEMO,点击此处打开

完整demo源码点击此处本站下载

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
JS的数组的扩展实例代码
Jul 09 Javascript
JavaScript动态创建div属性和样式示例代码
Oct 09 Javascript
基于jQuery实现文本框缩放以及上下移动功能
Nov 24 Javascript
JS模式之简单的订阅者和发布者模式完整实例
Jun 30 Javascript
JavaScript中Boolean对象的属性解析
Oct 21 Javascript
全面解析Bootstrap排版使用方法(标题)
Nov 30 Javascript
Backbone.js框架中Model与Collection的使用实例
May 07 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
May 27 Javascript
用jQuery向div中添加Html文本内容的简单实现
Jul 13 Javascript
javascript 封装Date日期类实例详解
May 28 Javascript
解决vue attr取不到属性值的问题
Sep 18 Javascript
vue地址栏直接输入路由无效问题的解决
Nov 15 Javascript
微信小程序 loading 详解及实例代码
Nov 09 #Javascript
微信小程序 toast 详解及实例代码
Nov 09 #Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
Nov 09 #Javascript
微信小程序  modal详解及实例代码
Nov 09 #Javascript
微信小程序  action-sheet详解及实例代码
Nov 09 #Javascript
浅谈EasyUI常用控件的禁用方法
Nov 09 #Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
Nov 09 #Javascript
You might like
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
js实现中文实时时钟
2020/01/15 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
简单的Python2.7编程初学经验总结
2015/04/01 Python
Python中的元类编程入门指引
2015/04/15 Python
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
大二自我鉴定
2014/01/31 职场文书
大学毕业感言一句话
2014/02/06 职场文书
中秋节主持词
2014/04/02 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
暑期培训心得体会
2014/09/02 职场文书
十八大标语口号
2014/10/09 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书
《青山不老》教学反思
2016/02/22 职场文书
MySQL插入数据与查询数据
2022/03/25 MySQL