jQuery+CSS3折叠卡片式下拉列表框实现效果


Posted in Javascript onNovember 02, 2015

jQuery下拉列表框特效将每一个列表项都制作为卡片的样式,打开和关闭它有打开和关闭百叶窗的感觉,效果非常不错,分享给大家。

jQuery+CSS3折叠卡片式下拉列表框实现效果

jQuery+CSS3折叠卡片式下拉列表框实现效果

简要教程
HTML结构
该下拉列表框特效的列表项使用一个无序列表来制作,用于切换打开和关闭状态的元素是一个超链接元素。

<div class="container">
 <div class="card-drop">
  <a class='toggle' href="#">
   <i class='fa fa-suitcase'></i> 
   <span class='label-active'>Everyting</span>
  </a>
  <ul>
   <li class='active'>
    <a data-label="Everyting" href="#"><i class='fa fa-suitcase'></i> Everyting</a>
   </li>
   ......
  </ul>
 </div>
</div>

CSS样式
a.toggle元素用于切换下拉列表的打开和关闭状态。为了制作点击时卡片上翻的效果,它被设置了transform-style: preserve-3d;属性。同时修改了转换的原点transform-origin: 50% 0%;。

.card-drop > a.toggle {
 position: relative;
 z-index: 100;
 -moz-backface-visibility: hidden;
 -webkit-backface-visibility: hidden;
 backface-visibility: hidden;
 -moz-transform-style: preserve-3d;
 -webkit-transform-style: preserve-3d;
 transform-style: preserve-3d;
 -moz-transform-origin: 50% 0%;
 -ms-transform-origin: 50% 0%;
 -webkit-transform-origin: 50% 0%;
 transform-origin: 50% 0%;
 -moz-transition: linear 0.1s;
 -o-transition: linear 0.1s;
 -webkit-transition: linear 0.1s;
 transition: linear 0.1s;
}

但它处于激活状态的时候,它会沿X轴进行旋转,并使用:before和:after伪元素来制作角部三角形效果

.card-drop > a.toggle:active {
 -moz-transform: rotateX(60deg);
 -webkit-transform: rotateX(60deg);
 transform: rotateX(60deg);
}
.card-drop > a.toggle:active:after {
 -moz-transform: rotateX(180deg);
 -webkit-transform: rotateX(180deg);
 transform: rotateX(180deg);
}
.card-drop > a.toggle:before, .card-drop > a.toggle:after {
 content: "";
 position: absolute;
}
.card-drop > a.toggle:before {
 right: 25px;
 top: 50%;
 margin-top: -2.5px;
 border-left: 6px solid transparent;
 border-right: 6px solid transparent;
 border-top: 6px solid rgba(0, 0, 0, 0.8);
}
.card-drop > a.toggle.active:before {
 transform: rotate(180deg);
}

列表项在切换时只是简单的使用jQuery来修改它们的top、width和margin-left属性,使其显示和隐藏。并使用ease-out作为CSS动画过渡效果。

.card-drop ul {
 position: absolute;
 height: 100%;
 top: 0;
 display: block;
 width: 100%;
}
.card-drop ul li {
 margin: 0 auto;
 -moz-transition: all, ease-out 0.3s;
 -o-transition: all, ease-out 0.3s;
 -webkit-transition: all, ease-out 0.3s;
 transition: all, ease-out 0.3s;
 position: absolute;
 top: 0;
 z-index: 0;
 width: 100%;
}
.card-drop ul li a {
 border-top: none;
}
.card-drop ul li a:hover {
 background-color: #4aa3df;
 color: #f3f9fd;
}
.card-drop ul li.active a {
 color: #fff;
 background-color: #258cd1;
 cursor: default;
}
.card-drop ul li.closed a:hover {
 cursor: default;
 background-color: #3498db;
}

 JavaScript

在jQuery代码中,setClosed()函数用于关闭所有的列表项,默认它们是处于关闭状态的。

function setClosed() {
  li.each(function (index) {
    $(this).css('top', index * 4).css('width', width - index * 0.5 + '%').css('margin-left', index * 0.25 + '%');
  });
  li.addClass('closed');
  toggler.removeClass('active');
}
setClosed();

然后监听.toggle元素的mousedown事件,该事件中切换列表的打开和关闭状态。

toggler.on('mousedown', function () {
  var $this = $(this);
  if ($this.is('.active')) {
    setClosed();
  } else {
    $this.addClass('active');
    li.removeClass('closed');
    li.each(function (index) {
      $(this).css('top', 60 * (index + 1)).css('width', '100%').css('margin-left', '0px');
    });
  }
});

最后在每一个列表项被点击的时候,将该列表项的内容移动到第一项中,被关闭整个下来列表。

links.on('click', function (e) {
  var $this = $(this), label = $this.data('label');
  icon = $this.children('i').attr('class');
  li.removeClass('active');
  if ($this.parent('li').is('active')) {
    $this.parent('li').removeClass('active');
  } else {
    $this.parent('li').addClass('active');
  }
  toggler.children('span').text(label);
  toggler.children('i').removeClass().addClass(icon);
  setClosed();
  e.preventDefault;
});

以上就是为大家分享的jQuery和CSS3制作的效果,非常炫酷的下拉列表框特效,希望大家喜欢

Javascript 相关文章推荐
Firefox getBoxObjectFor getBoundingClientRect联系
Oct 26 Javascript
ie和firefox不兼容的解决方法集合
Apr 28 Javascript
JavaScript计划任务后台运行的方法
Dec 18 Javascript
jQuery ajax MD5实现用户注册即时验证功能
Oct 11 Javascript
基于Vue2的移动端开发环境搭建详解
Nov 03 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
May 03 Javascript
React Native模块之Permissions权限申请的实例相机
Sep 28 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
Aug 06 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
Aug 31 Javascript
微信小程序实现商品属性联动选择
Feb 15 Javascript
javascript导出csv文件(excel)的方法示例
Aug 25 Javascript
vue proxy 的优势与使用场景实现
Jun 15 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 #Javascript
纯javascript移动优先的幻灯片效果
Nov 02 #Javascript
JS实现点击按钮获取页面高度的方法
Nov 02 #Javascript
基于jQuery实现自动轮播旋转木马特效
Nov 02 #Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
Nov 02 #Javascript
jquery实现网页的页面平滑滚动效果代码
Nov 02 #Javascript
JS实现超简单的鼠标拖动效果
Nov 02 #Javascript
You might like
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
php实现的用户查询类实例
2015/06/18 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
使用composer 安装 laravel框架的方法图文详解
2019/08/02 PHP
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
js读取配置文件自写
2014/02/11 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
2017/01/20 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
python web框架中实现原生分页
2019/09/08 Python
浅析Python迭代器的高级用法
2020/07/16 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
新员工培训个人的自我评价
2013/10/09 职场文书
财务与信息服务专业推荐信
2013/11/28 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
就业协议书的作用
2014/04/11 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
黄山导游词
2015/01/31 职场文书
新学期开学寄语2016
2015/12/04 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang