HTML代码:

<div
className={CX('font-size-selector-sub-list', {
show: shouldSubListShow === true,
hidden: shouldSubListShow === false,
})}
>
{
subListItems.map((item, index) => {
return (
<div
role="button"
tabIndex={0}
key={item}
className="font-size-selector-sub-items"
onClick={() => { handleClickSubItem(index) }}
>
<div className="font-size-selector-span">{item}</div>
</div>
)
})
}
</div>

CSS代码:

@keyframes slide-down{
0%{transform:scale(1,0);}
100%{transform:scale(1,1);}
} @-webkit-keyframes slide-down{
0%{-webkit-transform:scale(1,0);}
100%{-webkit-transform:scale(1,1);}
} .font-size-selector-sub-list {
position: absolute;
top: 21px;
left:;
width: 100%;
box-sizing: border-box;
z-index:;
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.5);
background-color: #ffffff;
border-radius: 2px;
cursor: pointer; .font-size-selector-sub-items {
padding: 0 6px;
height: 19px;
box-sizing: border-box;
background-color: #ffffff;
background-repeat: no-repeat;
display: flex;
justify-content: space-between;
align-items: center; &:hover {
background-color: #d3edfb;
}
}
} .show {
max-height: 114px;
transition: max-height .3s ease-in;
transform-origin: 50% 0;
animation: slide-down 0.3s ease-in;
-webkit-animation: slide-down 0.3s ease-in;
} .hidden {
max-height: 0px;
overflow: auto;
transition: max-height .3s ease-out;
}

注意点:

1,自上而下展开效果:transition与animation结合使用。如上:.show

2,自下而上收起效果:transition单独使用。如上:.hidden

首先想到的是在收起和展开两个终点位置改变 max-height,然后均加上transition,但是这样做只能实现下拉框父元素收起和展开,内部子元素高度变不了,所以想到加上overflow:auto/hidden,但是这样又只能对收起起作用,展开无作用,原因是,展开时子元素内容高度小于等于父元素展开时设置的max-height,所以针对展开,需要使用transform:scale();属性,这样可以在展开时,让子元素内容慢慢缩放至父元素的高度。需要注意的是,缩放时要设置 transform-origin: 50% 0;分别表示x,y开始缩放位置。

另外可以参考:https://blog.csdn.net/web_hwg/article/details/68925003

css之实现下拉框自上而下展开动画效果&&自下而上收起动画效果的更多相关文章

  1. 用css写出下拉框(代码转自wq群)

    做网易云音乐首页时遇到的问题,鼠标指在右上角头像时出现下拉框. <style>/* css*/ #body{ float: left; } #xialakuang{ background- ...

  2. 关于css中hover下拉框的一个bug

    写hover下拉框的时候会遇到一个奇怪的bug,就是下拉框下来的时候会被所在位置的div遮挡,哪怕下拉框使用的absolute,也会被遮挡. 如图: 这个语言选择的下拉框会被下面的div挡住(截图是已 ...

  3. 【WPF学习笔记】之如何设置下拉框读取SqlServer数据库的值:动画系列之(一)

    先前条件:设置好数据库,需要三个文件CommandInfo.cs.DbHelperSQL.cs.myHelper.cs,需要修改命名空间,参照之前随笔http://www.cnblogs.com/Ow ...

  4. 纯css实现select下拉框并排显示

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. div+css模拟select下拉框

    <!DOCTYPE html><html ><head lang="zh"> <meta http-equiv="Content ...

  6. <select>设置multiple="multiple"属性后 下拉框全部展开了 不再是折叠的怎么回事

    1 <select multiple="multiple" size="5"> <option>1</option> < ...

  7. css样式美化 下拉框 select 样式

    <span class="setleft wid80"><span class="fyhbx">*</span>入库类型 : ...

  8. 使用checkbox实现纯CSS下拉框

    在这个例子中,我们会看到一个纯CSS制作的下拉框.主要是要用到了HTML元素的checkbox 和CSS3选择器,并没有用到JavaScript.例子如下: Click to Expand Link ...

  9. easyui combobox下拉框文字超出宽度有横向滚轮

    //下拉框显示横向滚轮 $(".combo").mouseenter(function(){ $(this).prev().combobox("showPanel&quo ...

随机推荐

  1. Lucene4.2源码解析之fdt和fdx文件的读写(续)——fdx文件存储一个个的Block,每个Block管理着一批Chunk,通过docID读取到document需要完成Segment、Block、Chunk、document四级查询,引入了LZ4算法对fdt的chunk docs进行了实时压缩/解压

    2       索引读取阶段 当希望通过一个DocId得到Doc的全部内容,那么就需要对fdx/fdt文件进行读操作了.具体的代码在CompressingStoredFieldsReader类里面.与 ...

  2. 使用 Fiddler 抓取iPhone 的 HTTPS 请求

    Fiddler 是著名的 HTTP(S) 抓包工具,功能十分强悍.Fiddler 采用代理的方式进行抓包,所以使用范围就非常广泛,不仅可以在 PC 端使用,更可以在移动设备上使用. 要在 iPhone ...

  3. maven手动将jar包导入到本地仓库(支持多个仓库选择)

    正常我们在用maven搭建项目时,我们只需要将项目所需要的依赖配置到maven的配置文件pom.xml中即可,maven就可以去网上将jar包下载到配置的本地仓库中去.所以一般情况下我们是不需要手动安 ...

  4. leetcode 108. Convert Sorted Array to Binary Search Tree 、109. Convert Sorted List to Binary Search Tree

    108. Convert Sorted Array to Binary Search Tree 这个题使用二分查找,主要要注意边界条件. 如果left > right,就返回NULL.每次更新的 ...

  5. PAT 甲级 1050 String Subtraction (20 分) (简单送分,getline(cin,s)的使用)

    1050 String Subtraction (20 分)   Given two strings S​1​​ and S​2​​, S=S​1​​−S​2​​ is defined to be t ...

  6. Oracle中查询当前时间、时间格式化方法

    Oracle中如何获取系统当前时间 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;  ORACLE里获取一个时间的年.季.月.周. ...

  7. cut截取数据

    参考文档 https://blog.csdn.net/caoshunxin01/article/details/79355566 [root@kube-node3 ~]# cat tab_space. ...

  8. html页面设置自动刷新

    在中添加如下: <meta HTTP-EQUIV="REFRESH" CONTENT="1"> 其中CONTENT对应刷新的间隔时间,这里为1秒. ...

  9. win7下Excel2003/2010 同时打开多个独立窗口

    最近新买了本本,装了许多软件,由于许多苦逼的原因系统被我搞的乱乱的,不得已重装了几次,话说之前我用的都是台式机,用得蛮顺的,但是在重装系统之后发现自己装的Office 2003 在打开Excel 文档 ...

  10. python2.7 urllib和urllib2

    urllib模块url编码和解码: 1.urllib.quote,urllib.quote_plus ,urllib.unquote ,urllib.unquote_plus urllib.quote ...