Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
發現一直有這篇孤兒沒把內容補上,趕快來補一下。
Animation on Scroll 是一款非常方便的函式庫,透過設定 data-aos 這個屬性值,替你的網站加入動畫的效果。這款動畫程式的效果,可以滿足很多客戶想要「讓網站動起來」的需求,是款很值得加入網站的小功能。
內容目錄
<?php /* 此段加入 functions.php */
function huanyi_scripts(){
wp_enqueue_script( 'aos', 'https://unpkg.com/aos@2.3.1/dist/aos.js' );
wp_enqueue_style( 'aos-style', 'https://unpkg.com/aos@2.3.1/dist/aos.css' );
}
add_action( 'wp_enqueue_scripts', 'huanyi_scripts' );
/**
* Initiate AOS
*/
function huanyi_aos(){ ?>
<script>
(function($){
$('.jetpack-lazy-image').on('load',function(){
AOS.init();
});
})(jQuery);
</script>
<?php }
}
add_action( 'wp_footer', 'huanyi_aos' );
/**
* Initiate AOS with Jetpack, 如果使用 Jetpack 的 lazy-load 功能,
* 要用 jetpack-lazy-image.onload 事件
* 才不會造成捲動深度偏差的問題
*/
function huanyi_aos_jetpack(){ ?>
<script>
(function($){
$('.jetpack-lazy-image').on('load',function(){
AOS.init();
});
})(jQuery);
</script>
<?php }
}
add_action( 'wp_footer', 'huanyi_aos_jetpack' );上述的程式碼,只是啟用 AOS 的功能而已,在一開始有提到 data-aos 這個屬性。由於 WordPress 並沒有內建 data attributes 的勾點可以使用,因此有幾種方法可以加上這個屬性。
通常在佈景主題的架構中,會有 template-tags.php、template-functions.php 或 template-parts/*.php 這些檔案,目的在於定義特定內容呈現的樣式,例如圖片。以佈景主題 Twenty twenty 中的 template-parts/content.php 這個檔案為例。
我們只要在第 30 行的 div 中,加入 aos-data=”fade-up”,未來在頁面載入後,文章就會由下往上淡入。
<?php
/**
* The default template for displaying content
*
* Used for both singular and index.
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/
*
* @package WordPress
* @subpackage Twenty_Twenty
* @since 1.0.0
*/
?>
<article <?php post_class(); ?> id="post-<?php the_ID(); ?>">
<?php
get_template_part( 'template-parts/entry-header' );
if ( ! is_search() ) {
get_template_part( 'template-parts/featured-image' );
}
?>
<div class="post-inner <?php echo is_page_template( 'templates/template-full-width.php' ) ? '' : 'thin'; ?> ">
<div class="entry-content" data-aos="fade-up">
//下略相較於直接修改範本的 PHP 檔案,由於有較多的外掛支援在頁面中插入 JavaScript,因此透過 JavaScript 與 jQuery 的難易度相對較低。以上述的例子為例,我們要將具有 entry-content 這個類別的 div 元素加上 fade-up 這個動畫效果。
(function($){
$("div.entry-content").attr({
"data-aos":"fade-up"
});
})(jQuery);除了使用 JavaScript 的外掛外,也可以將上述的 JavaScript 整合進 functions.php 中。
<?php
function huanyi_add_aos(){?>
<script>
(function($){
$("div.entry-content").attr({
"data-aos":"fade-up"
});
})(jQuery);
</script>
<?php }
add_action( 'wp-footer', 'huanyi_add_aos' );如果你的網站使用的是其他 JavaScript 函式庫,通常開發人員會加入相對應的事件,供其他開發人員觸發其他事件。
以 Lozad 這個函式庫為例,為了避免因延遲載入 (lazy load) 造成 AOS 計算捲動深度時的誤差,可以做以下的調整:
AOS.init(); //當然還是要先初始化
const observer = lozad(".lozad", {
load: function( el ){
/* 下面這一段,除了 src 之外,背景圖、srcset 都可以進行延遲載入 */
el.src = el.dataset.src ? el.dataset.src : '';
el.style.backgroundImage = el.dataset.backgroundImage ? 'url('+el.dataset.backgroundImage+')' : '';
el.srcset = el.dataset.srcset ? el.dataset.srcset : '';
/* 重點是下面 */
el.onload = function() { //相當於 Jetpack 版本中的 $('.jetpack-lazy-image').on('load',function(){});
el.classList.add('lozad-fade');
}
AOS.refreshHard(); //強制重新計算
}
});
observer.observe();AOS 算是我目前客製化佈景主題的標準配置之一。原因無他,這個函式庫使用上相當容易上手,而且也提供了客製化的空間,可以自行加入自訂的動畫樣式。而且動畫是以 CSS 的轉場動畫為主,對於網站的效能不會有太厚重的影響。推薦給大家。