效果预览

按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。

https://codepen.io/comehope/pen/GYXvez

可交互视频

此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

请用 chrome, safari, edge 打开观看。

https://scrimba.com/p/pEgDAM/cNzVnAL

源代码下载

每日前端实战系列的全部源代码请从 github 下载:

https://github.com/comehope/front-end-daily-challenges

代码解读

定义 dom,一个名为 .main 的容器中包含 1 个链接:

<div class="main"><a href="#" class="open-popup">open popup</a>
</div>

设置页面的基本属性:无边距、全高、忽略溢出:

body {margin: 0;height: 100vh;overflow: hidden;
}

设置主界面的背景和其中按钮的布局方式:

.main {height: inherit;background: linear-gradient(dodgerblue, darkblue);display: flex;align-items: center;justify-content: center;
}

设置按钮样式:

.open-popup {box-sizing: border-box;color: white;font-size: 16px;font-family: sans-serif;width: 10em;height: 4em;border: 1px solid;text-align: center;line-height: 4em;text-decoration: none;text-transform: capitalize;
}

设置按钮悬停效果:

.open-popup:hover {border-width: 2px;
}

至此,主界面完成,接下来制作弹窗。
在 dom 中增加的 .popup 小节表示弹窗内容,其中的 <a> 是返回按钮,<p> 是具体内容,这里我们把内容简化为一些陆生动物的 unicode 字符,为了能够触发这个弹窗,设置 .popupidterrestrial,并在 .main<a> 链接中指向它:

<div class="main"><a href="#terrestrial" class="open-popup">terrestrial animals</a>
</div>
<section id="terrestrial" class="popup"><a href="#" class="back">&lt; back</a><p>??????????</p>
</section>

设置弹窗的尺寸,它将覆盖刚才的 .main 的内容:

.popup {position: absolute;top: 0;width: 100%;height: inherit;display: flex;flex-direction: column;justify-content: start;
}

设置返回按钮的样式:

.popup .back {font-size: 20px;font-family: sans-serif;text-align: center;height: 2em;line-height: 2em;background-color: #ddd;color: black;text-decoration: none;
}.popup .back:visited {color: black;
}.popup .back:hover {background-color: #eee;
}

设置内容的样式:

.popup p {font-size: 100px;text-align: center;margin: 0.1em 0.05em;
}

设置弹窗内容默认是不显示的,只有点击主界面的链接时才显示:

.popup {display: none;
}.popup:target {display: flex;
}

至此,弹窗完成,但弹窗中的内容是重叠在主界面上面的,接下来制作从主界面到弹窗的动画效果。
动画效果包含 3 个步骤:页面中间的一条直线从左端横穿到右端,页面中间大幕向上下两端拉开,最后内容淡入,下面的制作过程依次是第 3 个步骤、第 2 个步骤、第 1 个步骤。
先让弹窗内容淡入:

.popup > * {filter: opacity(0);animation: fade 0.5s ease-in forwards;
}@keyframes fade{to {filter: opacity(1);}
}

用伪元素 ::before 制作一个白色背景,从页面中间向上下两端展开:

.popup::before {content: '';position: absolute;box-sizing: border-box;width: 100%;height: 0;top: 50%;background-color: white;animation: open-animate 0.5s cubic-bezier(0.8, 0.2, 0, 1.2) forwards;
}@keyframes open-animate {to {height: 100vh;top: 0;}
}

设置弹窗淡入动画的延时时长,形成先大幕拉开再显示内容的效果:

.popup > * {animation-delay: 0.5s;
}

用伪元素 ::after 制作一条横线,从页面左端横穿到右端:

.popup::after {content: '';position: absolute;width: 0;height: 2px;background-color: white;top: calc((100% - 2px) / 2);left: 0;animation: line-animate 0.5s cubic-bezier(0.8, 0.2, 0, 1.2);
}@keyframes line-animate {50%, 100% {width: 100%;}
}

再设置弹窗淡入动画和大幕拉开动画的延时时长,让动画效果依次执行:

.popup > * {animation-delay: 1s;
}.popup::before {animation-delay: 0.5s;
}

至此,整个动画效果完成。
在 dom 再中增加一组水生动物的内容,以及打开它的链接:

