码迷,mamicode.com
首页 > Web开发 > 详细

CSS3不一样的下拉选择框

时间:2018-01-30 23:00:12      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:lis   添加   cti   frame   实现   htm   http   form   12px   

本例中包含两个下拉选择框的动画示例,本例中并未使用select标签。本例中第一个案例也可用于标题、导航栏等位置。

案例一:

 html布局

<div class="content">
  <div class="select">
    <p att="select p">所有选项</p>
    <ul att="select ul">
      <li data-value="所有选项" class="selected">所有选项</li>
      <li data-value="html">html</li>
      <li data-value="css">css</li>
      <li data-value="javascript">javascript</li>
      <li data-value="jQuery">jQuery</li>
    </ul>
  </div>
</div>

 

整体显示样式

<style type="text/css">
  body{
    padding: 0;     margin: 0;     background-color: #0099cc;     color: #333333;   }   .content{     padding-top: 5%;   }   .content .select{     width: 300px;     height: 40px;     margin: 0 auto;     font-family: "Microsoft Yahei";     font-size: 16px;     background-color: #ffffff;     position: relative;   } </style>

 

下拉列表样式及动画

[att~=select]{
    padding: 0;
    margin: 0;
}
.content .select:after{
    content: "";
    display: block;
    width: 10px;
    height: 10px;
    border-left: 1px #cccccc solid;
    border-bottom: 1px #cccccc solid;
    position: absolute;
    top: 11px;
    right: 12px;
    -webkit-transform: rotate(-45deg);
    -moz-transform: rotate(-45deg);
    -ms-transform: rotate(-45deg);
    -o-transform: rotate(-45deg);
    transform: rotate(-45deg);
    -webkit-transition: -webkit-transform .3s ease-in, top .3s ease-in;
    -moz-transition: -moz-transform .3s ease-in, top .3s ease-in;
    -ms-transition:  -ms-transform .3s ease-in, top .3s ease-in;
    -o-transition: -o-transform .3s ease-in, top .3s ease-in;
    transition: transform .3s ease-in, top .3s ease-in;
}
.content .select p{
    padding: 0 15px;
    line-height: 40px;
    /*设置光标样式:手型*/
    cursor: pointer;
}
.content .select ul{
    width: 100%;
    /*这样设置相当于隐藏了ul,便实现了下拉样式*/
    max-height: 0;
    list-style-type: none;
    background-color: #ffffff;
    overflow-y: auto;
    position: absolute;
    top: 40px;
    left: 0;
    -webkit-transition: max-height .3s ease-in;
    -moz-transition: max-height .3s ease-in;
    -ms-transition: max-height .3s ease-in;
    -o-transition: max-height .3s ease-in;
    transition: max-height .3s ease-in;
}
.content .select ul li{
    padding: 0 15px;
    line-height: 40px;
    cursor: pointer;
}
.content .select ul li:hover{
    background-color: #e0e0e0;
}
.content .select ul li.selected{
    background-color: #3399ff;
    color: #ffffff;
}
@-webkit-keyframes slide-down {
    0%{
        -webkit-transform: scale(1, 0);
        -moz-transform: scale(1, 0);
        -ms-transform: scale(1, 0);
        -o-transform: scale(1, 0);
        transform: scale(1, 0);
    }
    25%{
        -webkit-transform: scale(1, 1.2);
        -moz-transform: scale(1, 1.2);
        -ms-transform: scale(1, 1.2);
        -o-transform: scale(1, 1.2);
        transform: scale(1, 1.2);
    }
    50%{
        -webkit-transform: scale(1, 0.85);
        -moz-transform: scale(1, 0.85);
        -ms-transform: scale(1, 0.85);
        -o-transform: scale(1, 0.85);
        transform: scale(1, 0.85);
    }
    75%{
        -webkit-transform: scale(1, 1.05);
        -moz-transform: scale(1, 1.05);
        -ms-transform: scale(1, 1.05);
        -o-transform: scale(1, 1.05);
        transform: scale(1, 1.05);
    }
    100%{
        -webkit-transform: scale(1, 1);
        -moz-transform: scale(1, 1);
        -ms-transform: scale(1, 1);
        -o-transform: scale(1, 1);
        transform: scale(1, 1);
    }
}
@-moz-keyframes slide-down {
    0%{
        -webkit-transform: scale(1, 0);
        -moz-transform: scale(1, 0);
        -ms-transform: scale(1, 0);
        -o-transform: scale(1, 0);
        transform: scale(1, 0);
    }
    25%{
        -webkit-transform: scale(1, 1.2);
        -moz-transform: scale(1, 1.2);
        -ms-transform: scale(1, 1.2);
        -o-transform: scale(1, 1.2);
        transform: scale(1, 1.2);
    }
    50%{
        -webkit-transform: scale(1, 0.85);
        -moz-transform: scale(1, 0.85);
        -ms-transform: scale(1, 0.85);
        -o-transform: scale(1, 0.85);
        transform: scale(1, 0.85);
    }
    75%{
        -webkit-transform: scale(1, 1.05);
        -moz-transform: scale(1, 1.05);
        -ms-transform: scale(1, 1.05);
        -o-transform: scale(1, 1.05);
        transform: scale(1, 1.05);
    }
    100%{
        -webkit-transform: scale(1, 1);
        -moz-transform: scale(1, 1);
        -ms-transform: scale(1, 1);
        -o-transform: scale(1, 1);
        transform: scale(1, 1);
    }
}
@-o-keyframes slide-down {
    0%{
        -webkit-transform: scale(1, 0);
        -moz-transform: scale(1, 0);
        -ms-transform: scale(1, 0);
        -o-transform: scale(1, 0);
        transform: scale(1, 0);
    }
    25%{
        -webkit-transform: scale(1, 1.2);
        -moz-transform: scale(1, 1.2);
        -ms-transform: scale(1, 1.2);
        -o-transform: scale(1, 1.2);
        transform: scale(1, 1.2);
    }
    50%{
        -webkit-transform: scale(1, 0.85);
        -moz-transform: scale(1, 0.85);
        -ms-transform: scale(1, 0.85);
        -o-transform: scale(1, 0.85);
        transform: scale(1, 0.85);
    }
    75%{
        -webkit-transform: scale(1, 1.05);
        -moz-transform: scale(1, 1.05);
        -ms-transform: scale(1, 1.05);
        -o-transform: scale(1, 1.05);
        transform: scale(1, 1.05);
    }
    100%{
        -webkit-transform: scale(1, 1);
        -moz-transform: scale(1, 1);
        -ms-transform: scale(1, 1);
        -o-transform: scale(1, 1);
        transform: scale(1, 1);
    }
}
@keyframes slide-down {
    0%{
        -webkit-transform: scale(1, 0);
        -moz-transform: scale(1, 0);
        -ms-transform: scale(1, 0);
        -o-transform: scale(1, 0);
        transform: scale(1, 0);
    }
    25%{
        -webkit-transform: scale(1, 1.2);
        -moz-transform: scale(1, 1.2);
        -ms-transform: scale(1, 1.2);
        -o-transform: scale(1, 1.2);
        transform: scale(1, 1.2);
    }
    50%{
        -webkit-transform: scale(1, 0.85);
        -moz-transform: scale(1, 0.85);
        -ms-transform: scale(1, 0.85);
        -o-transform: scale(1, 0.85);
        transform: scale(1, 0.85);
    }
    75%{
        -webkit-transform: scale(1, 1.05);
        -moz-transform: scale(1, 1.05);
        -ms-transform: scale(1, 1.05);
        -o-transform: scale(1, 1.05);
        transform: scale(1, 1.05);
    }
    100%{
        -webkit-transform: scale(1, 1);
        -moz-transform: scale(1, 1);
        -ms-transform: scale(1, 1);
        -o-transform: scale(1, 1);
        transform: scale(1, 1);
    }
}
.content .select.open ul{
    max-height: 250px;
    transform-origin: 50% 0;
    -webkit-animation: slide-down 0.5s ease-in;
    -moz-animation: slide-down 0.5s ease-in;
    -o-animation: slide-down 0.5s ease-in;
    animation: slide-down 0.5s ease-in;
    -webkit-transition: max-height .2s ease-in;
    -moz-transition: max-height .2s ease-in;
    -ms-transition: max-height .2s ease-in;
    -o-transition: max-height .2s ease-in;
    transition: max-height .2s ease-in;
}
.content .select.open:after{
    -webkit-transform: rotate(-225deg);
    -moz-transform: rotate(-225deg);
    -ms-transform: rotate(-225deg);
    -o-transform: rotate(-225deg);
    transform: rotate(-225deg);
    top: 18px;
    -webkit-transition: all .3s ease-in;
    -moz-transition: all .3s ease-in;
    -ms-transition: all .3s ease-in;
    -o-transition: all .3s ease-in;
    transition: all .3s ease-in;
}

 

使用JavaScript实现点击事件

实现点击事件还需要引用jQuery插件

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
  $(function(){
    $(‘.select > p‘).on(‘click‘, function (e) {
      // 检查class属性是否有open值,有则删除,没有则添加       $(
‘.select‘).toggleClass(‘open‘);
      // 处理冒泡事件       e.stopPropagation();     });     $(
‘.select ul li‘).on(‘click‘, function (e) {       var _this = $(this);       $(‘.select > p‘).text(_this.attr(‘data-value‘));       _this.addClass(‘selected‘).siblings().removeClass(‘selected‘);       $(‘.select‘).removeClass(‘open‘);       e.stopPropagation();     });     $(document).on(‘click‘, function () {       $(‘.select‘).removeClass(‘open‘);     });   }); </script>

 

CSS3不一样的下拉选择框

标签:lis   添加   cti   frame   实现   htm   http   form   12px   

原文地址:https://www.cnblogs.com/xiaobaizhiqian/p/8387251.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!