资讯专栏INFORMATION COLUMN

CSS3实现全景图特效

winterdawn / 2068人阅读

摘要:本篇文章将给大家带来一个的黑科技如何仅仅使用来实现全景图的效果最终效果演示页面布局基础样式首先定义一些基本的样式和动画这段代码的意思是让图片的高等于容器的高,并且水平方向自动,即图片最左边贴着容器左侧。

本篇文章将给大家带来一个css3的黑科技:如何仅仅使用css来实现全景图的效果?

最终效果演示:demo

页面布局
基础样式

首先定义一些基本的样式和动画

.panorama {
  width: 300px;
  height: 300px;
  background-image: url(http://7vilbi.com1.z0.glb.clouddn.com/blog/6608185829213862083.jpg);
  background-size: auto 100%;
  cursor: pointer;
  animation: panorama 10s linear infinite alternate;
}

@keyframes panorama {
  to {
    background-position: 100% 0;
  }
}

background-size: auto 100%; 这段代码的意思是让图片的高等于容器的高,并且水平方向自动,即图片最左边贴着容器左侧。

执行动画的流程是:周而复始、往复交替、线性并且时间周期是10s。

手动控制动画执行

到这里为止,当我们打开该网页后,立马会出现一张图片来回水平滑动的效果。但是这样的话,访客可能会被动画吸引而忽略了真正的内容。
我们的要求是当鼠标悬浮于图片时才让它动起来,我们当然可以很简单的实现这个效果。

删除之前的animation,添加以下样式。

.panorama:hover,
.panorama:focus {
  animation: panorama 10s linear infinite alternate;
}

现在的效果是:鼠标移入图片,图片开始水平来回滑动。

动画的优化

虽然效果达到了,但是你会发现,当鼠标移出图片,图片立刻回到初始位置。
对于我们来说,这有点突然,如何记录图片当前的位置并且当鼠标移入时继续执行动画呢?

我们可以依靠这个属性animation-play-state: paused | running,它表示动画的两个状态:暂停和运行。

完整css代码
.panorama {
  width: 300px;
  height: 300px;
  background-image: url(http://7vilbi.com1.z0.glb.clouddn.com/blog/6608185829213862083.jpg);
  background-size: auto 100%;
  cursor: pointer;
  animation: panorama 10s linear infinite alternate;
  animation-play-state: paused;
}

.panorama:hover,
.panorama:focus {
  animation-play-state: running;
}

@keyframes panorama {
  to {
    background-position: 100% 0;
  }
}

你也可以在我的博客上阅览本篇文章,你的关注是我最大的写作动力,感谢你的支持。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/115188.html

相关文章

  • H5打造3d场景不完全攻略(一): H5 3d表现形式

    摘要:前言日前,造物节放肆地火了一把。作为一个叙事性的,它的场景和动效全部基于代码实现,而抛弃了视频这种方式。但它与用户的交互比较少,因而并不能直观体现出这是完全基于代码实现的。很好地为我们诠释了,以变换打造亦不是为一种明智的低成本的实现方式。 前言 日前,taobao造物节H5放肆地火了一把。相信接下来将3d嵌入网站的这种营销方式会被越来越多的人留意到。工作之余体验了若干个3d H5页面,...

    habren 评论0 收藏0
  • CSS 3D Panorama(全景) - 淘宝造物节技术剖析

    摘要:淘宝造物节的活动页就是全景的一个很赞的页面,它将全景图分割成等份,相邻的元素构成的夹角,相邻两侧面相对于棱柱中心所构成的夹角。 本文转自凹凸实验室:https://aotu.io/notes/2016/08... showImg(https://segmentfault.com/img/remote/1460000011381045); 前言 3D 全景并不是什么新鲜事物了,但以前...

    LiuRhoRamen 评论0 收藏0
  • CSS 3D Panorama(全景) - 淘宝造物节技术剖析

    摘要:淘宝造物节的活动页就是全景的一个很赞的页面,它将全景图分割成等份,相邻的元素构成的夹角,相邻两侧面相对于棱柱中心所构成的夹角。 本文转自凹凸实验室:https://aotu.io/notes/2016/08... showImg(https://segmentfault.com/img/remote/1460000011381045); 前言 3D 全景并不是什么新鲜事物了,但以前...

    lentrue 评论0 收藏0
  • H5打造3d场景不完全攻略(二): Amazing CSS3D

    摘要:实现方法可参考这篇文章纯打造的模型渲染器实现全景。天空盒子相信很多打造过或有了解过全景的同行们都知道这个概念。首先将创建好的六个面切割出来,以命名标记位置。柱形柱形全景也不算复杂。 前言 对的,本文就是着重介绍如何使用CSS3中的3D变换打造出H5中的3D效果。灵感来源于造物节团队的3d引擎,因为使用方法比较复杂,也没有开源的API文档,于是想自己另外造个轮子,便开始了相关内容的学习和...

    fancyLuo 评论0 收藏0
  • 3D全景漫游

    摘要:可选,默认值为,设置为则禁止用户和全景图交互导航条不可用。可选,默认值为,全景图在毫秒后会自动进行动画。当全景图准备就绪并且第一张图片显示时的回调函数。 3D全景漫游 showImg(http://mmbiz.qpic.cn/mmbiz/cibketMByvrbpDqUQ9LiaBvutnwMehicnO2RZurdl96FLtwqlf6LjWS0Bv8ApQY0YjHdtyFWuzz...

    DesGemini 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<