本教程将和大家一起来研究一种奇妙且有趣的边框运动效果。当你用鼠标划过类似图片的内容块时,它的边框将会很神奇的运动起来:内容块的透明度降低,它的四条边框按顺时针方向运动,效果十分奇妙。我们将使用html5 svg和CSS transitions来完成它。

开始之前先来思考一下,然后在去完成效果。

注意:不是所有的浏览器都支持在svg中使用CSS transitions。

我们刚接触这种效果时,并不知道该如何下手制作,但是你可以先观察一条边,比如上部的边,你会注意到,边框是从右到做减少,然后一条新的边再从右边出现运动到左边。当结合4条边来看时,效果是上部的边运动到左边,左边的边运动到下边,下边的边运动到右边,右边的边运动到上部,正好是一周。

你也许能在不使用svg的情况下制作这种效果,甚至不使用额外的元素,只使用伪元素。但是本教程里我们希望研究如何通过svg来制作,并且通过css而不是javascript来控制它。

现在,想一想如何通过svg来实现它。我们想不使用javascript来实现它,但是使用css来计算stroke-dashoffset和stroke-dasharray的值是相当困难的。所以我们决定使用另一种解决方案,使用线条并它们运动起来。

我们使用的线条有三个部分组成。线条的长度是方框的边长的三倍。线条的中间有一个和方框宽度相同的间隙,我们将通过设置stroke-dashoffset的值等于方框的宽度来实现效果。现在,诀窍在于过渡线的位置:

svg的大小设置为方框的大小,所以我们不会看到超出虚线溢出的部分。

我们使用一个div来放置svg

div的宽度和高度设置为和svg一样的200px,并且设置svg为绝对定位。这里重点要注意将线条的描边设置为10,并设置stroke-dasharray属性为200。

div {

width: 200px;

height: 200px;

position: relative;

overflow: hidden;

background: #ddd;

}

svg {

position: absolute;

top: 0;

left: 0;

}

svg line {

stroke-width: 10;

stroke: #000;

fill: none;

stroke-dasharray: 200;

-webkit-transition: -webkit-transform .6s ease-out;

transition: transform .6s ease-out;

}

div:hover svg line {

-webkit-transform: translateX(-400px);

transform: translateX(-400px);

}

当我们用鼠标hoverdiv的时候,线条也要有一些transition效果。我们希望线移动其自身长度三分之二左右,所以在x轴上设置translate为-400px,由于我们在这里不能够设置translation的值为百分比,所以只能使用像素做单位。

下面我们来添加另外几条线,为了便于理解他们的位置和运动方向,来看下面的图片演示。

我们希望线条这样运动,当线条的开始部分移出方框时,和他相垂直的线的后面部分开始进入方框,这样就会制造出一种四条线沿着边框运动的视觉差效果。

让我们来看一看线条运动的坐标系。

左边的线条的坐标为(0,200)和(0,-400),下边的线条为(200,200)和(-400,200),右边的线条为(200,0)和(200,600):

当鼠标hover的时候,需要为每条线设置不同的translation

div:hover svg line.top {

-webkit-transform: translateX(-400px);

transform: translateX(-400px);

}

div:hover svg line.bottom {

-webkit-transform: translateX(400px);

transform: translateX(400px);

}

div:hover svg line.left {

-webkit-transform: translateY(400px);

transform: translateY(400px);

}

div:hover svg line.right {

-webkit-transform: translateY(-400px);

transform: translateY(-400px);

}

现在我们做出了一个基本的效果,让我们来做得更加漂亮一点!

我们可以再方框盒中添加一些文本

D

2012

Broccoli, Asparagus, Curry

再为方框添加一些颜色渐变,各条svg边框间使用box shadow来制作一些间隔。

.box {

width: 300px;

height: 460px;

position: relative;

background: rgba(255,255,255,1);

display: inline-block;

margin: 0 10px;

cursor: pointer;

color: #2c3e50;

box-shadow: inset 0 0 0 3px #2c3e50;

-webkit-transition: background 0.4s 0.5s;

transition: background 0.4s 0.5s;

}

