分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

CSS3不一样的下拉选择框

发布时间:2023-09-06 01:40责任编辑:蔡小小关键词:CSS

本例中包含两个下拉选择框的动画示例,本例中并未使用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不一样的下拉选择框

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved