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 相关文章推荐
ExtJS Store的数据访问与更新问题
Apr 28 Javascript
JQuery触发radio或checkbox的change事件
Dec 18 Javascript
JS父页面与子页面相互传值方法
Mar 05 Javascript
jQuery使用ajaxSubmit()提交表单示例
Apr 04 Javascript
javascript实现playfair和hill密码算法
Dec 07 Javascript
node.js中的fs.readlink方法使用说明
Dec 17 Javascript
AngularJS 应用身份认证的技巧总结
Nov 07 Javascript
jQuery页面弹出框实现文件上传
Feb 09 Javascript
微信小程序 图片宽高自适应详解
May 11 Javascript
Ionic项目中Native Camera的使用方法
Jun 07 Javascript
在vue中使用echars实现上浮与下钻效果
Nov 08 Javascript
Vue快速实现通用表单验证的方法
Feb 24 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+DBM的同学录程序(2)
2006/10/09 PHP
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
python制作填词游戏步骤详解
2019/05/05 Python
python 通过exifread读取照片信息
2020/12/24 Python
python实现经典排序算法的示例代码
2021/02/07 Python
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
表扬信格式
2014/01/12 职场文书
服务口号大全
2014/06/11 职场文书
初中学生操行评语
2014/12/26 职场文书
2016年学校“3.12”植树节活动总结
2016/03/16 职场文书
golang使用map实现去除重复数组
2022/04/14 Golang