.box:hover {

background: rgba(255,255,255,0);

-webkit-transition-delay: 0s;

transition-delay: 0s;

}

为文本添加一些样式

.box h3 {

font-family: "Ruthie", cursive;

font-size: 180px;

line-height: 370px;

margin: 0;

font-weight: 400;

width: 100%;

}

.box span {

display: block;

font-weight: 400;

text-transform: uppercase;

letter-spacing: 1px;

font-size: 13px;

padding: 5px;

}

.box h3,

.box span {

-webkit-transition: color 0.4s 0.5s;

transition: color 0.4s 0.5s;

}

.box:hover h3,

.box:hover span {

color: #fff;

-webkit-transition-delay: 0s;

transition-delay: 0s;

}

给svg和线条添加样式

.box svg {

position: absolute;

top: 0;

left: 0;

}

.box svg line {

stroke-width: 3;

stroke: #ecf0f1;

fill: none;

-webkit-transition: all .8s ease-in-out;

transition: all .8s ease-in-out;

}

因为方框的背景色在做渐变,所以我们要为线条的transition设置一些延时,否则看不到效果。

.box:hover svg line {

-webkit-transition-delay: 0.1s;

transition-delay: 0.1s;

}

前面我们设置的stroke-dasharray只有一个值,现在我们需要所有的线条和间隔都有不同的值。

.box svg line.top,

.box svg line.bottom {

stroke-dasharray: 330 240;

}

.box svg line.left,

.box svg line.right {

stroke-dasharray: 490 400;

}

最后,我们设置当鼠标划过时不同的转换值。由于我们的方框是300px宽度,水平线将需要的总宽度的三分之二作为过渡。垂直方向的线也是相同的原理。

.box:hover svg line.top {

-webkit-transform: translateX(-600px);

transform: translateX(-600px);

}

.box:hover svg line.bottom {

-webkit-transform: translateX(600px);

transform: translateX(600px);

}

.box:hover svg line.left {

-webkit-transform: translateY(920px);

transform: translateY(920px);

}

.box:hover svg line.right {

-webkit-transform: translateY(-920px);

transform: translateY(-920px);

}

教程就到这里,希望对你有所帮助!

