效果预览

在线演示

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

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

可交互视频教程

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

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

https://scrimba.com/c/cD8yKHb

源代码下载

本地下载

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

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

代码解读

定义 dom,容器中包含公告牌、挂公告牌的细绳和固定绳子的 3 个图钉:

  1. <div class="signboard">
  2. <div class="sign">THANKS</div>
  3. <div class="strings"></div>
  4. <div class="pin top"></div>
  5. <div class="pin left"></div>
  6. <div class="pin right"></div>
  7. </div>

居中显示:

  1. html, body {
  2. width: 100%;
  3. height: 100%;
  4. display: flex;
  5. align-items: center;
  6. justify-content: center;
  7. background: radial-gradient(circle at center 60%, white, sandybrown);
  8. }

定义公告牌的整体尺寸:

  1. .signboard {
  2. width: 400px;
  3. height: 300px;
  4. }

设置木板的样式:

  1. .signboard {
  2. position: relative;
  3. }
  4. .sign {
  5. width: 100%;
  6. height: 200px;
  7. background: burlywood;
  8. border-radius: 15px;
  9. position: absolute;
  10. bottom: 0;
  11. }

设置有雕刻效果的文字样式:

  1. .sign {
  2. color: saddlebrown;
  3. font-family: sans-serif;
  4. font-weight: bold;
  5. text-align: center;
  6. line-height: 200px;
  7. text-shadow: 0 2px 0 rgba(255, 255, 255, 0.3),
  8. 0 -2px 0 rgba(0, 0, 0, 0.7);
  9. }

画出细绳:

  1. .strings {
  2. width: 150px;
  3. height: 150px;
  4. border: 5px solid brown;
  5. position: absolute;
  6. border-right: none;
  7. border-bottom: none;
  8. transform: rotate(45deg);
  9. top: 38px;
  10. left: 122px;
  11. }

画出细绳顶部的图钉:

  1. .pin {
  2. width: 25px;
  3. height: 25px;
  4. border-radius: 50%;
  5. position: absolute;
  6. }
  7. .pin.top {
  8. background: gray;
  9. left: 187px;
  10. }

画出木板上左右两侧的图钉:

  1. .pin.left,
  2. .pin.right {
  3. background: brown;
  4. top: 110px;
  5. box-shadow: 0 2px 0 rgba(255, 255, 255, 0.3);
  6. }
  7. .pin.left {
  8. left: 80px;
  9. }
  10. .pin.right {
  11. right: 80px;
  12. }

最后,让告示牌晃动起来:
(此处已按 小蕾蕾 的建议修改为以顶部图钉作为旋转轴,比最初的效果要好)

  1. .signboard {
  2. animation: swing 1.5s ease-in-out infinite alternate;
  3. transform-origin: 200px 13px;
  4. }
  5. @keyframes swing {
  6. from {
  7. transform: rotate(10deg);
  8. }
  9. to {
  10. transform: rotate(-10deg);
  11. }
  12. }

大功告成!

原文地址:https://segmentfault.com/a/1190000014983030

如何用纯 CSS 创作一个晃动的公告板的更多相关文章

  1. 前端每日实战:30# 视频演示如何用纯 CSS 创作一个晃动的公告板

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

  2. 30.纯 CSS 创作一个晃动的公告板

    原文地址:https://segmentfault.com/a/1190000014983030 感想: 绝对定位+动画 HTML代码: <div class="signboard&q ...

  3. 如何用纯 CSS 创作一个渐变色动画边框

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

  4. 如何用纯 CSS 创作一个冒着热气的咖啡杯

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/xjXxoz 可交互视频教程 此视 ...

  5. 如何用纯 CSS 创作一个荧光脉冲 loader 特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/erRzzR 可交互视频教程 此视 ...

  6. 如何用纯 CSS 创作一个同心圆弧旋转 loader 特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/OZmXQX 可交互视频教程 此视 ...

  7. 如何用纯 CSS 创作一个充电 loader 特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/deNqdV 可交互视频教程 此视 ...

  8. 如何用纯 CSS 创作一个金属光泽 3D 按钮特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/full/MGeRRO 可交互视频教程 此 ...

  9. 如何用纯 CSS 创作一个容器厚条纹边框特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/YLqbXy 可交互视频教程 此视 ...

随机推荐

  1. JavaWeb-SpringSecurity初认识

    Spring Security 安全 百度百科 功能:Spring Security对Web安全性的支持大量地依赖于Servlet过滤器.这些过滤器拦截进入请求,并且在应用程序处理该请求之前进行某些安 ...

  2. 2016 CCPC 长春站现场赛总结(流水账= =)

    总的来说在写这篇总结的时候心情还是愉悦的,因为第一次参加区域赛就越过铜直接拿了个银~开心之情无法用语言形容啊233= =... 从杭州坐火车到长春,去的时候24个小时,回来32个小时,在路上就花了2天 ...

  3. Liunx 命令之链接操作

    Linux 系统中有软链接和硬链接两种特殊的"文件". 软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录. 硬链接则透过文件系统的inode来产生新档名 ...

  4. 【java多线程】多线程中的long和double

    在看一些代码的时候,会发现在定义long型和double型的变量时,会在前面加上volatile关键字,当然也会看到在其它原子类型的变量前加上这个关键字,但这里要说的还是有区别的. 在java中,ja ...

  5. Python: sklearn库——数据预处理

    Python: sklearn库 —— 数据预处理 数据集转换之预处理数据:      将输入的数据转化成机器学习算法可以使用的数据.包含特征提取和标准化.      原因:数据集的标准化(服从均值为 ...

  6. [SQL server2008筛选时报错,无法为该请求检索数据 解决方案]

    当SQL数据太多时,我们需要通过筛选来查询自己需要的数据. 当我在使用SQLserver 2008的时候 遇到了这个错误1 以下是微软提供的解决方案的网址 (SQL SERVER SP1补丁) htt ...

  7. [ASP.NET应用到的时间处理函数]

    第一种形式: System.DateTime.Now.ToString("D");         //2017年6月2日 System.DateTime.Now.ToString ...

  8. html页面元素命名参考

    页面结构: (1)页面结构 容器: container 页头:header 内容:content/container 页面主体:main 页尾:footer 导航:nav 侧栏:sidebar 栏目: ...

  9. LC 846. Hand of Straights

    Alice has a hand of cards, given as an array of integers. Now she wants to rearrange the cards into ...

  10. [idea]创建一个控制台程序

    新建项目时,选择JBoss即可.