CSS3+Jquery实现带动画效果的下拉选择框

CSS3+JQuery实现带动画效果的下拉选择框。

元素结构为:

 1 <div class="box">
 2             <p>this is the first li</p>
 3             <div id="blank"></div>
 4             <ul>
 5                 <li  class="selected">this is the first li</li>
 6                 <li >Second li</li>
 7                 <li >Third li</li>
 8                 <li >Forth li</li>
 9                 <li >Fifth li</li>
10             </ul>
11  </div>

box是显示框,显示的内容是 P 标签。blank 是显示框右部的箭头,箭头效果是添加 border 属性实现的。

ul 是下拉框,初始状态下高度是0,当鼠标移动到 box 上面的时候,改变 ul 的高度。点击 li 标签之后设置 ul 的高度为0,并且设置 P 标签的内容。

当 li 标签里面的内容显示的时候,设置不同的背景颜色,所以要用 class 来区分被显示的是哪个。

给 ul 添加 transition 和 animation 属性来实现动画。

Jquery的siblings()方法能获得兄弟节点。

要注意的几点:

1: 在 li 标签添加点击事件的时候设置了 ul 的高度为0。如果只在CSS里面设置 ul 在不同状态下的不同高度而不在js里面设置高度的转换,那么在第一次点击 li 标签 ul 高度变为 0 之后, ul 的高度将会一直为 0 ,即使鼠标移动到显示框上面下拉框也不会再出现(尽管设置了 box:hover ul { height:200px }),这是因为js设置了元素的属性之后,这个样式将会嵌入到HTML代码,优先级比CSS高。所以需要在 js 中添加 box 的mouseover事件和mouseout事件,分别设置 ul 的高度为 200px 和 0 。

2:修改

.box:hover ul{    transform-origin: 50% 0;    animation: solid_down 0.5s ease-in;    transition: height 0.2s;}里面的0.2s为其他的数值能够得到不同的效果。

HTML代码:

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <link href="DropDown.css" rel="stylesheet" type="text/css">
 7     <script src="../../Jquery/jquery-2.2.1.min.js"></script>
 8     <script src="DropDown.js"></script>
 9 </head>
10 <body>
11     <div class="content">
12         <div class="box">
13             <p>this is the first li</p>
14             <div id="blank"></div>
15             <ul>
16                 <li  class="selected">this is the first li</li>
17                 <li >Second li</li>
18                 <li >Third li</li>
19                 <li >Forth li</li>
20                 <li >Fifth li</li>
21             </ul>
22         </div>
23         <div class="content"></div>
24     </div>
25 </body>
26 </html>

CSS代码:

 1 *{
 2     margin: 0px;
 3     padding: 0px;
 4 }
 5 body{
 6     background-color: #adecc0;
 7 }
 8 .content{
 9     margin: 200px auto;
10 }
11 .box{
12     margin: auto auto;
13     background-color: rgb(255, 255, 255);
14     width: 250px;
15     height: 40px;
16     position: relative;
17     cursor: pointer;
18 }
19 #blank{
20     width: 10px;
21     height: 10px;
22     border-right: 1px solid #c7c7c7;
23     border-bottom: 1px solid #c7c7c7;
24     position: absolute;
25     top: 11px;
26     right: 12px;
27     transform: rotate(45deg);
28     transition: transform 0.3s ease-out;
29 }
30 .box p{
31     line-height: 40px;
32     padding-left: 20px;
33 }
34 .box ul{
35     list-style: none;
36     background-color: #ffffff;
37     overflow: hidden;
38     height: 0px;
39     transition: height 0.5s;
40     width: 100%;
41 }
42 .box ul li{
43     line-height: 40px;
44     padding-left: 20px;
45 }
46 .box ul li:hover{
47     background-color: #a6e1ec;
48 }
49 .box:hover #blank{
50     transform: rotate(-135deg);
51 }
52 .box:hover ul{
53     transform-origin: 50% 0;
54     animation: solid_down 0.5s ease-in;
55     transition: height 0.2s;
56 }
57 @-moz-keyframes solid_down {
58      0%{transform: scale(1,0)}
59      25%{transform: scale(1,1.25)}
60      50%{transform: scale(1,0.85)}
61      75%{transform: scale(1,1.05)}
62      100%{transform: scale(1,1)}
63  }
64
65 @-webkit-keyframes solid_down {
66     0%{transform: scale(1,0)}
67     25%{transform: scale(1,1.25)}
68     50%{transform: scale(1,0.85)}
69     75%{transform: scale(1,1.05)}
70     100%{transform: scale(1,1)}
71 }
72 .content .box .selected{
73     background-color: #cbfac9;
74 }

