05JS实现弹性相册

05 Flex Panel Gallery打卡指南

作者:@sandystar

简介:JavaScript30Wes Bos 推出的一个 30 天挑战。项目免费提供了 30 个视频教程、30 个挑战的起始文档和 30 个挑战解决方案源代码。目的是帮助人们用纯 JavaScript 来写东西,不借助框架和库,也不使用编译器和引用。现在你看到的是这系列指南的第 5 篇。完整代码已经放到github上了,欢迎访问!

实现效果

要实现一个这样的弹性相册。当鼠标点击相片时,相片变宽并且压缩其他图片,有文字浮入。再次点击图片时,图片会压缩,同时会挤走上下两端的文字。

image-20220210113814501

思路

关于这类的动态效果,我们可以想想,其实动态效果都是使用css来实现的,而JavaScript就是使其css动态的改变。所以我们可以这样做:

  1. 先定义好起始的css样式效果
  2. 接着定义改变后的css样式效果
  3. 然后使用JavaScript去动态添加或删除相应的css样式
  4. 这期间想要做到顺滑的过渡要定义好 transition 属性

步骤

1. 定义初始的css样式

我们可以看到最初的相册是整体均分空间,并且当点击某一图片可以做到挤压其余图片扩展自己空间,这里可以想到使用flex布局来实现。

并且设置好过渡的 transition效果:

.panels {
   
      min-height: 100vh;
      overflow: hidden;
      display: flex;
    }

.panel {
   
      background: #6B0F9C;
      box-shadow: inset 0 0 0 5px rgba(255,255,255,0.1);
      color: white;
      text-align: center;
      align-items: center;
      /* Safari transitionend event.propertyName === flex */
      /* Chrome + FF transitionend event.propertyName === flex-grow */
      transition:  /*添加动画效果*/
        font-size 0.7s cubic-bezier(0.61,-0.19, 0.7,-0.11),
        flex 0.7s cubic-bezier(</
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值