`
tuquu
  • 浏览: 6223 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
社区版块
存档分类
最新评论

CSS3 Animation:background-image

 
阅读更多

对CSS3的强大一如既往的自信,自己在倒腾一个用例,就是一朵白云的两个表情切换,想想很容易实现吧,在PC上也是如此,

用两个keyframes就搞定了。

代码示例:

01 .cloud.large{
02 width: 138px;
03 height: 46px;
04 background-image: url ('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAAAuCAMAAADA1HGuAAAAWlBMVEUAAAD///////////////////////////////////////////////////////////+hU1eoYmXAjY/HFh7Im53LJSzVUFbZX2TcbXLji4/qqKv44uP88PH///8siCrvAAAAEHRSTlMAECAwQFBgcICPn6+/z9/vIxqCigAAAVFJREFUGBnNwYlWwjAUBcCbhfSFZnFX1Pv/v2ldUNQWemhIOoMStB0oNGYlJH6JfWfQiNlm/pG8Rn2bwFHBoi4bOKnXqEd5HpM71GIiTwgKVZjMk5JBBY5zZIOL23CebHBhJnOmHPghBTG4AJV4jiQapfU8l1coyvF8eYOCVOYSW5QjXCYqFKIyF4oKZQgXCygjcTmPEgxLsCjAs4SE2bSTgTP4J7KIDrNoSfySvMYvimUkzKAk85BXgLIifQgiG8cp11d7NzxwfbV3x0MOJ5nIP5JEltfjFJO53MvuGycJjjOZBbw+3n6633FaMjhCRZbxsnt8eHh6fuVRDtOEdTlM0azNYoJnbVlhXGJ1HqMMG9AY49hAhzHCBiLGCFvACN2zhZBIxk7hh8tsKVvsdWzN4ZNlc1njQ2J7W7wzXAOFgXANLAbCNRAMhGsgGFhZA403G4qlogsKb6IAAAAASUVORK5CYII=');
05 -webkit-animation: large 3s ease infinite;
06 animation: large 3s ease infinite;
07 }
08 @-webkit-keyframes large{
09 50% {
10 background-image: url ('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAAAuCAMAAADA1HGuAAAAe1BMVEUAAAD///////////////////////////////////////////////////////////+RNzuZRUmhU1eoYmWwcHO4foHAjY/HFh7Im53LJSzQqavSQkjVUFbZX2TcbXLji4/nmZ3n1NXqqKvv4uP109X38fH44uP88PH///8OmAEfAAAAEHRSTlMAECAwQFBgcICPn6+/z9/vIxqCigAAAZ9JREFUWMPNlu2WgiAQQEP8QETIat2tbT9ct5r3f8LN1TpaYJQE3D/RHH/cMwMzM5tNB4VHgpljcJLl0MEZCV15BITDBYK6sMEUpPDYdkYUIg251cwkAsZIkS0RlMENOLZkksNNhJUbgwXoYMEl0DOx4KJTnQ7WSguWRk9RYfAIgpq/xwk8CjM8pQKYAPGgPOc2bLDzhTANgT1JikmXqUlpXAzVaGQab5aLxdtOI5yb6W7KPrsryhp2m3klC5fDsJF3FClzUmz+f6p5PQxXXXiQF/3+giJyJJGsP6myOqvLQ/uvPB1e+mGq6RHn6jVVOX1W5woU/fCylob10hKL614dJoQylpIYK+uz6p++Ova98BLuTMv1cibS7O7nun5t2asftMnxP8Zna7Id+SRDVkzg8N6YrH8nrJsUTPHzsf0+3PiGPrep38WIC7esou66EVgnfPpN0V+kFCrCvgpE5nfWR8m8eD8tyB8V2cVFxIlK3jR4nvYnNebglMRxdWStFwnnKqd3Td2bAHfX3eRpCX0waYejHyrMM5WA+MCx8f4ByS0/Tk6yxsIAAAAASUVORK5CYII=');
11 }
12 100% {
13 background-image: url ('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAAAuCAMAAADA1HGuAAAAWlBMVEUAAAD///////////////////////////////////////////////////////////+hU1eoYmXAjY/HFh7Im53LJSzVUFbZX2TcbXLji4/qqKv44uP88PH///8siCrvAAAAEHRSTlMAECAwQFBgcICPn6+/z9/vIxqCigAAAVFJREFUGBnNwYlWwjAUBcCbhfSFZnFX1Pv/v2ldUNQWemhIOoMStB0oNGYlJH6JfWfQiNlm/pG8Rn2bwFHBoi4bOKnXqEd5HpM71GIiTwgKVZjMk5JBBY5zZIOL23CebHBhJnOmHPghBTG4AJV4jiQapfU8l1coyvF8eYOCVOYSW5QjXCYqFKIyF4oKZQgXCygjcTmPEgxLsCjAs4SE2bSTgTP4J7KIDrNoSfySvMYvimUkzKAk85BXgLIifQgiG8cp11d7NzxwfbV3x0MOJ5nIP5JEltfjFJO53MvuGycJjjOZBbw+3n6633FaMjhCRZbxsnt8eHh6fuVRDtOEdTlM0azNYoJnbVlhXGJ1HqMMG9AY49hAhzHCBiLGCFvACN2zhZBIxk7hh8tsKVvsdWzN4ZNlc1njQ2J7W7wzXAOFgXANLAbCNRAMhGsgGFhZA403G4qlogsKb6IAAAAASUVORK5CYII=');
14 }
15 }
16 @keyframes large{
17 50% {
18 background-image: url ('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAAAuCAMAAADA1HGuAAAAe1BMVEUAAAD///////////////////////////////////////////////////////////+RNzuZRUmhU1eoYmWwcHO4foHAjY/HFh7Im53LJSzQqavSQkjVUFbZX2TcbXLji4/nmZ3n1NXqqKvv4uP109X38fH44uP88PH///8OmAEfAAAAEHRSTlMAECAwQFBgcICPn6+/z9/vIxqCigAAAZ9JREFUWMPNlu2WgiAQQEP8QETIat2tbT9ct5r3f8LN1TpaYJQE3D/RHH/cMwMzM5tNB4VHgpljcJLl0MEZCV15BITDBYK6sMEUpPDYdkYUIg251cwkAsZIkS0RlMENOLZkksNNhJUbgwXoYMEl0DOx4KJTnQ7WSguWRk9RYfAIgpq/xwk8CjM8pQKYAPGgPOc2bLDzhTANgT1JikmXqUlpXAzVaGQab5aLxdtOI5yb6W7KPrsryhp2m3klC5fDsJF3FClzUmz+f6p5PQxXXXiQF/3+giJyJJGsP6myOqvLQ/uvPB1e+mGq6RHn6jVVOX1W5woU/fCylob10hKL614dJoQylpIYK+uz6p++Ova98BLuTMv1cibS7O7nun5t2asftMnxP8Zna7Id+SRDVkzg8N6YrH8nrJsUTPHzsf0+3PiGPrep38WIC7esou66EVgnfPpN0V+kFCrCvgpE5nfWR8m8eD8tyB8V2cVFxIlK3jR4nvYnNebglMRxdWStFwnnKqd3Td2bAHfX3eRpCX0waYejHyrMM5WA+MCx8f4ByS0/Tk6yxsIAAAAASUVORK5CYII=');
19 }
20 100% {
21 background-image: url ('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAAAuCAMAAADA1HGuAAAAWlBMVEUAAAD///////////////////////////////////////////////////////////+hU1eoYmXAjY/HFh7Im53LJSzVUFbZX2TcbXLji4/qqKv44uP88PH///8siCrvAAAAEHRSTlMAECAwQFBgcICPn6+/z9/vIxqCigAAAVFJREFUGBnNwYlWwjAUBcCbhfSFZnFX1Pv/v2ldUNQWemhIOoMStB0oNGYlJH6JfWfQiNlm/pG8Rn2bwFHBoi4bOKnXqEd5HpM71GIiTwgKVZjMk5JBBY5zZIOL23CebHBhJnOmHPghBTG4AJV4jiQapfU8l1coyvF8eYOCVOYSW5QjXCYqFKIyF4oKZQgXCygjcTmPEgxLsCjAs4SE2bSTgTP4J7KIDrNoSfySvMYvimUkzKAk85BXgLIifQgiG8cp11d7NzxwfbV3x0MOJ5nIP5JEltfjFJO53MvuGycJjjOZBbw+3n6633FaMjhCRZbxsnt8eHh6fuVRDtOEdTlM0azNYoJnbVlhXGJ1HqMMG9AY49hAhzHCBiLGCFvACN2zhZBIxk7hh8tsKVvsdWzN4ZNlc1njQ2J7W7wzXAOFgXANLAbCNRAMhGsgGFhZA403G4qlogsKb6IAAAAASUVORK5CYII=');
22 }
23 }
1 <div class="cloud large"></div>

以上代码在PC上用chrome测试妥妥的,效果还可以,直接用手机连wifi一看,完全一个静态表情啊,切到Android版的chrome

也是妥妥的,哎,这尼玛又被坑了。

后来在网上查了一下,发现background-image的“Animatable:no”

While CSS Backgrounds and Borders Module Level 3 Editor’s Draft says “Animatable: no” for

background-image at the time of writing, support for crossfading images in CSS appeared in Chrome 19 Canary.

Until widespread support arrives this can be faked via image sprites and background-position or

opacity.

引文出自:http://oli.jp/2010/css-animatable-properties

好吧,找到方向了,开始动手。开始尝试一下background-position来切换,结果不理想,只看到两个背景用位移来切换的,

一个跑马灯的效果,代码就不列举了。

继续折腾,用JS来处理,看着一堆代码,想着就麻烦。推翻重来,回到HTML和CSS上,经过一翻调整,终于整出来了在chrome

上直接用background-image的效果,分两步:

  1. 调整HTML结构,给原来HTML元素增加一个子元素
  2. 调整CSS,控制新增子元素的opacity值

 

代码示例:

01 .cloud{
02 position: absolute;
03 width: 100%;
04 height: 100%;
05 background-color: transparent;
06 background-repeat: no-repeat;
07 background-position: 0 0;
08 }
09 .cloud .switch{
10 width: 100%;
11 height: 100%;
12 opacity: 0;
13 -webkit-animation: switch 2s ease infinite;
14 animation: switch 2s ease infinite;
15 }
16 @-webkit-keyframes switch{
17 50% {
18 opacity: 1;
19 }
20 100% {
21 opacity: 0;
22 }
23 }
24 @keyframes switch{
25 50% {
26 opacity: 1;
27 }
28 100% {
29 opacity: 0;
30 }
31 }
32 .cloud.large, .cloud.large .switch{
33 width: 138px;
34 height: 46px;
35 background-image: url ('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAuCAMAAADeOBY0AAAAflBMVEUAAAD///////////////////////////////////////////////////////////////+RNzuZRUmhU1eoYmWwcHO4foHAjY/HFh7Im53LJSzQqavSQkjVUFbZX2TcbXLji4/nmZ3n1NXqqKvv4uP109X38fH44uP88PH///8stMF9AAAAEXRSTlMAABAgMEBQYHCAj5+vv8/f7/4ucL8AAAMqSURBVGje7ZrbeuIgFEYrhxCScOhpnNaxddpO637/F5yoSY0RTBACueh/Y8qF33JtILC/3iwWN97BtA7y/JIQIGgHgv1BPFkoFwqayConyaSQvJItiBKcJpNCSg29qAInkIK56oPokqaQkgkwRtDIUkhpBlEsthRqUbJLhSNKwaUdRNKYUlABl6LzaFJyfZGkQNGkEAkDESiKFFQNgSgSSQrRAMFhrgFBchhEsyhSGIyJJpNLGVOcOiyClAxgCivuIFiPJGGTSyFjUUCL77MUmUDKmLXT7nC6ASqySaQgBddEcRxairgKRJckvJQKrs3A29EVJL8aRODAUhhcH50FlII9QIAHlYK0DwuU4aQILxCJAkrhAFPBuIFQT5ALr0ZXKZ4T5aIVNykCJrPiKsV3oux2uSBSqD+IRoGkKH8WKEJIuXAzXj3c3z99jhiWYaQQCBHqL8W+jD/vlh/wubp9Mw0vT4d5EClFECnKX4r9pnG32n+83X6cDr81wydzBY+XghmvwwwbkQwiBfKRUlC2A8mpQ3VWj/2Hw1/L9uHX8AnhXEqn23nWbkVhnFimSg8EMWlvt1qr8/i9Pu66ww8fxmHzVOlLQVyfncwR5bwSgvPMfpqtN7EmS/Pw0/Ct9VQK0+cnc5rzUoiinsRWkMfu06bJV2f4Yfgw2ZNy3lBTPNCSOe3hDkk5b6jpwv3S9fz7kC/7a3lYCtEBfvDX5jtud48OCApTideDk/Wl8qABKUGcwPalqc/zxq1ZeQQJ5AS2f/Yc/xyblV0poVDqufKyXr++bx27YUcpZbB1+v6y/rt1vaR2pXCIG2aTQiODlHYpGGKHWqSo2CDcKqWILqV3I2tBMkhcno4UFZ+lMEop44NIixQCCYJNUnQCkMwshaWQkhuk4BQglVkKT8EiDVJoChBA85ECs5FCTVJwlYRl/69hMkdHKShNdaQ8tgVaKUxDymjaSiEqKch+l2uk5JA67CCFJgcpWynpUUDjHQjS6UmyRopKj1JXqAYpZwCiDlIIzCGoZtFzAMn2UvgspNDFgs4ChM9ICp+LFPEjxSaF8jkELxZ4FiD1Ov4Pwj6gn20XvJsAAAAASUVORK5CYII=');
36 }
37 .cloud.large .switch{
38 background-position: -138px 0;
39 }

 

1 <div class="cloud large"><div class="switch"></div></div>

 

搞定!测试页面:http://tid.tenpay.com/labs/example/cloud/

 

原文:http://www.tuquu.com/Tutorial/wd2631.html

  • 大小: 75 KB
分享到:
评论

相关推荐

    css3网页动态渐变背景动画特效

    为了使背景动画动态化,我们可以结合CSS3的`animation`属性。`animation`允许我们定义一系列关键帧,并随着时间的推移控制元素的样式变化。这可以通过`@keyframes`规则来实现。以下是一个简单的例子,让背景渐变颜色...

    CSS(无图片)实现页面元素颜色的渐变效果

    使用CSS的 `transition` 或 `animation` 属性,可以创建动态的渐变效果。例如,当鼠标悬停时改变渐变方向: ```css div { background-image: linear-gradient(to right, blue, red); transition: background-...

    CSS3 Sprite僵尸行走动画特效.zip

    75% { background-position: -3*frame-width 0; } 100% { background-position: 0 0; } } ``` 4. **应用动画**:最后,将`@keyframes`规则与元素关联,设置`animation`属性。`animation`属性可以同时设置多个值...

    CSS3彩色进度条加载动画_CSS3_动画特效_

    为了实现彩色效果,我们需要使用CSS3的`background`属性来设置进度条的背景颜色,并通过`width`属性控制进度条的宽度以显示进度。例如: ```css #loadingBar { width: 100%; height: 20px; background-color: #...

    CSS常用属性一览表

    以上列出的CSS属性仅为一部分,CSS还提供了许多其他功能强大的属性,如布局管理(`display`, `position`), 过渡效果(`transition`), 动画(`animation`)等,使得开发者能够创建出更加丰富多彩且交互性强的网页界面。

    纯CSS3实现的颜色渐变背景效果的实现代码.zip

    为了使背景颜色渐变更加动态,我们还可以利用CSS3的`animation`属性,结合`keyframes`规则来创建动画效果。例如,我们可以让背景颜色渐变循环播放: ```css @keyframes gradient-animation { 0% { background-...

    css3 animation transform鱼游动动画特效.zip

    &lt;head lang="en"&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;... 这是一款基于css3 animation transform属性制作的鱼游动动画特效,用background-position属性实现两条游动追逐的鱼。

    css button

    - `background-image`: 使用图像作为背景。 - `background-repeat`, `background-position`, `background-size`: 控制背景图像的重复、位置和大小。 2. 尺寸与边框: - `width`, `height`: 定义按钮的宽度和高度...

    CSS3模拟白云飘动水中船效果

    为了模拟白云飘动,我们可以为白云的`&lt;div&gt;`设置一个背景图片,然后利用CSS3的`background-position`属性配合`animation`来创建动画效果。例如,我们可以创建一个名为`cloud-animation`的动画,通过改变背景位置让...

    前端所有标签以及技术大总结

    - **border-image-stretch**: 拉伸边框图像。例如:`border-image: url(border.png) 30 30 stretch;` 图片会拉伸以适应边框的大小。 ### CSS3 背景与边框 - **background-image**: 设置背景图片。例如:`...

    纯css3 animation动画属性点击loading加载动画提示框效果代码.zip

    在CSS中,我们可以使用`background-image`或`content`属性结合`animation`来显示这些图像的动画效果。 以下是一个简单的例子,展示了如何使用CSS3的`animation`属性创建一个加载动画: ```css .loading-icon { ...

    CSS3实现的为图片添加旋转背景特效源码.zip

    此外,为了使图片作为背景并实现旋转,可以使用CSS的`background-image`属性来设置图片,`background-size`来调整图片大小,`background-repeat`控制是否平铺,以及`background-position`来决定图片在容器内的位置。...

    3种css3彩色进度条动画特效

    在本文中,我们将深入探讨如何使用CSS3创建彩色进度条动画特效,主要基于提供的资源文件。CSS3(层叠样式表第三版)是Web开发领域的一个强大工具,它提供了丰富的样式控制,包括动画和过渡效果,使我们能够构建出极...

    CSS3动画(2):mask实现line-wipe动画

    background-image: url('your-image-url'); -webkit-mask-image: linear-gradient(to right, transparent, black); mask-image: linear-gradient(to right, transparent, black); -webkit-mask-size: 100% 100%;...

    css3进度条小动画

    在CSS3中,进度条小动画是网页设计中常见的元素,用于展示任务、加载或进度的可视化指示。本文将深入探讨如何使用CSS3创建动态、美观的进度条,并结合提供的"进度条合集"文件,解析其中的代码案例。 首先,我们需要...

    简单css3鼠标滑过按钮背景动画特效

    为了创建更复杂的背景动画,我们可以使用CSS3的`background-image`属性配合渐变,或者使用`box-shadow`来实现。例如,创建一个背景颜色从左到右流动的动画: ```css .animated-btn { background-image: linear-...

    CSS3按钮炫酷动画hover样式

    5. **动画(Animation)**:CSS3的@keyframes规则允许我们创建复杂的动画。通过指定动画的关键帧,我们可以实现诸如脉冲、闪烁或旋转等效果。 ```css @keyframes pulsate { 0% { transform: scale(1); } 50% { ...

    纯CSS3鼠标滑过彩色动画按钮.zip

    在前端开发中,CSS3(层叠样式表第三版)为网页设计提供了强大的功能和丰富的效果,其中之一就是能够实现各种动态交互。标题“纯CSS3鼠标滑过彩色动画按钮”表明我们将探讨如何仅使用CSS3来创建具有鼠标悬停效果的...

    css3按钮特效制作鼠标悬停按钮动画特效

    如果想进一步增强按钮的动态效果,可以使用CSS3的`animation`属性创建更复杂的动画。例如,我们可以制作一个渐变背景的动画: ```css @keyframes gradient-change { 0% { background-image: linear-gradient(to ...

Global site tag (gtag.js) - Google Analytics