您现在的位置是:网站首页> 编程资料编程资料
纯CSS实现页面中的列表收拉效果让CSS flex布局最后一行列表左对齐的N种方法(小结)CSS字体、文本、列表属性详细介绍CSS 有序或者无序列表的前面的标记 list-style-type 属性的实现css中有序无序列表项list样式设置方法CSS如何设置列表样式属性(看这篇文章就够用了)css列表滑动防止被底部遮住和适配屏幕长一点的机型处理
2021-09-03
866人已围观
简介 这篇文章主要介绍了纯CSS实现页面中的列表收拉效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
你可能经常见到下面这样的效果:

没错,就是页面上常用的“展开收起”交互形式,通常的做法就是控制display属性值在none和其他值之间切换,但是虽说功能可以实现,效果却非常生硬,所以就会有这样的一个需求 —— 希望元素在展开收起时能够有明显的高度滑动效果。
以前的实现可以用jQuery的slideUp()/slideDown()方法,但是,在移动端,因为CSS3动画支持良好,所以移动端的JavaScript框架都是没有提供动画模块的。这里自然而然就想到了CSS3技术。
笔者的第一反应就是用height+overflow:hidden;实现,既没有性能问题,也不必担心显示问题。但是转眼间就想到:很多时候我们需要展现的内容都是动态的,也就是说内容高度是不固定的(当然,你也可以用overflow-y:auto; 暂且不论)。而要达到这种效果,height就要使用“非固定值auto”!
但是auto并不是数值,而是一个关键字,所以在一个隐性规定 —— 数值和关键字之间无法计算 下,如果我们使用height在0px和auto之间切换,是无法形成过渡或动画效果的。
同样的还有css中的
clip-path属性:很多初学者习惯于在none和具体值之间形成动画效果,这是不可能的。
因此,想要达到文首的效果,笔者推荐max-height属性:
内容1
内容2
内容3
内容4内容1
内容2
内容3
内容4内容1
内容2
内容3
内容4
.accordion { width: 300px; } .accordion article { cursor: pointer; } label { display: block; padding: 0 20px; height: 40px; background-color: #f66; cursor: pointer; line-height: 40px; font-size: 16px; color: #fff; } p { overflow: hidden; padding: 0 20px; margin: 0; border: 1px solid #f66; border-top: none; border-bottom-width: 0; max-height: 0; line-height: 30px; transition: all .5s ease; } input:nth-child(1):checked ~ article:nth-of-type(1) p, input:nth-child(2):checked ~ article:nth-of-type(2) p, input:nth-child(3):checked ~ article:nth-of-type(3) p { border-bottom-width: 1px; max-height: 130px; }在css中,min-height/max-height出现的场景一定是自适应布局或者流体布局中。而对于展开后的max-height值,我们只需要保证设定值比内容高度大即可 —— 因为在max-height > height 时,元素高度就会以height属性的高度计算。
但是建议不要把max-height值设置的太大,毕竟transition或animation的时间是“完成动画的时间”而不是“内容展示出来的时间”
收拉效果还有一种展现形式:

其特点是鼠标悬浮到组件的某个部分,该部分就会扩张开来并挤压旁边的部分,当鼠标离开时就恢复原状。若鼠标快速在其上面略过,就会产生手风琴弹琴的效果。
使用JS实现手风琴效果,必须监听mouseenter和mouseleave两个鼠标事件,而CSS中的:hover可代替两者的效果。所以纯CSS实现手风琴效果的关键就是:hover ,其核心代码如下:
li { } li:hover { }而对布局来说,这种以相同/不同宽度排列在一排的元素想要实现在一行内的展开收缩效果,比较好的方式就是 flex!
.accordion { display: flex; width: 600px; height: 200px; } li { flex: 1; cursor: pointer; transition: all 300ms; } li:nth-child(1) { background-color: #f66; } li:nth-child(2) { background-color: #66f; } li:nth-child(3) { background-color: #f90; } li:nth-child(4) { background-color: #09f; } li:nth-child(5) { background-color: #9c3; } li:nth-child(6) { background-color: #3c9; } li:hover { flex: 2; background-color: #ccc; }这里有一点值得注意:像有些“特殊”情况比如 animation 的延迟,可以以 内联style 的方式在HTML中插入 CSS自定义变量 ,可以简洁代码:从一次项目重构说起CSS3自定义变量在项目中是如何使用的?
到此这篇关于纯CSS实现页面中的列表收拉效果的文章就介绍到这了,更多相关css页面列表收拉内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!
相关内容
- 从一次项目重构说起CSS3自定义变量在项目的使用方法css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果
- 纯 CSS 实现拖拽效果的代码纯CSS实现左右拖拽改变布局大小
- CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码css3 filter属性的使用简介CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码css中filter属性和backdrop-filter的应用与区别详解详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用使用css的filter写鼠标滑过效果的实现示例CSS filter 有什么神奇用途
- CSS弹性布局FLEX,媒体查询及移动端点击事件的实现CSS3中的弹性布局em运用入门详解 1em等于多少像素css3弹性盒子flex实现三栏布局的实现10分钟理解CSS3 FlexBox弹性布局CSS3 Flex 弹性布局实例代码详解css flex 弹性布局详解
- 详解CSS多种三列自适应布局实现css display table 自适应高度、宽度问题的解决CSS实现背景图片屏幕自适应的实现css3实现自适应浏览器图片布局特效CSS实现表格首行首列固定和自适应窗口的实例代码css实现六种自适应两栏布局方式CSS将img图片填满父容器div并自适应容器大小css实现两栏布局,左侧固定宽,右侧自适应的多种方法
- CSS让子元素div的高度填满父容器的剩余空间的方法CSS实现子元素div水平垂直居中的示例
- CSS复合选择器的具体使用方法CSS复合选择器使用介绍
- 纯css和flutter分别实现呼吸灯效果(实例代码)通过css3动画和opacity透明度实现呼吸灯效果
- 简单的css文字动画效果Vue+CSS3实现文字飞入飞出动画特效代码CSS3 文字动画效果CSS3文字图标组合悬停UI动画特效源码基于css3+svg实现的文字轮廓边框线条动画特效源码css3悬停文字交叉飘动切换动画特效CSS3实现的立体文字重叠动画特效源码js+css3实现彩色文字标签云3d立体旋转动画特效CSS3+SVG实现炫酷的霓虹灯发光文字动画特效源码jQuery基于CSS3制作的文字碎片化loading加载动画特效源码css3+animation属性制作拆分loading文字加载动画特效
- CSS3 实现的定价表基于js+css3文章列表喜欢点赞按钮特效源码CSS3实现的登录框表单浮动占位符和提交按钮发光特效源码CSS3 SVG表情图标评论交互特效源码可切换的精美CSS3登录注册表单特效鼠标悬停图文列表css3动画特效代码CSS3实现的常见问题列表布局特效源码CSS3实现发光按钮登录表单特效代码Html5+CSS3+EL表达式问题小结CSS3注册表单文本框占位符特效源码jQuery带宽测速仪表盘特效实例
