武陵櫻花季

由於今年花況似乎很棒,所以很臨時的被耿長輩約去看,考量種種情形之後,決定週六晚上十二點就出發,一路上還算順暢,不過快到的時候就塞起來了,慢慢前進了快要一小時才知道原因,是買票入場的關口,等輪到我們時往後看是這樣的光景。

武陵農場

山路上全部都是車,進去以後首先就是找停車位了,想當然正常的停車格早就沒了,不過以往都會開放停草地,所以基本上就是找不太會影響交通的路邊停下去,結果沒停在太前面入口處,不過倒是找到一個位子意外還不錯的點,停好車後大約已經四點半了吧,由於有段櫻花道有打光的夜櫻可以看,所以先過去那邊看看,沒想到才看一下子就下起雨,所以也沒拍到什麼好照片,就回去車上等天亮了,沒想到這雨一下下整晚,我們就只好邊睡邊等雨停,大約等到九點雨好像停了才醒來開始移動,這時運氣不錯,太陽公公還出來露臉幾下。

武陵櫻花

武陵櫻花

看了一下地圖後,我們決定先過橋到離我們最近的茶園看看,我說的停車位子不錯的原因之一就是離茶園很近,那邊由於要走路過橋,所以完全不會有車子礙眼,個人覺的是武陵農場前半段最漂亮的地方了。

武陵櫻花

武陵櫻花

武陵櫻花

武陵櫻花

在茶園那邊就逛了一個多小時,接著去到入口那附近,那邊基本上就是人人人,車車車,櫻花的狀況也沒有茶園好,不過還是拍到一張不錯的照片,剛好有陽光出來一下子,所以櫻花看起來都在發光一樣,邊邊都有一圈白框。

武陵

當然人多的話,就會看到一些有趣的場景,像是有人來拍婚紗:

武陵

還有人用 iPad 拍照:

武陵櫻花

不過總之前半段其實沒中後段漂亮,所以也沒待很久,就往最後一個目標,雪山登山口移動了,不過沒想到路上還有兩處櫻花狀況不錯,而且花況比前面看到的還好,當然也有不少情侶~~

武陵櫻花

武陵櫻花

最後開車到了雪山登山口,路上的景色蠻漂亮的,不過最後那段路的路況超差的,車子開起來真是心驚:

雪山登山口

雪山登山口

雪山登山口

這次行程可惜處之一當然是天氣,不過有些畫面也是要下完雨,放晴那時才看的到,一直都是藍天白雲的天氣也不一定就是好,第二當然是花況已經比較差了,要找到完整的櫻花其實不太容易,不過也托福可以看到櫻吹雪,還有一些滿地花瓣的畫面可以看,明年可能會開始總量管制,變成自己的小汽車不能開上去,這樣要上雪山登山口就會很困難,也很慶幸這次有上去看看,雖然天氣不好沒有去看日出就是(半夜開車上去應該超恐怖)。


jQuery.queue

jQueryqueue 是存在很久的東西了,不過我到最近才去了解它到底是用來作什麼的,其實,基本上就和一般的 queue 一樣,只是 jQuery 預設使用它來處理所有的動畫效果的順序,像是 fadeIn、fadeOut 還有最重要的 animate ,這些特效的動作都會丟到一個叫 fx 的 queue 裡面,然後照順序執行,所以下面的程式碼會讓一個元素先 fade in 再 fade out,而不會發生兩個動畫效果打架的情形:

$('#id').fadeIn().fadeOut();

也不用寫成 callback function 的方式:

$('#id').fadeIn(function () {
    $(this).fadeOut();
});

如果你是要把元素 fade out,然後改裡面文字後再讓它 fade in,以前用 callback 的寫法會寫成:

$('#id').fadeOut(function () {
    $(this).html('new content');
    $(this).fadeIn();
});

但是好一點的作法應該善用 queue:

$('#id')
    .fadeOut()
    .queue(function () {
        $(this).html('new content');
        $(this).dequeue();
    })
    .fadeIn();

這樣不知道看不看的出好在哪?讓我來把要做的動作複雜一點好了,我要淡出,改內容,淡入,然後接著右移 500px、加上 active 的 class,再移動回來,然後再把內容改變一次,用 callback 的寫法:

$('#id').fadeOut(function () {
    $(this).html('new content');
    $(this).fadeIn(function () {
        $(this).animate({left: '+=500'}, function () {
            $(this).addClass('active');
            $(this).animate({left: '-=500'}, function () {
                $(this).html('even new content');
            });
        });
    });
});

如果用 queue:

$('#id')
    .fadeOut()
    .queue(function () {
        $(this).html('new content');
        $(this).dequeue();
    })
    .fadeIn()
    .animate({left: '+=500'})
    .queue(function () {
        $(this).addClass('active');
        $(this).dequeue();
    })
    .animate({left: '-=500'})
    .queue(function () {
        $(this).html('even new content');
        $(this).dequeue();
    });

眼尖的人大概馬上就可以發現,用 queue 程式碼變多了!不過這其實不是重點,重點其實是縮排的階層減少了,而且使用 queue 的程式碼,看起來就是一個步驟接著一個步驟,和使用 callback 的階層的關係不一樣,而且除了看起來比較好之外其實還有不少優點,首先是如果要修改連續動作的順序或是內容,使用 queue 的顯然比較簡單,二是還可以配合 delay 來讓動作之間有個暫停,三是可以用 clearQueue 來把整串動作清掉,用 callback 的話,因為執行到各個 animate 的時間不是同步的,所以用 clearQueue 可能會清不乾淨。所以在使用 jQuery 動畫效果時,正確的配合 queue 來做,會讓程式碼的可維護度提昇許多,大家都應該來用一下~


更之前的文章