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 相关文章推荐
jquery 模拟雅虎首页的点击对话框效果
Apr 11 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
Jun 11 Javascript
七个很有意思的PHP函数
May 12 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
Jun 19 Javascript
JS 日期与时间戮相互转化的简单实例
Jun 22 Javascript
JS添加删除DIV的简单实例
Jul 08 Javascript
window.open打开窗口被拦截的快速解决方法
Aug 04 Javascript
浅谈js键盘事件全面控制
Dec 01 Javascript
Web前端框架bootstrap实战【第一次接触使用】
Dec 28 Javascript
使用clipboard.js实现复制功能的示例代码
Oct 16 Javascript
从零开始实现Vue简单的Toast插件
Dec 03 Javascript
vue的keep-alive中使用EventBus的方法
Apr 23 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
支持php4、php5的mysql数据库操作类
2008/01/10 PHP
解析csv数据导入mysql的方法
2013/07/01 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
取得传值的函数
2006/10/27 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
Python中zfill()方法的使用教程
2015/05/20 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
Python常见工厂函数用法示例
2018/03/21 Python
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
python快排算法详解
2019/03/04 Python
python中_del_还原数据的方法
2020/12/09 Python
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
实习生自荐信范文分享
2013/11/27 职场文书
平民服装店创业计划书
2014/01/17 职场文书
出国考察邀请函
2014/01/21 职场文书
幼儿园秋游感想
2014/03/12 职场文书
病媒生物防治方案
2014/05/13 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
个人先进事迹材料
2014/12/29 职场文书
初中教师个人工作总结
2015/02/10 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL