美文网首页
09.CSS3实现下拉选择框

09.CSS3实现下拉选择框

作者: Ching_Lee | 来源:发表于2018-04-03 19:57 被阅读0次

支持动画效果。

 <div class="box1">
        <div class="select open">
             <p id="title">请选择</p>
             <ul id="box1ul"  >
                 <li class="active">所有选项</li>
                 <li>javascript</li>
                 <li>html</li>
                 <li>css</li>
             </ul>
         </div>
    </div>

和外部容器相关的盒子样式省略了,只看具体里面的实现

.boxes .box1 .select{
    margin-top: 10px;
    width: 80%;

}
.boxes .box1 .select p{
    width:100%;
    text-align: center;
    background-color:blanchedalmond;
    padding:10px 0 ;
}
.boxes .box1 .select ul{
    width: 100%;
    max-height: 0px;
    overflow-y: hidden;
}

.boxes .box1 .select li{

    background-color: blanchedalmond;
    padding: 10px;
    height: 1.5em;
    list-style: none;
    border: 1px white solid;
    cursor: pointer;
}



.boxes .box1 .select li:hover{
    background-color: lightblue;
}


/*给p添加一个伪元素,作为小箭头,小箭头其实是左边框和右边框旋转45度*/
.boxes .box1 .select p:after{
    display: block;
    content: '';
    width: 10px;
    height: 10px;
    border-left:2px skyblue solid;
    border-bottom:2px skyblue solid;
    transform: rotate(135deg);
    float: right;
    margin-top: 5px;
    margin-right: 10px;
}

.boxes .box1 .select .active{
    background-color: lightblue!important;
}
<!--打开效果 -->
.boxes .box1 .select.open ul{
    max-height: 400px;
    transition: all 0.3s ease-in;
}
.boxes .box1 .select.open p:after{
    transform: rotate(-45deg);
    transition: all 0.3s ease-in;
}

<!--关闭效果-->
.boxes .box1 .select.close ul{
    max-height: 0px;
    transition: all 0.3s ease-in;
}
.boxes .box1 .select.close p:after{
    transform: rotate(135deg);
    transition: all 0.3s ease-in;
}

js主要的作用就是添加class和删除class

window.onload=function () {
  let ul=document.getElementById("box1ul");

  /*为选中的li添加背景色*/
  ul.addEventListener("click",function (e) {
      let li=ul.children;
      /*首先移除所有的li中的active类*/
      for(let i=0;i<li.length;i++){
          if(li[i].classList){
              li[i].classList.remove("active");
          }
      }
      /*之后为点击的li添加active类*/
      e.target.classList.add("active");
      let title=document.getElementById("title");
      title.innerText=e.target.innerText;
  },false);

    /*为点击头部(p)添加打开关闭*/
    let p=document.getElementById("title");
    p.addEventListener("click",function () {
        let select=document.getElementsByClassName("select")[0];
        /*如果select中包括open类,那么就添加关闭类,删除open类,关闭类中实现了ul的max-height设置为0,
        以及三角的旋转角度改变*/
        if(select.classList.contains("open")){
            select.classList.add("close");
            select.classList.remove("open");
        }

        else{
            select.classList.add("open");
            select.classList.remove("close");
        }

    })
};

相关文章

  • 09.CSS3实现下拉选择框

    支持动画效果。 和外部容器相关的盒子样式省略了,只看具体里面的实现 js主要的作用就是添加class和删除class

  • andriod 控件封装 可编辑下拉框

    一:可编辑下拉框android的默认Spinner只能下拉选择内容,而不能选择 二:可编辑下拉框实现方式:1. 将...

  • easyui常用方法

    1、下拉框“商品列表”实现 2、下拉框“客户列表”实现 3、下拉框“系统用户”实现 4、下拉框“物流公司”实现

  • 实现下拉框触发事件

    今天我学习了如何实现下拉框触发事件,发现只要调用change方法就行了,如下是实现选择下拉框填充一个文本框的实现方...

  • python3+selenium自动化测试-下拉选择框13

    (13)下拉选择框selenium的下拉选择框。我们通常会遇到两种下拉框,一种使用的是html的标签select,...

  • Robot Framework-下拉框控制

    1. option 下拉框 下拉框采用option实现,例如: 针对这种下拉框,可以直接选用Robot Frame...

  • combotree(树形下拉框)

    含义 树形下拉框结合选择控件和下拉树控件。它与combobox(下拉列表框)类似,但是将下拉列表框的列表替换成了树...

  • Html表单使用实例

    大纲 1、单选框多选框实现的商品选择2、添加下拉框和删除下拉框3、观察textarea中事件处理器的运行顺序推荐 ...

  • Flutter-DropdownButtonFormField实

    在日常的开发当中,我们在做选择框的时候,会想做下拉选择框。Flutter给我们提供了Material类型的下拉选择...

  • 实现输入框【输入填写+动态提示信息+下拉选择】

    实现输入框能填写能下拉选择,填写时动态提示 using System; using System.Collecti...

网友评论

      本文标题:09.CSS3实现下拉选择框

      本文链接:https://www.haomeiwen.com/subject/xyichftx.html