<div class="main"><a href="#terrestrial" class="open-popup">terrestrial animals</a><a href="#aquatic" class="open-popup">aquatic animals</a>
</div>
<section id="terrestrial" class="popup"><a href="#" class="back">&lt; back</a><p>??????????</p>
</section>
<section id="aquatic" class="popup"><a href="#" class="back">&lt; back</a><p>??????????</p>
</section>

最后,设置一下主界面上按钮的间距:

.open-popup {margin: 1em;
}

大功告成!

前端每日实战:160# 视频演示如何用纯 CSS 创作一个打开内容弹窗的交互动画...相关推荐

  1. 前端每日实战:45# 视频演示如何用纯 CSS 创作一个菱形 loader 动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/eKzjqK 可交互视频教程 此视频 ...

  2. html鼠标拖尾效果,前端每日实战:25# 视频演示如何用纯 CSS 创作一个慧星拖尾效果的 loader 动画...

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. 可交互视频教程 此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码. 请用 chrome, s ...

  3. 前端每日实战:102# 视频演示如何用纯 CSS 创作一个小和尚

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/oMmYXp 可交互视频 此视频是可 ...

  4. 前端每日实战:125# 视频演示如何用纯 CSS 创作一个失落的人独自行走的动画...

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MqpOdR/ 可交互视频 此视频是 ...

  5. 前端每日实战:119# 视频演示如何用纯 CSS 创作一个接扎啤的动画(内含2个视频)...

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/rZeOQp 可交互视频 此视频是可 ...

  6. 前端每日实战:84# 视频演示如何用纯 CSS 创作一个极品飞车 loader

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MBbEMo 可交互视频 此视频是可 ...

  7. python绘制图形沙漏_前端每日实战:118# 视频演示如何用纯 CSS 创作一个沙漏 loader...

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. 可交互视频 此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码. 请用 chrome, saf ...

  8. 前端每日实战:156# 视频演示如何用纯 CSS 创作一个飞机舷窗风格的 toggle 控件...

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/jeaOrw 可交互视频 此视频是可 ...

  9. 前端每日实战:93# 视频演示如何用纯 CSS 创作一根闪电连接线

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/RBjdzZ 可交互视频 此视频是可 ...

最新文章

  1. 云原生时代, Kubernetes 多集群架构初探
  2. 图解远程版本库开发周期 —— Git 学习笔记 22
  3. boost::core模块实现范围枚举C++11
  4. NoSQL, Clojure
  5. VS2015+qt5.11入门(实现计算机的加法和登录操作)
  6. @autowired注解注入为null_Java面试必备:依赖注入注解@Resource和@Autowired
  7. 那些在错误道路上一路狂奔的国产VR
  8. 借助传感器用计算机测速度讲解,高中物理个性化教学的开展论文
  9. 用Python对全国火车站数量进行分析,发现东北三省竟然占了2成!
  10. discuz远征游戏通用网站模板
  11. 仿酷狗音乐列表点击item子控件展开功能
  12. 兔子生崽问题编程_兔子生崽问题
  13. QGIS算法列表 (py console输出)
  14. 原创丨嵌入式IMX6ULL学习指引-四大要点-简单也实用
  15. 2021年危险化学品生产单位安全生产管理人员考试题库及危险化学品生产单位安全生产管理人员最新解析
  16. Gopher China 2019 讲师专访 -探探平台技术部软件工程师于乐
  17. easyswoole默认访问html,easyswoole安装报错 解决办法
  18. netbeans linux 教程,NetBeans IDE Ruby 快速入门教程
  19. 用c语言实现mfc系统,MFC实现学生选课系统
  20. 【正点原子STM32连载】 第三十一章 ADC实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

热门文章

  1. socket请求ip遇到的问题
  2. Mac完全删除Vagrant
  3. js通过正则表达式获取链接上的指定参数值
  4. ArcGIS 10.1(X)安装教程
  5. PyAutoGUI——自动化控制鼠标和键盘操作
  6. 如何解决国标GB28181协议流媒体视频平台新增ws_flv视频流无法播放问题?
  7. 计算机毕业设计(附源码)python作业管理系统设计
  8. rcar-du 通过modetest命令测试DU驱动显示
  9. Afaria 7 补丁发布 - SP4
  10. 资深首席架构师眼中的架构应该是什么样子的