html怎么做出相框的效果,使用html5 svg和css3制作边框运动的动画效果相关推荐

  1. html 图片选中效果,使用html5 svg和css3制作神奇的图片hover效果

    如果你曾经访问过新版的Christmas Experiments网站,那么你一定被网站上的日历效果所吸引.今天我们将和大家一起来研究如何使用SVG和Snap.svg来实现这种效果.思路是用svg创建一 ...

  2. 纯CSS3 制作交通信号灯红绿灯动画效果

    纯CSS3 制作交通信号灯红绿灯动画效果 HTML: <div class="light"><div class="red"></ ...

  3. 火箭月亮html5游戏,HTML5 svg和CSS3炫酷火箭升空动画特效

    这是一款HTML5 svg和CSS3炫酷火箭升空动画特效.该特效的火箭使用SVG来实现,并通过CSS3动画来实现火箭的动画特效. 使用方法 HTML结构 CSS样式 body { background ...

  4. html仿微信拆红包效果旋转,利用React加CSS3实现微信拆红包动画效果实例(代码)...

    本篇文章主要介绍了利用React加CSS3实现微信拆红包动画效果实例(代码),具有一定的参考价值,感兴趣的小伙伴们可以参考一下. 微信红包曾经引爆过一系列的营销热潮,相信大家对于这种红包形式并不陌生, ...

  5. html5 svg 遮罩,HTML5 SVG和CSS3制作动态文字遮罩背景特效

    在上一个教程中,我们使用SVG和CSS制作了文字遮罩效果.在这个教程中,我们将要使用SVG和CSS3来向你展示两种动态遮罩文字背景的效果.第一中效果是在鼠标滑过遮罩文字的时候,文字背景会有彩虹背景动画 ...

  6. 纯CSS3制作卡通场景汽车动画效果

    前言 今天分享一下我昨晚做的CSS3动画效果--卡通场景汽车动画.在接触CSS3动画之前,我之前实现一些简单的动画效果都是使用flash完成的.但是自从CSS3横空出世,在移动端对CSS3动画的运用越 ...

  7. css3制作鼠标悬浮图文动画效果

    个人名片:

  8. html 动物特效,分享9款用HTML5/CSS3制作的动物人物动画,

    分享9款用HTML5/CSS3制作的动物人物动画, 1.纯CSS3绘制可爱的蚱蜢 还有眨眼动画 今天我们要分享一个利用纯CSS3绘制的蚱蜢动画,非常可爱. 在线演示 源码下载 2.HTML5 Canv ...

  9. c语言实现图片过渡效果飞入,用css3实现转换过渡和动画效果

    为什么要用css动画替换js动画 导致JavaScript效率低的两大原因:操作DOM和使用页面动画. 通常我们会通过频繁的操作 DOM的CSS来实现视觉上的动画效果,导致js效率低的两个因素都包括在 ...

  10. 基于VB算法+Picture+Timer控件制作的39种动画效果,类似屏保(完整原程序)

    基于VB算法+Picture+Timer控件制作的39种动画效果,类似屏保(完整原程序) 动画播放器程序,在WIN2003调试通过,详细请自行下载进行学习测试,程序大小13K 下载地址:http:// ...

最新文章

  1. c语言如何判断数组不为空,PHP 判断数组是否为空的几种方法
  2. google python代码规范_如何用好python编码规范,写一手漂亮的代码
  3. 通过用户名限制用户上网
  4. [家里蹲大学数学杂志]第045期布朗运动矩的计算
  5. mysql多线程使用一个链接_探索多线程使用同一个数据库connection的后果
  6. android 触摸防抖,一种触摸屏防抖优化方法、系统及触摸屏终端与流程
  7. 打印机测试图_INTAMSYS高温PEEK 3D打印机助力智能组件创新制造
  8. c++时间函数及转换
  9. 《Microduino实战》——2.2 兼容Arduino系列产品
  10. 项目验收的步骤和程序
  11. d2crub学习2 算合计
  12. oracle 选项,oracle startup的选项-Oracle
  13. 一网打尽!所有PMP的计算公式都在这里啦,赶紧学起来(1)
  14. 【Linux】系统编程——文件编程
  15. 《MATLAB 神经网络43个案例分析》:第33章 模糊神经网络的预测算法——嘉陵江水质评价
  16. 游戏更新一直卡在计算机,win10电脑玩战地5游戏一直卡屏卡顿如何解决
  17. 苹果组建新团队自研无线芯片,欲摆脱第三方束缚!
  18. 使用Godaddy续费我的域名时遇到支付问题
  19. MongoDB的基础指令和练习笔记
  20. 自己搭建服务器要多少钱?

热门文章

  1. 加拿大计算机工程研究生,加拿大维多利亚大学电子与计算机工程系副教授诚招硕士研究生 - 导师招生 - 小木虫 - 学术 科研 互动社区...
  2. 小米手机miui12系统usb共享网络
  3. Pycharm Debug调试(纯干货)
  4. 四川大学计算机学院博士复试分数线,四川大学2021年博士合格分数线和参加外语考核考生名单...
  5. Fibonacci数列 斐波那契数列
  6. python turtle 海龟画图歌尔号 火箭 三体 地球
  7. Vmware 虚拟机克隆后网卡地址的修改
  8. c语言编写一个程序计算某年某月有几天,c语言:输入某一年的第几天,计算并输出它是这一年的第几月第几日,具体怎样编程...
  9. 新华全媒+|探秘北迁象群的“家”和“家人们”
  10. 有赞实时数仓建设实践与经验