精华内容
下载资源
问答
  • SwiftUI 动画之如何给Text设置淡入淡出效果 本文价值收获 看完本文后,您将能够作出下面的界面 看完本文您将掌握的技能 掌握 ZStack 掌握 opacity 掌握 animation 掌握 delay 基础知识 ZStack 覆盖其子项的...

    实战需求

    SwiftUI 动画之如何给Text设置淡入淡出效果

    本文价值与收获

    看完本文后,您将能够作出下面的界面

    截屏2020-08-23 上午8.38.04.png

    Jietu20200823-083834.gif

    看完本文您将掌握的技能

    • 掌握 ZStack
    • 掌握 opacity
    • 掌握 animation
    • 掌握 delay

    基础知识

    ZStack

    覆盖其子项的视图,使子项在两个轴上对齐。

    @frozen struct ZStack<Content> where Content : View
    

    主题

    创建堆栈

    1、init(alignment: Alignment, content: () -> Content)

    创建具有给定对齐方式的实例。

    2、struct Alignment

    两轴对齐。


    animation(_😃

    将给定的动画应用于此视图中的所有可设置动画的值。

    func animation(_ animation: Animation?) -> some View
    

    返回值

    封装此视图并将动画应用于视图中使用的所有可设置动画的值的视图。

    参数

    • animation
      应用于此视图中的动画值的动画。

    opacity 设置视图透明度

    设置此视图的透明度。

    func opacity(_ opacity: Double) -> some View
    

    讨论区

    应用不透明度以显示在另一个视图后面的视图或不强调视图。
    将opacity(_ :)修改器应用于已经对其不透明度进行了转换的视图时,该修改器会乘以基础不透明度转换的效果。
    下面的示例显示配置为重叠的黄色和红色矩形。顶部黄色矩形的不透明度设置为50%,从而可以看到底部矩形的遮挡部分:

    struct Opacity: View {
        var body: some View {
            VStack {
                Color.yellow.frame(width: 100, height: 100, alignment: .center)
                    .zIndex(1)
                    .opacity(0.5)
    
                Color.red.frame(width: 100, height: 100, alignment: .center)
                    .padding(-40)
            }
        }
    }
    

    参量

    • opacity 不透明
      介于0(完全透明)和1(完全不透明)之间的值。

    返回

    设置该视图透明性的视图。


    实战代码

    import SwiftUI
    
    struct ContentView: View {
        var body: some View {
            DemoView()
        }
    }
    
    struct DemoView: View {
    
        @State var changed = false
    
        func changeText() {
            self.changed.toggle()
        }
    
        var body: some View {
            VStack {
                ZStack {
                    Text("白日依山尽,黄河入海流。").opacity(changed ? 0.0 : 1.0)
                        .animation(Animation.easeInOut.delay(changed ? 0.0 : 0.5))
                    Text("欲穷千里目,更上一层楼。").opacity(changed ? 1.0 : 0.0)
                        .animation(Animation.easeInOut.delay(changed ? 0.5 : 0.0))
                }
    
                Button("下一句", action: changeText)
            }
        }
    }
    
    

    加入我们一起学习SwiftUI

    QQ:3365059189
    SwiftUI技术交流QQ群:518696470

    展开全文
  • 淡入淡出效果,在日常项目中经常用到,可惜原生JS没有类似的方法,而有时小的页面并不值得引入一个jQuery库,所以就自己写了一个,已封装,有用得着的朋友,可以直接使用。代码中另附有一个设置元素透明度的方法, ...
  • Shader实现物体淡入淡出

    千次阅读 2018-06-01 10:23:04
    游戏场景中淡入淡出的效果经常会用在往前走的场景中,越往前场景越模糊,...Unity 3D教程: 1 设置淡入的起始距离和结束距离 2 在vertex阶段计算物体顶点相机的距离 3 根据距离计算alpha 代码撸起: // Upgra...
    游戏场景中淡入淡出的效果经常会用在往前走的场景中,越往前场景越模糊,事实上这种效果就是物体从实变透明的渐变过程。针对这样的游戏场景效果,丝路小编也为你找到了如何实现的教程,用Shader来做这样的效果是非常简单的。
    Unity 3D教程:
        1 设置淡入的起始距离和结束距离
        2 在vertex阶段计算物体顶点与相机的距离

        3 根据距离计算alpha

        

    代码撸起:

     // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'


    Shader "Custom/Fade" 
    {
    Properties
    {
            _MainTex("Texture", 2D) = "white" { }
            _FadeDistanceNear("Near fadeout dist (View Space)", float) = 35
            _FadeDistanceFar("Far fadeout dist (View Space)", float) = 40
        }
        SubShader
        {
            Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" }
            ZWrite On
            Blend SrcAlpha OneMinusSrcAlpha
            pass
            {
    CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag
    #include "UnityCG.cginc"
    sampler2D _MainTex;
    float4 _MainTex_ST;


    struct v2f 
    {
      float4 pos : SV_POSITION;
      float2 uv : TEXCOORD0;
      float fade : TEXCOORD1;
    };


    float _FadeDistanceNear;
    float _FadeDistanceFar;

    v2f vert(appdata_base v)
    {
    v2f o;
    o.pos = UnityObjectToClipPos(v.vertex);
    o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
    //相机坐标系的物体坐标
    float3 posView = mul(UNITY_MATRIX_MV,v.vertex).xyz;
    //计算与相机距离
    float dis = length(posView);
    //计算fade
    o.fade = 1 - saturate((dis - _FadeDistanceNear) / (_FadeDistanceFar - _FadeDistanceNear));
    return o;
    }


    float4 frag(v2f i) : COLOR
    {
       float4 texCol = tex2D(_MainTex,i.uv);
       float4 outp = texCol;
       //fade作为alpha
       return float4(outp.rgb,i.fade);
    }
    ENDCG
        }
        }

    }

    转自:https://www.taidous.com/thread-73152-1-3.html

    展开全文
  • javascript中,如何让一个元素(比如div)运动起来呢? 设置基本的样式,一定要让div有定位( 当然用margin的变化也可以让元素产生运动效果 ); 1 2 div { ...

    javascript中,如何让一个元素(比如div)运动起来呢

    设置基本的样式,一定要让div有定位( 当然用margin的变化也可以让元素产生运动效果 );

    1 <style>
    2        div {
    3            width: 100px;
    4            height: 100px;
    5            background: red;
    6            position: absolute;
    7            left: 0px;
    8        }
    9 </style>

    基本的结构:

    1     <input type="button" value="动起来"/>
    2     <div id="box"></div>

    当我们点击,这个按钮的时候,要让div运动起来,其实就是让div的left值持续变化,那么div就会产生运动效果,我们先让left改变,再让他持续改变

    1     window.onload = function(){
    2         var oBtn = document.querySelector( "input" ),
    3             oBox = document.querySelector( '#box' );
    4         oBtn.onclick = function(){
    5             oBox.style.left = oBox.offsetLeft   10   'px';
    6         }
    7     }

    那么每当我点击按钮的时候,div的left值就会在原来的基础上加上10px。这里也可以用获取非行间样式的方法获取left的值再加上10px,也可以达到效果

     1 function css(obj, attr) {
     2     if (obj.currentStyle) {
     3         return obj.currentStyle[attr];
     4     } else {
     5         return getComputedStyle(obj, false)[attr];
     6     }
     7 }
     8 window.onload = function () {
     9     var oBtn = document.querySelector("input"),
    10         oBox = document.querySelector('#box');
    11     oBtn.onclick = function () {
    12         oBox.style.left = parseInt( css( oBox, 'left' ) )   10   'px';
    13     }
    14 }

    offsetLeft与获取非行间样式left的值 有什么区别呢?

    offsetLeft没有px单位,而left是有px单位的

    1 oBtn.onclick = function () {
    2         // alert( css( oBox, 'left' ) ); //0px
    3         alert( oBox.offsetLeft ); //0
    4     }

    现在div是点击一下动一下,我们让他持续动起来,怎么做? 加上定时器

    1     oBtn.onclick = function () {
    2         setInterval( function(){
    3             oBox.style.left = oBox.offsetLeft   10   'px';
    4         }, 1000 / 16 );
    5     }

    当我们点击按钮时候,div就会不停的向左运动,怎么让他停下来呢?停下来,肯定是需要条件的,比如,我们让他跑到500px的时候停下来

     1 var timer = null;
     2     oBtn.onclick = function () {
     3         timer = setInterval( function(){
     4             if ( oBox.offsetLeft == 500 ) {
     5                 clearInterval( timer );
     6             }else {
     7                 oBox.style.left = oBox.offsetLeft   10   'px';
     8             }
     9         }, 1000 / 16 );
    10     }

    这样,我们就可以让div停在500px的位置,这里如果我们把步长10 改成 7或者8,你会发现停不下来了,为什么呢?因为会跳过500px这个判断条件

    0, 7, 14, 21 .... 280, 287, 294, 301, ... 490, 497, 504. 从497变成504跳过了500px,所以div停不下来,那怎么办呢?修改下判断条件就可以了.

     1 oBtn.onclick = function () {
     2     timer = setInterval( function(){
     3         if ( oBox.offsetLeft >= 500 ) {
     4             oBox.style.left = 500   'px';
     5             clearInterval( timer );
     6         }else {
     7             oBox.style.left = oBox.offsetLeft   7   'px';
     8         }
     9     }, 1000 / 16 );
    10 }

     把条件变成>=500 清除定时器, 同时还要加上这句代码oBox.style.left = 500 'px',让他强制被停在500px, 否则div就不会停在500px, 而是504px了,还有一个问题,如果在div运动的过程中,你不停的点击按钮,会发现, div开始加速运动了,而不是每次加10px了,这又是为什么呢?这是因为,每次点击一下按钮,就开了一个定时器,每次点击一个按钮就开了一个定时器,这样就会有多个定时器叠加,那么速度也会产生叠加,所以div开始加速了,那么我们要让他保持10px的速度,意思就是不要让定时器叠加,更通俗点说就是确保一个定时器在开着。应该怎么做呢?

     1 oBtn.onclick = function () {
     2     clearInterval( timer );
     3     timer = setInterval( function(){
     4         if ( oBox.offsetLeft >= 500 ) {
     5             oBox.style.left = 500   'px';
     6             clearInterval( timer );
     7         }else {
     8             oBox.style.left = oBox.offsetLeft   7   'px';
     9         }
    10     }, 1000 / 16 );
    11 }

    只需要在每次点击按钮的时候,清除之前的定时器就可以了,这样就能确保始终一个定时器开着,至此,一个最基本的匀速运动结构就完成了,那么我们可以把他封装成函数

     1         function animate(obj, target, speed) {
     2                 clearInterval(timer);
     3                 timer = setInterval(function () {
     4                     if (obj.offsetLeft == target) {
     5                         clearInterval(timer);
     6                     } else {
     7                         obj.style.left = obj.offsetLeft   speed   'px';
     8                     }
     9                 }, 30);
    10             }

    有了这个函数之后,我们来小小的应用一下。

    http://www.jiathis.com/getcode

    打开这个网站,你注意看他右边有个侧栏式效果(分享到),这种特效在网站上很普遍

     

     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <title>侧边栏 - by ghostwu</title>
     6     <style>
     7         #box {
     8             width: 150px;
     9             height: 300px;
    10             background: red;
    11             position: absolute;
    12             left: -150px;
    13             top: 50px;
    14         }
    15 
    16         #box div {
    17             width: 28px;
    18             height: 100px;
    19             position: absolute;
    20             right: -28px;
    21             top: 100px;
    22             background: green;
    23         }
    24     </style>
    25     <script>
    26         window.onload = function () {
    27             var timer = null;
    28             var oBox = document.getElementById("box");
    29             oBox.onmouseover = function () {
    30                 animate(this, 0, 10);
    31             }
    32             oBox.onmouseout = function () {
    33                 animate(this, -150, -10);
    34             }
    35             function animate(obj, target, speed) {
    36                 clearInterval(timer);
    37                 timer = setInterval(function () {
    38                     if (obj.offsetLeft == target) {
    39                         clearInterval(timer);
    40                     } else {
    41                         obj.style.left = obj.offsetLeft   speed   'px';
    42                     }
    43                 }, 30);
    44             }
    45         }
    46     </script>
    47 </head>
    48 <body>
    49 <div id="box">
    50     <div>分享到</div>
    51 </div>
    52 </body>
    53 </html>

    再来一个淡入淡出的效果:

    当鼠标移上去之后,透明度变成1

     

     1 <!doctype html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>淡入淡出 - by ghostwu</title>
     6     <style>
     7         img {
     8             border: none;
     9             opacity: 0.3;
    10             filter: alpha(opacity:30);
    11         }
    12     </style>
    13     <script>
    14         window.onload = function () {
    15             var timer = null;
    16             var oImg = document.getElementById("img");
    17             oImg.onmouseover = function(){
    18                 animate( this, 100, 10 );
    19             }
    20             oImg.onmouseout = function(){
    21                 animate( this, 30, -10 );
    22             }
    23             //alpha=30 --> 100
    24             function animate(obj, target, speed) {
    25                 clearInterval(timer);
    26                 var cur = 0;
    27                 timer = setInterval(function () {
    28                     cur = css( obj, 'opacity') * 100;
    29                     if( cur == target ){
    30                        clearInterval( timer );
    31                     }else {
    32                         cur  = speed;
    33                         obj.style.opacity = cur / 100;
    34                         obj.style.filter = "alpha(opacity:"   cur   ")";
    35                     }
    36                 }, 30);
    37             }
    38 
    39             function css(obj, attr) {
    40                 if (obj.currentStyle) {
    41                     return obj.currentStyle[attr];
    42                 } else {
    43                     return getComputedStyle(obj, false)[attr];
    44                 }
    45             }
    46         }
    47     </script>
    48 </head>
    49 <body>
    50 <img src="./img/h4.jpg" alt="" id="img"/>
    51 </body>
    52 </html>

     

    展开全文
  • 7.2.1影片中的诗情画意——淡入淡出 的艺术字 7.2.2动感十足——缩放动画效果 7.2.3片尾演员表——制作会移动的文字 7.3UIeftdCOOL3D——制作 3D动画文字 7.4字幕制作 7.4.1台词对白——简单对白字幕 7.4.2MTV歌词...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    4 <br>0008 为程序设置版本和帮助信息 4 <br>0009 设置Windows应用程序启动窗体 5 <br>0010 设置Web应用程序起始页 5 <br>0011 如何设置程序的出错窗口 5 <br>0012 如何进行程序调试 6 ...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0213 如何设置光标到文本框的末尾 141 0214 如何改变表格列的矩形区域颜色 142 0215 控制在文本框中只能输入两位小数 143 0216 如何把选择的文件图标显示在列表中 143 0217 根据表格中的数据长度自动调整...
  • 5.7.2 淡入淡出 83 5.7.3 半透明 83 5.7.4 光照 84 5.7.5 动态光照 85 5.7.6 光照系统 88 5.7.7 天气效果 88 第六章 加速游戏的魔法 89 6.1 内嵌汇编简介 89 6.2 基本指令 90 6.3 算术指令 91 6.4 逻辑移位...
  • Delphi7应用编程150例

    2018-04-05 15:23:33
    实例30 图片的淡入淡出效果 84 实例31 翻转图片 88 实例32 抓取并显示本程序中的鼠标形状 91 实例33 抓取并显示其他程序中的鼠标形状 93 实例34 在tpanel组件中显示图像 94 实例35 图像放大镜的制作 98 实例36 不用...
  • 实例246 淡入淡出显示窗体 实例247 半透明显示窗体 实例248 制作立体窗口阴影效果 6.4 对话框的背景 实例249 应用程序背景桌面融合 实例250 位图背景窗体 实例251 渐变色背景窗体 实例252 随机更换背景的...
  • 实例246 淡入淡出显示窗体 实例247 半透明显示窗体 实例248 制作立体窗口阴影效果 6.4 对话框的背景 实例249 应用程序背景桌面融合 实例250 位图背景窗体 实例251 渐变色背景窗体 实例252 随机更换背景的...
  • 淡入淡出音效;  ◆基本功能  1. 多种选歌方式,包括拼音选歌、歌星选歌、分类选歌、新歌推荐、排行榜……等等;  2. 二级筛选:无论是查找歌曲,还是查找歌星,都还可以在搜索结果中,按照拼音进行再次筛选...
  • 实例071 如何将字节单位B转换成GB、MB 和KB 108 实例072 身份证号从15位升到18位算法 109 第3章 面向对象编程思想 111 3.1 面向对象家族核心——类类成员 112 实例073 面向对象编程核心——类、对象和引用 112 ...
  • 实例071 如何将字节单位B转换成GB、MB 和KB 108 实例072 身份证号从15位升到18位算法 109 第3章 面向对象编程思想 111 3.1 面向对象家族核心——类类成员 112 实例073 面向对象编程核心——类、对象和引用 112 ...
  • 实例071 如何将字节单位B转换成GB、MB 和KB 108 实例072 身份证号从15位升到18位算法 109 第3章 面向对象编程思想 111 3.1 面向对象家族核心——类类成员 112 实例073 面向对象编程核心——类、对象和引用 112 ...
  • PowerPoint.2007宝典 8/10

    2012-04-01 18:39:23
    1.2.4 更多图形照片格式化选择 9 1.2.5 更多文本格式化选项 10 1.2.6 颜色、字体和效果主题 10 1.2.7 SmartArt 11 1.2.8 更出色的图表工具 12 1.2.9 自定义幻灯片版式 13 1.3 开始使用PowerPoint 13...
  • PREMIERE.PRO.CS3宝典.pdf

    2013-02-18 10:02:03
    0.2 理解Premiere Pro如何工作 2 0.3 创建自己的第一份视频作品 3 0.3.1 建立一个Premiere Pro项目 4 0.3.2 编排作品元素 7 0.3.3 尝试使用时间线面板 9 0.3.4 展开轨道 9 0.3.5 创建迭化特效 14 0.3.6 编辑Airport...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
    6.13 秘诀:视图的淡入淡出 185 6.14 秘诀:视图交换 186 6.15 秘诀:翻转视图 187 6.16 秘诀:使用Core Animation Transitions 188 6.17 秘诀:一般的Core Animation调用 190 6.18 翻页过渡 192 6.19 秘诀...
  • jQuery权威指南-源代码

    2013-11-11 14:36:34
    5.3 淡入淡出/135 5.3.1 fadeIn()fadeOut()方法/135 5.3.2 fadeTo()方法/137 5.4 自定义动画/139 5.4.1 简单的动画/140 5.4.2 移动位置的动画/141 5.4.3 队列中的动画/144 5.4.4 动画停止和延时/146 5.5 ...
  • 1.2.2如何设置系统环境变量6 1.2.3编译命令的使用8 1.2.4解释执行命令的使用10 1.2.5UltraEdit的使用11 1.3一个简单的Java应用程序14 1.4一个简单的Java小程序16 1.5本章小结18 第2章Java语言基础19 2.1Java...
  • jQuery详细教程

    2013-04-25 14:16:42
    提示:jQuery 使用的语法是 XPath CSS 选择器语法的组合。在本教程接下来的章节,您将学习到更多有关选择器的语法。 文档就绪函数 您也许已经注意到在我们的实例中的所有 jQuery 函数位于一个 document ready ...
  • flash shiti

    2014-03-14 10:32:41
    43.下图中哪几项可以打开平滑整平工具? A. 从附属选项中挑选 和 钮 B. 从附属选项中挑选 和 钮 C. 选取Insert菜单下的Smooth命令和Straighten命令 D. 选取Modify菜单下的Smooth命令和Straighten命 44.如何使...
  • PotPlayer v1.5 绿色版

    2010-08-14 16:47:50
     + 添加字幕淡出淡入效果  + 添加字幕可输出在图表层模式功能  + 添加 MadVR 渲染器  + 添加播放在线媒体时的滑块定位功能  + 添加播放列表专辑功能  + 添加播放列表临时队列功能  + 添加 MultiThread H.264 ...
  • Java开发技术大全(500个源代码).

    热门讨论 2012-12-02 19:55:48
    示例描述:本章演示如何开始使用JDK进行程序的开发。 HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 ...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

如何设置淡入与淡出