JS代码:

 1 $(document).ready(function(){
 2     $("li").on("click",function(){
 3         var str1=this.innerHTML;
 4         $("p").html(str1);
 5         $("ul").css("height","0px");
 6         $(this).addClass("selected").siblings().removeClass("selected");
 7     });
 8     $(".box").on("mouseover",function(){
 9         $("ul").css("height","200px");
10     });
11     $(".box").on("mouseout",function(){
12         $("ul").css("height","0px");
13     });
14 });

效果:

http://1.huizit1.applinzi.com/CSS/DropDown/DropDown.html

时间: 2024-12-19 14:47:14

CSS3+Jquery实现带动画效果的下拉选择框的相关文章

CSS3+Jquery制作的动画效果电子表

<!DOCTYPE HTML> <html> <head> <title>CSS3+Jquery制作的动画效果电子表丨石家庄网络公司-河北品牌策划公司</title> <style type="text/css"> body{ background:#202020; font:bold 12px Arial, Helvetica, sans-serif; margin:0; padding:0; min-width

基于jQuery美化联动下拉选择框

今天给大家介绍一款基于jQuery美化联动下拉选择框.这款下下拉选择框js里自带了全国所有城市的数数库.下拉选择框适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="container"> <div class="inner"> <section id="main_content"

jquery.chosen.js下拉选择框美化插件项目实例

由于之前使用的bootstrap-select插件是建立在bootstrap基础上的,实际使用到项目中的时候,与我们使用的ace-admin(基于bootstrap)存在样式冲突,导致下拉框的样式发生变化.为了界面的美观,不得已查资料寻找另外的插件. 使用jquery.chosen.js下拉选择框美化插件同样也能达到类似效果 完成效果如下 实现步骤如下 1.导入相关文件 <link rel="stylesheet" href="${ctxStatic}/css/chos

CSS3不一样的下拉选择框

本例中包含两个下拉选择框的动画示例,本例中并未使用select标签.本例中第一个案例也可用于标题.导航栏等位置. 案例一: html布局 <div class="content"> <div class="select"> <p att="select p">所有选项</p> <ul att="select ul"> <li data-value="所

jQuery插件——下拉选择框

其实,之前也写过jQuery插件,今天写的是一个模拟select选择的下拉插件. 既然是jQuery插件,那么必然是依赖jQuery的了. 老规矩,直接上代码吧! ;(function () { $.fn.extend({ dropdown:function (options) { return this.each(function (i, val) { $(val).css("position", "relative"); // 设置默认参数 var opts =

[jQueryUI] - Chosen:select下拉选择框美化插件及问题【转】

hosen 是一个支持jquery的select下拉框美化插件,它能让丑陋的.很长的select选择框变的更好看.更方便.不仅如此,它更扩展了select,增加了自动筛选的功能.它可对列表进行分组,同时也可禁用某些选择项. 先来看下插件的效果:   跟这个比起来,原来的select样式是不是弱爆了! 马上来武装我们的select吧: 1.先把js和css文件引用到网页里面去: ? 1 2 3 <link href="js/jqueryUI/chosen/chosen.css" t

bootstrap-表单控件——下拉选择框select元素

1.运行效果如图所示 2.实现代码如下 <!DOCTYPE html> <html> <head>     <meta charset="utf-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <title>表单控件--下拉选择框select元</title>     <!-

下拉选择框select的纯CSS替代方案

这篇教程中,我将给大家展示表单元素下拉选择框select的CSS替代方案.该方法采用css来实现,看上去非常简单.我们用radio标签列表来模拟下拉列表,选择一个radio可以很好的模拟出select中选择一个元素的效果. 一:HTML 下面是我们在form表单里面用到的html代码: .代码 <fieldset class="radio-container"> <div class="radio-options"> <div clas

【石墨】极客编程小挑战#26:实现日期级联下拉选择框

详细内容请参见原文:http://www.gbtags.com/gb/share/5823.htm 本期挑战: 初始的html代码如下: <select name="year" id="year"> <option value="0">--</option> <option value="1999">1999</option> <option value=&qu