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 相关文章推荐
在网页中屏蔽快捷键
Sep 06 Javascript
location对象的属性和方法应用(解析URL)
Apr 12 Javascript
JavaScript设计模式之单件模式介绍
Dec 28 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
Sep 17 Javascript
Node.js的文件权限及读写flag详解
Oct 11 Javascript
jQuery实现简单弹窗遮罩效果
Feb 27 Javascript
JavaScript拖动层Div代码
Mar 01 Javascript
jquery tmpl模板(实例讲解)
Sep 02 jQuery
微信小程序自定义纯净模态框(弹出框)的实例代码
Mar 09 Javascript
Vue Element-ui表单校验规则实现
Jul 09 Vue.js
node.js如何自定义实现一个EventEmitter
Jul 16 Javascript
JavaScript实现酷炫的鼠标拖尾特效
Feb 18 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
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
ie 调试javascript的工具
2009/04/29 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
python交换两个变量的值方法
2019/01/12 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
python调试神器PySnooper的使用
2019/07/03 Python
Python的Lambda函数用法详解
2019/09/03 Python
HTTP状态码详解
2021/03/18 杂记
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
千元咖啡店的创业计划书范文
2013/12/29 职场文书
优秀的自荐信要注意哪些
2014/01/03 职场文书
建议书标准格式
2014/03/12 职场文书
软件项目开发计划书
2014/05/01 职场文书
学雷锋标语
2014/06/25 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
旷课检讨书
2015/01/26 职场文书
小学教师求职信范文
2015/03/20 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
运输公司工作总结
2015/08/11 职场文书
爱护环境建议书
2015/09/14 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
2016年母亲节广告语
2016/01/28 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python
vue elementUI批量上传文件
2022/04/26 Vue.js