一、常用的动效
1、背景颜色淡入淡出
<div class="bgc">背景颜色淡入淡出</div> /* 背景颜色的淡入淡出 */ .bgc { width: 150px; height: 40px; text-align: center; line-height: 40px; background-color: #ccc; border-radius: 5px; transition: background-color 1s; transition-timing-function: ease-in-out; cursor: pointer; } .bgc:hover { background-color: #09f; }
2、下划线从中间往两边淡入淡出
<div class="underline-cen-out ege">下划线中间往两边淡入淡出</div> /*后面的ege都用该css样式*/ .ege { cursor: pointer; height: 40px; line-height: 40px; text-align: center; display: inline-block; color: #333; background: #ccc; min-width: 80px; padding: 0 10px; margin: 10px; position: relative; transition: all .3s; z-index: 1; } .underline-cen-out::after { content: ""; width: 0; height: 3px; background: #3866ff; position: absolute; top: 100%; left: 50%; transition: .8s; margin-top: -3px; } .underline-cen-out:hover::after { left: 0; width: 100%; }
3、按钮心跳动画
<div class="heart-shake ege">按钮心跳动画</div> /* 按钮心跳动画 */ .heart-shake { border-radius: 10px; background: #3866ff; color: #ffffff; box-shadow: 0 2px 30px 0 #3866ff63; animation: submitBtn 1.5s ease infinite; } @keyframes submitBtn { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } }
4、内容从下向上移入动画
<div class="box"> <div class="baise"> <div class="zhe-zhao"></div> <div class="up-bao"></div> <div class="zhe-text"> <p>我是底部内容</p> </div> </div> </div> /* 内容从下向上移入 */ .box { width: 280px; height: 300px; position: relative; /* background-color: pink; */ background: url("http://img30.360buyimg.com/baoxian/jfs/t7423/47/3941548926/53740/eeeda758/59cb037bN06494a9f.jpg") no-repeat center; /* border: 1px solid #ccc; */ } .baise { position: absolute; width: 280px; height: 300px; left: 0; top: 0; overflow: hidden; } .zhe-zhao { width: 100%; height: 155px; filter: alpha(enabled=false); opacity: 1; background: #fff; position: absolute; bottom: -75px; left: 0; z-index: 10; *z-index: 1; transition: .3s all ease; } .up-bao { display: block; position: absolute; left: 0; top: 0; width: 100%; height: 100%; background: #000; filter: alpha(Opacity=0); opacity: 0; transition: .6s all ease-in; } .zhe-text { width: 250px; z-index: 1000; position: absolute; bottom: -105px; left: 0; padding: 15px; height: 155px; overflow: hidden; text-align: center; z-index: 11; transition: all .3s ease-in-out; } .box:hover .up-bao { filter: alpha(Opacity=50); opacity: .5; } .box:hover .zhe-zhao { bottom: -50px; filter: alpha(Opacity=0); opacity: 0; } .box:hover .zhe-text { bottom: 10px; }
5、伪类实现按钮边框动画
单边框
<div class="btn border-animation"> <div class="btn-borders"> <div class="border-top"></div> <div class="border-right"></div> <div class="border-bottom"></div> <div class="border-left"></div> </div> <span class="btn-text">Start</span> </div> .btn { --ease-in-duration: 0.25s; --ease-in-exponential: cubic-bezier(0.95, 0.05, 0.795, 0.035); --ease-out-duration: 0.65s; --ease-out-delay: var(--ease-in-duration); --ease-out-exponential: cubic-bezier(0.19, 1, 0.22, 1); position: relative; width: 100px; height: 50px; line-height: 50px; text-align: center; font-size: 14px; color: #333333; background-color: #ffffff; border: 1px solid #ebebeb; cursor: pointer; transition: 0.25s; } .btn .btn-borders { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .btn .btn-borders .border-top { position: absolute; top: 0; width: 100%; height: 1px; background: #3866ff; transform: scaleX(0); transform-origin: left; } .btn .btn-borders .border-right { position: absolute; right: 0; width: 1px; height: 100%; background: #3866ff; transform: scaleY(0); transform-origin: bottom; } .btn .btn-borders .border-bottom { position: absolute; bottom: 0; width: 100%; height: 1px; background: #3866ff; transform: scaleX(0); transform-origin: left; } .btn .btn-borders .border-left { position: absolute; left: 0; width: 1px; height: 100%; background: #3866ff; transform: scaleY(0); transform-origin: bottom; } .btn .btn-borders .border-left { transition: var(--ease-out-duration) var(--ease-out-delay) var(--ease-out-exponential); } .btn .btn-borders .border-bottom { transition: var(--ease-out-duration) var(--ease-out-delay) var(--ease-out-exponential); } .btn .btn-borders .border-right { transition: var(--ease-in-duration) var(--ease-in-exponential); } .btn .btn-borders .border-top { transition: var(--ease-in-duration) var(--ease-in-exponential); } .btn:hover { background: transparent; } .btn:hover .border-top, .btn:hover .border-bottom { transform: scaleX(1); } .btn:hover .border-left, .btn:hover .border-right { transform: scaleY(1); } .btn:hover .border-left { transition: var(--ease-in-duration) var(--ease-in-exponential); } .btn:hover .border-bottom { transition: var(--ease-in-duration) var(--ease-in-exponential); } .btn:hover .border-right { transition: var(--ease-out-duration) var(--ease-out-delay) var(--ease-out-exponential); } .btn:hover .border-top { transition: var(--ease-out-duration) var(--ease-out-delay) var(--ease-out-exponential); }
多边框
<div class="btn btn-primary btn-ghost btn-multiple-border-stroke"> <div class="btn-borders-group"> <div class="border-top"></div> <div class="border-right"></div> <div class="border-bottom"></div> <div class="border-left"></div> </div> <div class="btn-borders-group"> <div class="border-top"></div> <div class="border-right"></div> <div class="border-bottom"></div> <div class="border-left"></div> </div> <div class="btn-borders-group"> <div class="border-top"></div> <div class="border-right"></div> <div class="border-bottom"></div> <div class="border-left"></div> </div> <span class="btn-text">Start</span> </div> .btn { --ease-in-duration: 0.25s; --ease-in-exponential: cubic-bezier(0.95, 0.05, 0.795, 0.035); --ease-out-duration: 0.65s; --ease-out-delay: var(--ease-in-duration); --ease-out-exponential: cubic-bezier(0.19, 1, 0.22, 1); position: relative; width: 200px; height: 100px; line-height: 100px; text-align: center; font-size: 24px; color: #333333; background-color: #ffffff; border: 1px solid #ebebeb; cursor: pointer; transition: 0.25s; } .btn-multiple-border-stroke { border-color: transparent; } .btn-multiple-border-stroke .btn-borders-group { position: absolute; top: 0; left: 0; display: flex; justify-content: center; align-items: center; width: 100%; height: 100%; border: 1px solid #cccccc; } .btn-multiple-border-stroke .btn-borders-group:nth-child(1) { left: -8px; padding: 0 8px; } .btn-multiple-border-stroke .btn-borders-group:nth-child(2) { top: -8px; padding: 8px 0; } .btn-multiple-border-stroke .btn-borders-group:nth-child(3) { top: -4px; left: -4px; padding: 4px; } .btn-multiple-border-stroke .btn-borders-group .border-top { position: absolute; top: 0; width: 100%; height: 1px; background: #3866ff; transform: scaleX(0); transform-origin: left; } .btn-multiple-border-stroke .btn-borders-group .border-right { position: absolute; right: 0; width: 1px; height: 100%; background: #3866ff; transform: scaleY(0); transform-origin: bottom; } .btn-multiple-border-stroke .btn-borders-group .border-bottom { position: absolute; bottom: 0; width: 100%; height: 1px; background: #3866ff; transform: scaleX(0); transform-origin: left; } .btn-multiple-border-stroke .btn-borders-group .border-left { position: absolute; left: 0; width: 1px; height: 100%; background: #3866ff; transform: scaleY(0); transform-origin: bottom; } .btn-multiple-border-stroke .btn-borders-group .border-left { transition: var(--ease-out-duration) var(--ease-out-delay) cubic-bezier(0.2, 1, 0.2, 1); } .btn-multiple-border-stroke .btn-borders-group .border-bottom { transition: var(--ease-out-duration) var(--ease-out-delay) cubic-bezier(0.2, 1, 0.2, 1); } .btn-multiple-border-stroke .btn-borders-group .border-right { transition: var(--ease-in-duration) cubic-bezier(1, 0, 0.8, 0); } .btn-multiple-border-stroke .btn-borders-group .border-top { transition: var(--ease-in-duration) cubic-bezier(1, 0, 0.8, 0); } .btn-multiple-border-stroke:hover { background: transparent; } .btn-multiple-border-stroke:hover .border-top, .btn-multiple-border-stroke:hover .border-bottom { transform: scaleX(1); } .btn-multiple-border-stroke:hover .border-left, .btn-multiple-border-stroke:hover .border-right { transform: scaleY(1); } .btn-multiple-border-stroke:hover .border-left { transition: var(--ease-in-duration) cubic-bezier(1, 0, 0.8, 0); } .btn-multiple-border-stroke:hover .border-bottom { transition: var(--ease-in-duration) cubic-bezier(1, 0, 0.8, 0); } .btn-multiple-border-stroke:hover .border-right { transition: var(--ease-out-duration) var(--ease-out-delay) cubic-bezier(0.2, 1, 0.2, 1); } .btn-multiple-border-stroke:hover .border-top { transition: var(--ease-out-duration) var(--ease-out-delay) cubic-bezier(0.2, 1, 0.2, 1); }
二、其他hover动画
div{ cursor: pointer; height: 40px; line-height: 40px; text-align: center; display: inline-block; color: #333; background: #ccc; min-width: 80px; padding: 0 10px; margin: 10px; }
1、简单动画
1.1大小变化
<p>大小变化</p> <div class="example-big">big</div> <div class="example-small">small</div> .example-big,.example-small { transition: all .4s; } .example-big:hover{ transform: scale(1.2); } .example-small:hover{ transform: scale(.9); }
1.2形状变化
<p>形状变化</p> <div class="example-skew-l">skew-l</div> <div class="example-skew-r">skew-r</div> <div class="example-skew-l-t">skew-l-t</div> <div class="example-skew-r-t">skew-r-t</div> <div class="example-skew-l-b">skew-l-b</div> <div class="example-skew-r-b">skew-r-b</div> .example-skew-l, .example-skew-r, .example-skew-l-t, .example-skew-r-b, .example-skew-l-b, .example-skew-r-t{ transition: all .4s; } .example-skew-r-t, .example-skew-l-t { transform-origin: 0 100%; } .example-skew-r-b, .example-skew-l-b { transform-origin: 100% 0; } .example-skew-l:hover { transform: skew(-15deg); } .example-skew-r:hover { transform: skew(15deg); } .example-skew-l-t:hover { transform: skew(-15deg); } .example-skew-r-t:hover { transform: skew(15deg); } .example-skew-l-b:hover { transform: skew(15deg); } .example-skew-r-b:hover { transform: skew(-15deg); }
1.3旋转角度变化
<p>旋转角度变化</p> <div class="example-grow-rotate-l">grow-rotate-l</div> <div class="example-grow-rotate-r">grow-rotate-r</div> <div class="example-rotate5">rotate5</div> <div class="example-rotate15">rotate15</div> <div class="example-rotate30">rotate30</div> <div class="example-rotate60">rotate60</div> <div class="example-rotate90">rotate90</div> <div class="example-rotate180">rotate180</div> <div class="example-rotate360">rotate360</div> <div class="example-rotate-5">rotate-5</div> <div class="example-rotate-15">rotate-15</div> <div class="example-rotate-30">rotate-30</div> <div class="example-rotate-60">rotate-60</div> <div class="example-rotate-90">rotate-90</div> <div class="example-rotate-180">rotate-180</div> .example-grow-rotate-l,.example-grow-rotate-r, .example-rotate5, .example-rotate15, .example-rotate30, .example-rotate60, .example-rotate90, .example-rotate180, .example-rotate360, .example-rotate-5,.example-rotate-15, .example-rotate-30, .example-rotate-60, .example-rotate-90, .example-rotate-180{ transition: all .4s; } .example-grow-rotate-l:hover { transform: scale(1.1) rotate(4deg); } .example-grow-rotate-r:hover { transform: scale(1.1) rotate(-4deg); } .example-rotate-5:hover { transform: rotate(-5deg); } .example-rotate-15:hover { transform: rotate(-15deg); } .example-rotate-30:hover { transform: rotate(-30deg); } .example-rotate-60:hover { transform: rotate(-60deg); } .example-rotate-90:hover { transform: rotate(-90deg); } .example-rotate-180:hover { transform: rotate(-180deg); } .example-rotate5:hover { transform: rotate(5deg); } .example-rotate15:hover { transform: rotate(15deg); } .example-rotate30:hover { transform: rotate(30deg); } .example-rotate60:hover { transform: rotate(60deg); } .example-rotate90:hover { transform: rotate(90deg); } .example-rotate180:hover { transform: rotate(180deg); } .example-rotate360:hover { transform: rotate(360deg); }
1.4位移变化
<p>位移变化</p> <div class="example-t">up</div> <div class="example-b">bottom</div> <div class="example-l">left</div> <div class="example-r">right</div> .example-t,.example-bottom,.example-top,.example-right{ transition: all .4s; } .example-t:hover { transform: translate3d(0, -10px, 0); } .example-b:hover { transform: translate3d(0, 10px, 0); } .example-l:hover { transform: translate3d(-10px, 0, 0); } .example-r:hover { transform: translate3d(10px, 0, 0); }
1.5边框变化
<p>边框变化</p> <div class="example-border">border</div> <div class="example-border-in">border-in</div> .example-border,.example-border-in{ transition: all .4s; } .example-border:hover { box-shadow: 0 0 0 4px #09f, 0 0 1px transparent; } .example-border-in:hover { box-shadow: inset 0 0 0 4px #09f, 0 0 1px transparent; }
1.6阴影变化
效果图和实际有点点差别
<p>阴影变化</p> <div class="example-shadow">shadow</div> <div class="example-shadow-in">shadow-in</div> <div class="example-shadow-write">shadow-write</div> <div class="example-shadow-big">shadow-big</div> .example-shadow,.example-shadow-in,.example-shadow-write,.example-shadow-big{ transition: all .4s; } .example-shadow:hover { box-shadow: 0 0 10px #333; } .example-shadow-in:hover { box-shadow: inset 0 0 10px #333; } .example-shadow-write:hover { box-shadow: inset 0 0 20px #fff; } .example-shadow-big:hover { box-shadow: 0 10px 10px -10px rgba(0, 0, 0, 0.5); transform: scale(1.1); }
1.7透明度变化
<p>透明度变化</p> <div class="example-fade-out">fade-out</div> <div class="example-fade-in">fade-in</div> .example-fade-out,.example-fade-in{ transition: all .4s; } .example-fade-out:hover { opacity: .6; } .example-fade-in { opacity: .5; } .example-fade-in:hover { opacity: 1; }
1.8圆角变化
<p>圆角变化</p> <div class="example-rectangle">rectangle</div> <div class="example-radius">radius</div> .example-radius,.example-rectangle{ transition: all .4s; } .example-radius { border-radius: 10px; } .example-radius:hover { border-radius: 0; } .example-rectangle:hover { border-radius: 10px; }
2、颜色动画效果
2.1色块变化
<p>色块变化</p> <div class="example-fade">fade</div> <div class="example-fade-t">fade-t</div> <div class="example-fade-b">fade-b</div> <div class="example-fade-l">fade-l</div> <div class="example-fade-r">fade-r</div> <div class="example-bounce-t">bounce-t</div> <div class="example-bounce-b">bounce-b</div> <div class="example-bounce-l">bounce-l</div> <div class="example-bounce-r">bounce-r</div> <div class="example-fade-c-out">fade-c-out</div> <div class="example-fade-c-in">fade-c-in</div> <div class="example-fade-m-out">fade-m-out</div> <div class="example-fade-m-in">fade-m-in</div> <p></p> <div class="example-overline-l">overline-l</div> <div class="example-overline-r">overline-r</div> <div class="example-underline-l">underline-l</div> <div class="example-underline-r">underline-r</div> <div class="example-underline-c">underline-c</div> <div class="example-underline-c-out">underline-c-out</div> <div class="example-overline-c">overline-c</div> <div class="example-overline-c-out">overline-c-out</div> /* 色块变化 */ /*当前元素设置相对定位*/ .example-fade, .example-fade-t, .example-fade-b, .example-fade-l, .example-fade-r, .example-fade-c-in, .example-fade-m-in, .example-fade-m-out, .example-fade-c-out, .example-bounce-t, .example-bounce-b, .example-bounce-r, .example-bounce-l { position: relative; transition: all .3s; z-index: 1; } /*当前元素的:before和:after设置绝对定位*/ .example-fade:before, .example-fade-t:before, .example-fade-b:before, .example-fade-l:before, .example-fade-r:before, .example-fade-c-in:before, .example-fade-m-in:before, .example-fade-m-out:before, .example-fade-c-in:after, .example-fade-m-in:after, .example-fade-c-out:before { position: absolute; transition: all .3s; content: ""; display: block; background: #09f; z-index: -1; width: 100%; height: 100%; } /*弹跳元素:before和:after设置绝对定位和运动曲线*/ .example-bounce-t:before, .example-bounce-b:before, .example-bounce-r:before, .example-bounce-l:before { transition: all .3s; transition-timing-function: cubic-bezier(0.52, 1.7, 0.5, 0.4); position: absolute; content: ""; display: block; background: #09f; z-index: -1; width: 100%; height: 100%; } /*背景颜色和文字变化*/ .example-fade:before { top: 0; left: 0; transform: scaleX(1); opacity: 0; } .example-fade:hover:before { opacity: 1; } /*颜色从左至右变化*/ .example-fade-l:before, .example-bounce-l:before { top: 0; right: 0; transform-origin: 0 50%; transform: scaleX(0); } /*颜色从右至左变化*/ .example-fade-r:before, .example-bounce-r:before { top: 0; left: 0; transform-origin: 100% 50%; transform: scaleX(0); } /*颜色从上往下变化*/ .example-fade-t:before, .example-bounce-t:before { bottom: 0; left: 0; transform-origin: 50% 0; transform: scaleY(0); } /*颜色从下往上变化*/ .example-fade-b:before, .example-bounce-b:before { top: 0; left: 0; transform-origin: 50% 100%; transform: scaleY(0); } /*颜色垂直居中出去*/ .example-fade-m-out:before { top: 0; bottom: 0; left: 0; margin: auto; transform: scaleY(0); } /*水平居中出去*/ .example-fade-c-out:before { top: 0; right: 0; bottom: 0; left: 0; margin: auto; transform: scaleX(0); } .example-fade-c-out:hover:before { transform: scaleX(1); } /*水平居中进来*/ .example-fade-c-in:before { top: 0; left: 0; transform-origin: 0 50%; transform: scaleX(0); } .example-fade-c-in:after { top: 0; right: 0; transform-origin: 100% 50%; transform: scaleX(0); } /*垂直居中进来*/ .example-fade-m-in:before { top: 0; left: 0; transform-origin: 50% 0; transform: scaleY(0); } .example-fade-m-in:after { bottom: 0; left: 0; transform-origin: 50% 100%; transform: scaleY(0); } /*当前元素文字颜色变化*/ .example-fade:hover, .example-fade-t:hover, .example-fade-b:hover, .example-fade-l:hover, .example-fade-r:hover, .example-fade-c-in:hover, .example-fade-m-in:hover, .example-fade-m-out:hover, .example-fade-c-out:hover, .example-bounce-t:hover, .example-bounce-b:hover, .example-bounce-r:hover, .example-bounce-l:hover { color: #fff; } /*垂直方向进来的:before变化(一半)*/ .example-fade-m-in:hover:before, .example-fade-m-in:hover:after { transform: scaleY(.51); } /*垂直方向进来的:before变化*/ .example-fade-t:hover:before, .example-fade-b:hover:before, .example-fade-m-out:hover:before, .example-bounce-b:hover:before, .example-bounce-t:hover:before { transform: scaleY(1); } /*水平方向进来的:before变化(一半)*/ .example-fade-c-in:hover:before, .example-fade-c-in:hover:after { transform: scaleX(.51); } /*水平方向进来的:before变化*/ .example-fade-l:hover:before, .example-fade-r:hover:before,.example-fade-c-out:hover:before, .example-bounce-l:hover:before, .example-bounce-r:hover:before { transform: scaleX(1); }
2.2颜色上下线变化
<p>颜色上下线变化</p> <div class="example-overline-l">overline-l</div> <div class="example-overline-r">overline-r</div> <div class="example-underline-l">underline-l</div> <div class="example-underline-r">underline-r</div> <div class="example-underline-c">underline-c</div> <div class="example-underline-c-out">underline-c-out</div> <div class="example-overline-c">overline-c</div> <div class="example-overline-c-out">overline-c-out</div> /*上划线和下划线变化 当前元素样式设置相对定位*/ .example-overline-r, .example-overline-l, .example-underline-r, .example-underline-l, .example-underline-c, .example-overline-c, .example-underline-c-out, .example-overline-c-out{ position: relative; transition: all .3s; z-index: 1; } /*初始化:after:before大小和绝对定位*/ .example-overline-r:before, .example-overline-l:before, .example-underline-l:before, .example-underline-r:before, .example-underline-c:before, .example-overline-c:before, .example-underline-c:after, .example-overline-c:after, .example-underline-c-out:before, .example-overline-c-out:before { position: absolute; transition: all .3s; content: ""; display: block; background: #09f; z-index: -1; height: 4px; width: 100%; transform: scaleX(0); } /*上划线 左右出来*/ .example-overline-r:before { top: 0; left: 0; transform-origin: 100% 50%; } .example-overline-l:before { top: 0; right: 0; transform-origin: 0 50%; } /*下划线 左右出来*/ .example-underline-r:before { bottom: 0; left: 0; transform-origin: 100% 50%; } .example-underline-l:before { bottom: 0; right: 0; transform-origin: 0% 50%; } /**上划线 下划线 居中进来**/ .example-overline-c:before { top: 0; transform-origin: 0 50%; } .example-overline-c:after { top: 0; transform-origin: 100% 50%; } .example-underline-c:before { bottom: 0; transform-origin: 0 50%; } .example-underline-c:after { bottom: 0; transform-origin: 100% 50%; } .example-overline-c:before, .example-underline-c:before { left: 0; } .example-overline-c:after, .example-underline-c:after { right: 0; } /*上划线 下划线-居中出去 */ .example-overline-c-out:before { top: 0; left: 0; right: 0; margin: auto; } .example-underline-c-out:before { bottom: 0; left: 0; right: 0; margin: auto; } /*hover效果*/ .example-overline-c:hover:after, .example-overline-c:hover:before, .example-underline-c:hover:after, .example-underline-c:hover:before { transform: scaleX(.51); } .example-overline-l:hover:before, .example-overline-r:hover:before, .example-underline-l:hover:before, .example-underline-r:hover:before, .example-underline-c-out:hover:before, .example-overline-c-out:hover:before { transform: scaleX(1); }
2.3箭头变化
<p>箭头动画</p> <div class="example-arrow-l">arrow-l</div> <div class="example-arrow-r">arrow-r</div> <div class="example-arrow-t">arrow-t</div> <div class="example-arrow-b">arrow-b</div> <div class="example-arrow-l-move">arrow-l</div> <div class="example-arrow-r-move">arrow-r</div> <div class="example-arrow-t-move">arrow-t</div> <div class="example-arrow-b-move">arrow-b</div> /* 箭头动画 */ .example-arrow-l, .example-arrow-r, .example-arrow-t, .example-arrow-b, .example-arrow-l-move, .example-arrow-r-move, .example-arrow-t-move, .example-arrow-b-move{ position: relative; transition: all .3s; z-index: 1; } /*初始化箭头样式*/ .example-arrow-l:before, .example-arrow-r:before, .example-arrow-t:before, .example-arrow-b:before, .example-arrow-l-move:before, .example-arrow-r-move:before, .example-arrow-t-move:before, .example-arrow-b-move:before { position: absolute; transition: all .3s; content: ""; display: block; z-index: -1; border-style: solid; margin: auto; width: 0; height: 0; } .example-arrow-l:before, .example-arrow-l-move:before { left: 0; top: 0; bottom: 0; border-width: 10px 10px 10px 0; border-color: transparent #ccc transparent transparent; } .example-arrow-r:before, .example-arrow-r-move:before { right: 0; top: 0; bottom: 0; border-width: 10px 0 10px 10px; border-color: transparent transparent transparent #ccc; } .example-arrow-t:before, .example-arrow-t-move:before { left: 0; top: 0; right: 0; border-width: 0 10px 10px 10px; border-color: transparent transparent #ccc transparent; } .example-arrow-b:before, .example-arrow-b-move:before { left: 0; bottom: 0; right: 0; border-width: 10px 10px 0 10px; border-color: #ccc transparent transparent transparent; } .example-arrow-l-move, .example-arrow-r-move, .example-arrow-t-move, .example-arrow-b-move { transition: transform .3s; } /*hover效果*/ .example-arrow-l-move:hover { transform: translateX(10px); } .example-arrow-r-move:hover { transform: translateX(-10px); } .example-arrow-t-move:hover { transform: translateY(10px); } .example-arrow-b-move:hover { transform: translateY(-10px); } .example-arrow-l-move:hover:before, .example-arrow-l:hover:before { transform: translateX(-10px); } .example-arrow-r-move:hover:before, .example-arrow-r:hover:before { transform: translateX(10px); } .example-arrow-t-move:hover:before, .example-arrow-t:hover:before { transform: translateY(-10px); } .example-arrow-b-move:hover:before, .example-arrow-b:hover:before { transform: translateY(10px); }