如何用纯CSS实现动态行驶的火车

这篇文章给大家介绍的文章内容是关于如何用纯css实现正在行驶中的火车,有很好的参考价值,希望可以帮助到有需要的朋友。

效果预览

1537227260-5b5a5277c14a0_articlex.gif

代码解读

定义 dom,容器中包含 2 个元素,train 代表火车,track 代表铁轨,其中包含的 3 个 代表 3 根枕木。

居中显示:

body{    margin: 0;    height: 100vh;    display: flex;    align-items: center;    justify-content: center;    background: linear-gradient(#666, #333);}

定义容器尺寸:

立即学习“前端免费学习笔记(深入)”;

.loader {    width: 8em;    height: 10em;    font-size: 20px;}

先画火车。
画出火车的轮廓:

.train {    width: 6em;    height: 6em;    color: #444;    background: #bbb4ab;    border-radius: 1em;    position: relative;    left: 1em;}

用 ::before 伪元素画出车窗:

.train::before {    content: '';    position: absolute;    width: 80%;    height: 2.3em;    background-color: currentColor;    border-radius: 0.4em;    top: 1.2em;    left: 10%;}

再用 ::after 伪元素画出车窗上的信号灯:

.train::after {    content: '';    position: absolute;    width: 25%;    height: 0.4em;    background-color: currentColor;    border-radius: 0.3em;    top: 0.4em;    left: calc((100% - 25%) / 2);}

利用径向渐变画出车灯:

.train {    background:         radial-gradient(circle at 20% 80%, currentColor 0.6em, transparent 0.6em),        radial-gradient(circle at 80% 80%, currentColor 0.6em, transparent 0.6em),        #bbb;}

接下来画铁轨和枕木。
定义铁轨的宽度,比火车稍宽:

.track {    width: 8em;}

用伪元素画出铁轨:

.track {    position: relative;}.track::before,.track::after {    content: '';    position: absolute;    width: 0.3em;    height: 4em;    background-color: #bbb;    border-radius: 0.4em;}

把铁轨分别放置在两侧,并形成近大远小的视觉效果:

.track::before,.track::after {    transform-origin: bottom;}.track::before {    left: 0;    transform: skewX(-27deg);}.track::after {    right: 0;    transform: skewX(27deg);}

画出枕木,这是距离观察者最近的效果,目前 3 根枕木是重叠在一起的:

.track span {    width: inherit;    height: 0.3em;    background-color: #bbb;    position: absolute;    top: 4em;}

设置铁轨的动画效果:

.track span {    animation: track-animate 1s linear infinite;}@keyframes track-animate {    0% {        transform: translateY(-0.5em) scaleX(0.9);        filter: opacity(0);    }    10%, 90% {        filter: opacity(1);    }    100% {        transform: translateY(-4em) scaleX(0.5);        filter: opacity(0);    }}

为另外 2 根枕木设置动画延时,使铁轨看起来就像永远走不完的样子:

.track span:nth-child(2) {    animation-delay: -0.33s;}.track span:nth-child(3) {    animation-delay: -0.66s;}

最后,为火车增加动画效果,看起来就像在行驶中微微晃动:

.train {    animation: train-animate 1.5s infinite ease-in-out;}@keyframes train-animate {    0%, 100% {        transform: rotate(0deg);    }    25%, 75% {        transform: rotate(0.5deg);    }    50% {        transform: rotate(-0.5deg);    }}

大功告成!

相关推荐:

如何利用css画出一只小鸟(代码)

如何用纯CSS实现卡通鹦鹉的效果

以上就是如何用纯CSS实现动态行驶的火车的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1610856.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 01:47:35
下一篇 2025年12月24日 01:48:01

相关推荐

  • 如何使用CSS实现单元素点阵loader的效果

    这篇文章主要介绍了关于如何使用css实现单元素点阵loader的效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/front-end-daily-challe…

    2025年12月24日
    000
  • 如何使用纯CSS实现一台咖啡机的效果

    这篇文章主要介绍了关于如何使用纯css实现一台咖啡机的效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/front-end-daily-challenges …

    2025年12月24日
    000
  • 如何用纯CSS实现卡通鹦鹉的效果

    这篇文章主要介绍了关于如何用纯css实现卡通鹦鹉的效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/front-end-daily-challenges 代码…

    2025年12月24日
    000
  • 如何用纯CSS实现一副国际象棋

    这篇文章主要介绍了关于如何用纯css实现一副国际象棋 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/front-end-daily-challenges 代码…

    2025年12月24日
    000
  • 教你如何用CSS来追踪用户

    我们可以用它来做什么 我们可以收集关于用户的一些基本信息,例如 屏幕分辨率(当浏览器最大化时)以及用户使用的什么浏览器(引擎) 此外,我们可以监测用户是否点击某个链接或鼠标悬停在某个元素上,用来 追踪用户悬停的链接,甚至可以 追踪用户如何移动鼠标(在页面使用不可见的字段),然而,使用目前我的方法只能…

    好文分享 2025年12月24日
    000
  • css3中的calc函数浅析_css3

    calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分。但它却是就是css3的一部分,下面这篇文章主要给大家介绍了关于css3中calc函数的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下 前言 其实在之前学习CSS3的时候,我并没有注意到有calc()这个属性,…

    2025年12月24日
    000
  • CSS教程之深入浅析CSS 选择器分组

    这篇文章主要介绍了css 选择器分组的相关资料,需要的朋友可以参考下 选择器分组 假设希望 h2 元素和段落都有灰色。为达到这个目的,最容易的做法是使用以下声明: h2, p {color:gray;} 将 h2 和 p 选择器放在规则左边,然后用逗号分隔,就定义了一个规则。其右边的样式(color…

    好文分享 2025年12月24日
    000
  • CSS 设置滚动条样式的实例代码

    这篇文章主要介绍了css 设置滚动条样式的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧 CSS 设置滚动条样式的实现代码如下所示: •::-webkit-scrollbar 滚动条整体部分•::-webkit-scrollbar-thumb  滚动条里面的小方块,能向上向下移动(或…

    好文分享 2025年12月24日
    000
  • 利用CSS3实现炫酷的飞机起飞的动画

    这篇文章给大家演示如何只利用css3就能实现飞机起飞的动画,实现后的效果很赞,有需要的朋友可以参考借鉴。 有点遗憾的是云朵不好画,用图片代替了 实例源码 Plane *{margin:0;padding:0;} body{ height: 700px; background: rgb(42, 121…

    2025年12月24日
    000
  • 关于CSS3中filter(滤镜)属性的介绍

    这篇文章主要介绍了详解css3中强大的filter(滤镜)属性的相关资料,需要的朋友可以参考下 博主最近在做网站的过程中发现了一个非常强大的CSS3属性,就是filter(滤镜)属性,喜欢p图的朋友看名字都应该知道这是什么神器了吧。当然,这个属性的效果肯定不能跟ps相比,但是利用的好的话可以在节约很…

    2025年12月24日 好文分享
    000
  • 使用CSS3创建一个旋转可变色按钮

    这篇文章主要介绍了关于使用css3创建一个旋转可变色按钮,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 想把访客引到另一个页面?添加一个很炫的按钮是个很好的办法 !今天的文章提出了如何使用CSS3创建一个旋转,旋转,可变色按钮,需要了解的朋友可以参考下 想把访客引到另一个页面?添加一…

    好文分享 2025年12月24日
    000
  • CSS3中transform变换模型渲染的解析

    这篇文章主要介绍了关于css3中transform变换模型渲染的解析,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 transform通过一组函数实现了对盒子大小、位置、角度的2D或者3D变换,这里我们主要来深入解读CSS3中transform变换模型的渲染,尤其是关注web端3D渲…

    2025年12月24日 好文分享
    000
  • CSS3定位和浮动的介绍

    这篇文章主要为大家详细介绍了css3定位和浮动的概念,以及实例代码讲解css3定位和浮动的使用方法,感兴趣的小伙伴们可以参考一下 本文为大家分享CSS3定位和浮动的基础概念,与使用方法,供大家参考,具体内容如下 一、定位 1、 css定位: 改变元素在页面上的位置 立即学习“前端免费学习笔记(深入)…

    好文分享 2025年12月24日
    000
  • 基于css3的属性transition制作菜单导航的效果

    这篇文章主要为大家介绍了基于css3的属性transition制作菜单导航效果,可实现鼠标滑过菜单项动态改变背景滑块的功能,基于css3的属性transition实现,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了基于css3的属性transition制作菜单导航效果。分享给大家供大家参考。…

    2025年12月24日
    000
  • CSS制作Web页面条纹背景样式的介绍

    这篇文章主要介绍了关于css制作web页面条纹背景样式的介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 通过CSS中的linear-gradient主要就能显示出不同方向的条纹效果,这里我们就来详解CSS制作Web页面条纹背景样式的技巧,需要的朋友可以参考下 一、横向条纹如下代码…

    2025年12月24日
    000
  • 如何使用CSS实现一个按钮文字滑动的效果

    这篇文章主要介绍了关于如何使用css实现一个按钮文字滑动的特效 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下源代码下载 请从 github 下载。 https://github.com/comehope/front-end-daily-challenges/tree/master/…

    好文分享 2025年12月24日
    000
  • 如何用纯CSS 实现一个颜色卡的效果

    这篇文章主要介绍了关于如何用纯CSS 实现一个颜色卡的效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/front-end-daily-challenges …

    2025年12月24日
    000
  • css相对定位

    定位的四种模式:static,relative,absolute,fixed 定位的四个位置:left,right,top,bottom 定位属性:position,有四种状态值 1.static:静态定位,按元素在文档流中的顺序排列,这是默认值,四个位置无效 2.relative:相对定位,元素相…

    好文分享 2025年12月24日
    000
  • css绝对定位

    定位的四种模式:static,relative,absolute,fixed 定位的四个位置:left,right,top,bottom 定位属性:position,有四种状态值 1.static:静态定位,按元素在文档流中的顺序排列,这是默认值,四个位置无效 2.relative:相对定位,元素相…

    好文分享 2025年12月24日
    000
  • css固定定位

    定位的四种模式:static,relative,absolute,fixed 定位的四个位置:left,right,top,bottom 定位属性:position,有四种状态值 1.static:静态定位,按元素在文档流中的顺序排列,这是默认值,四个位置无效 2.relative:相对定位,元素相…

    好文分享 2025年12月24日
    000

发表回复

登录后才能评论
关注微信