# .fadeTo()

所属分类：特效 > 渐变 英文文档：.fadeTo()

## .fadeTo( duration, opacity [, complete ] )返回: jQuery

描述: 调整匹配元素的透明度。

- #### 添加的版本: 1.0.fadeTo( duration, opacity [, complete ] )

  - duration
    类型: String,Number
    一个字符串或者数字决定动画将运行多久。
  - opacity
    类型: Number
    0和1之间的数字表示目标元素的不透明度。
  - complete
    类型: Function()
    在动画完成时执行的函数。

- #### 添加的版本: 1.4.3.fadeTo( duration, opacity [, easing ] [, complete ] )

  - duration
    类型: String,Number
    一个字符串或者数字决定动画将运行多久。
  - opacity
    类型: Number
    0和1之间的数字表示目标元素的不透明度。
  - easing
    类型: String
    一个字符串，表示动画过渡使用哪种缓动函数。（译者注：jQuery自身提供"linear" 和 "swing"，其他可以使用相关的插件）
  - complete
    类型: Function()
    在动画完成时执行的函数。

`.fadeTo()` 方法通过匹配元素的不透明度做动画效果。

延时时间是以毫秒为单位的，数值越大，动画越慢，不是越快。字符串 `'fast'` 和 `'slow'` 分别代表200和600毫秒的延时。如果提供任何其他字符串，或者这个`duration`参数被省略，那么默认使用`400`毫秒的延时。和其他效果方法不同，`.fadeTo()`需要明确的指定`duration`参数。

如果提供回调函数参数，回调函数会在动画完成的时候调用。这个对于将不同的动画串联在一起按顺序排列是非常有用的。这个回调函数不设置任何参数，但是`this`指向执行动画的DOM元素。如果多个元素一起做动画效果，值得注意的是这个回调函数在每个匹配元素上执行一次。这个动画不是作为一个整体。

我们可以给任何元素做动画，比如一个简单的图片：

1 2 3 4 5 6 7 8 9 10 |
    <div id="clickme">    Click here  </div>  <img id="book" src="book.png" alt="" width="100" height="123" />  With the element initially shown, we can dim it slowly:  $('#clickme').click(function() {    $('#book').fadeTo('slow', 0.5, function() {      // Animation complete.    });  });

将`duration`设置为`0`，这个方法只是改变`opacity` CSS属性，所以`.fadeTo(0, opacity)`和`.css('opacity', opacity)`是一样的效果。

### Additional Notes:(其他注意事项：)

- 所有jQuery效果，包括`.fadeTo()`,都能通过设置`jQuery.fx.off = true`全局的关闭，效果等同于持续时间设置为0。更多信息查看 jQuery.fx.off.

## 例子:

#### Example: 把第一个段落的透明度渐变成 0.33 (33%，大约三分之一透明度), 用时 600 毫秒。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
    <!DOCTYPE html><html><head>  <script src="https://code.jquery.com/jquery-latest.js"></script></head><body>  <p>Click this paragraph to see it fade.</p> <p>Compare to this one that won't fade.</p><script>$("p:first").click(function () {$(this).fadeTo("slow", 0.33);});</script> </body></html>

#### Demo:

#### Example: 每次点击后把 div 渐变成随机透明度，用时 200 毫秒。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
    <!DOCTYPE html><html><head>  <style>p { width:80px; margin:0; padding:5px; }div { width:40px; height:40px; position:absolute; }div#one { top:0; left:0; background:#f00; }div#two { top:20px; left:20px; background:#0f0; }div#three { top:40px; left:40px; background:#00f; }</style>  <script src="https://code.jquery.com/jquery-latest.js"></script></head><body>  <p>And this is the library that John built...</p> <div id="one"></div><div id="two"></div><div id="three"></div><script>$("div").click(function () {$(this).fadeTo("fast", Math.random());});</script> </body></html>

#### Demo:

#### Example: 找到正确答案！渐变耗时 250 毫秒，并且在完成后改变字体样式。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
    <!DOCTYPE html><html><head>  <style>div, p { width:80px; height:40px; top:0; margin:0;position:absolute; padding-top:8px; }p { background:#fcc; text-align:center; }div { background:blue; }</style>  <script src="https://code.jquery.com/jquery-latest.js"></script></head><body>  <p>Wrong</p><div></div><p>Wrong</p><div></div> <p>Right!</p><div></div><script>var getPos = function (n) {  return (Math.floor(n) * 90) + "px";};$("p").each(function (n) {  var r = Math.floor(Math.random() * 3);  var tmp = $(this).text();  $(this).text($("p:eq(" + r + ")").text());  $("p:eq(" + r + ")").text(tmp);  $(this).css("left", getPos(n));});$("div").each(function (n) {  $(this).css("left", getPos(n));}).css("cursor", "pointer").click(function () {    $(this).fadeTo(250, 0.25, function () {      $(this).css("cursor", "")        .prev().css({"font-weight": "bolder",                     "font-style": "italic"});        });    }); </script> </body></html>

#### Demo: