2019年11月12日 星期二

手機的 safari, chrome 瀏覽器 100vh 的問題

最近在寫的網站因為需要把內容鎖定在一個頁面的高度,本來在電腦版很自然會想到用 100vh 去設定,但在 safari 會遇到一個問題就是你預期他高度是一個螢幕高,可是他真的是一個螢幕高,也就是手機瀏覽器的 header 跟底下的 nav 會把螢幕蓋掉,這樣就會發生你開的時候有一部分被遮掉了,這個用這張圖來看就很清楚。



查了一下這在 safari 是一個一直存在的問題,後來連手機的 chrome 也會有這樣的情況,還好後來有找到方法試了一下有用就紀錄一下。

css 要改這樣
.my-element {
  height: 100vh; /* Fallback for browsers that do not support Custom Properties */
  height: calc(var(--vh, 1vh) * 100);
}

再加一段 js 去判斷要調整的高度。
// First we get the viewport height and we multiple it by 1% to get a value for a vh unit
let vh = window.innerHeight * 0.01;
// Then we set the value in the --vh custom property to the root of the document
document.documentElement.style.setProperty('--vh', `${vh}px`);

有興趣研究原理的話可以看這篇:
The trick to viewport units on mobile
Read more

2019年11月9日 星期六

抓取 Instagram(ig) 特定使用者與 hashtag 的照片



因為想要在網站上放特定 ig hashtag 的照片,本來從 api 去研究,但測了半天都抓不到 ig 要我抓的東西,繼續找資料的同時找到了原來有人已經寫好不用透過 api 的方式抓取照片的 plugin了,簡單測試之後發現真的可以用所以就拿來放到網站上了。

外掛網址:instastory.js

因為是 jquery 的 plugin,記得要先讀入 jquery,然後再把 plugin 讀進來。



準備一個照片要讀進來的容器。

然後直接執行,前面加 # 就是讀取特定 hashtag,加 @ 就是讀取特定帳號。

$(".container").instastory({
  get: "#yoga" // or "@username"
});
$(".container").instastory("#yoga");


另外可以設定的值包含:
limit: 6 //想要讀取的照片數
imageSize: 240 //可填入 50, 240, 320, 480, 640


也可以設定樣板:
這些則是每張照片的變數

{{accessibility_caption}}
{{caption}}
{{comments}}
{{image}}
{{likes}}
{{link}}



Read more

2019年11月8日 星期五

使用 javascript SDK 來做 FB/Google 的社群登入

現在網站為求方便,許多都會讓使用者可以用社群網站登入減少認證的麻煩,這邊來筆記一下該怎麼使用 FB 跟 Google 登入的方法。

Google


google 的話要先到 Google API 服務的地方申請一個新的憑證。



接著可以設定一下容易辨識的名字,就可以拿 api 的 id 跟密鑰了。





因為我們是要用 javascript 登入,所以這邊設定網址就不是這麼重要,再來就是實作登入了。

放一顆按鈕:


初始化 google javascript SDK


let Google_appId = "*****.apps.googleusercontent.com";

// Called when Google Javascript API Javascript is loaded
        function HandleGoogleApiLibrary() {
            // Load "client" & "auth2" libraries
            gapi.load('client:auth2', {
                callback: function () {
                    // Initialize client & auth libraries
                    gapi.client.init({
                        clientId: Google_appId,
                        scope: 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/plus.me'
                    }).then(
                        function (success) {
                            // Google Libraries are initialized successfully
                            // You can now make API calls 
                            console.log("Google Libraries are initialized successfully");
                        },
                        function (error) {
                            // Error occurred
                            console.log(error);// to find the reason 
                        }
                    );
                },
                onerror: function () {
                    // Failed to load libraries
                    console.log("Failed to load libraries");
                }
            });
        }



        function GoogleLogin() {
            // API call for Google login  
            gapi.auth2.getAuthInstance().signIn().then(
                function (success) {
                    // Login API call is successful 
                    console.log(success);
                    let Google_ID = success["El"];
                   //這邊可以寫抓到登入資訊後要做的事,比如將會員資料寫到資料庫之類的
                    
                },
                function (error) {
                    // Error occurred
                    // console.log(error) to find the reason
                    console.log(error);
                }
            );

        }

接著就可以這樣拿到 google 登入後的資料了。
// API call to get user profile information
gapi.client.request({ path: 'https://www.googleapis.com/plus/v1/people/me' }).then(
 function(success) {
  // API call is successful

  var user_info = JSON.parse(success.body);

  // user profile information
  console.log(user_info);
 },
 function(error) {
  // Error occurred
  // console.log(error) to find the reason
 }
);

參考:Google Login with Javascript API


Facebook


首先也是先到 Facebook Developer 申請一個 app,並設定一下要用的網域以及拿 app id 及金鑰。


接著一樣放一顆 fb 登入的按鈕


寫 js
//應用程式編號,進入 https://developers.facebook.com/apps/ 即可看到
        let FB_appID = "";

        //FB Login 官方文件:https://developers.facebook.com/docs/facebook-login/web

        // Load the Facebook Javascript SDK asynchronously
        (function (d, s, id) {
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) return;
            js = d.createElement(s); js.id = id;
            js.src = "https://connect.facebook.net/en_US/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));

        window.fbAsyncInit = function () {
            FB.init({
                appId: FB_appID,//FB appID
                cookie: true,  // enable cookies to allow the server to access the session
                
                xfbml: true,  // parse social plugins on this page
                version: 'v5.0' // use graph api version
            });

        };

        //使用自己客製化的按鈕來登入
        function FBLogin() {
            
            FB.login(function (response) {
                //debug用
                console.log(response);
                if (response.status === 'connected') {
                    //user登入成功
                    //抓userID
                    let fb_id = response["authResponse"]["userID"];
                    //接著可以對帳號做處理

                   
                } else {
                    // user FB取消授權
                    alert("Facebook帳號無法登入");
                }
            }, { scope: 'public_profile,email' });

        }

完成。
Read more

2019年11月6日 星期三

將 After Effect 轉 svg 的工具套件- bodymovin



After Effect 是很多人在製作動畫時的好幫手,而 svg 的動畫近年來也在網頁上有越來越吃重的表現,但以往 AE 只能輸出影片,手寫 svg 動畫又太耗時,而現在有 bodymovin 這個工具就可以幫我們同時解決這兩個問題了。

首先先到這邊下載套件

下面有幾個安裝的方法,安裝完後把 AE 製作好的動畫依指定的格式匯出就可以了。

接著到網頁開發者這端,將 js plugin 讀入:


接著像這樣把 AE 匯出的 json 檔讀入就可以了。
lottie.loadAnimation({
  container: element, // the dom element that will contain the animation
  renderer: 'svg',
  loop: true,
  autoplay: true,
  path: 'data.json' // the path to the animation json
});

官方有提供一些既有的 json 檔讓大家測試:LottieFiles

codepen 也有一些範例可以給大家看


See the Pen
The Chameleon from Null Island
by kittons (@airnan)
on CodePen.

Read more

2019年10月31日 星期四

2019年10月30日 星期三

國立台灣大學雲與氣膠研究室 預報產品 網頁

國立台灣大學雲與氣膠研究室 預報產品

因為最近超忙的所以是請學生幫忙完成的,看到訓練出來的學生馬上就能上工真是讓人開心的事。

本來拿到原本網頁的時候是超陽春的而且 UI 很糟糕的頁面,後來幫他們重新規劃後就是現在這個版本,其實我還是好想做跟天氣相關的網站啊,找時間來做吧。

網址:
國立台灣大學雲與氣膠研究室 預報產品
Read more

2019年10月27日 星期日

2019年10月26日 星期六

再見 La new 高熊/ Lamigo 桃猿

超級活力熊

今年最後知道 Lamigo 要轉賣給日本樂天後,雖然覺得不捨但也有想過總是會有這天的到來,真的非常感謝劉家父子這十幾年來對中華職棒的貢獻。

跟 Lamigo 的前身 La new 熊有一些淵源,當初忘了什麼方式被當時在 La new 高熊服務的朋友找上我幫忙繪製一些活力熊的表情符號和偶爾一些的宣傳圖,後來也有幫忙弄一些他們企業的宣傳品。很感謝當時的朋友給我這個機會,讓我除了可以有更多的作品也有機會從他那邊了解企業做行銷和公關的一些知識。

後來雖然他離開後我也就幾乎沒有再接觸他們公司的案子,但也因為他讓我後來有機會有些動力去做我想做的事情,即使我們後來不是很常見面,但也大概一年會約個一次出來聊個天談談近況,內心總是有些願望希望能夠持續實現,朋友們就繼續努力吧。

也因為朋友的關係跟劉董事長有過一面之緣,當時覺得他真的是一個很熱情且溫暖的長輩,最後也祝福 La new 企業以及之後接手的樂天都能持續發光發熱。
Read more

2019年10月24日 星期四

2019年10月23日 星期三

2019年10月22日 星期二

2019年10月21日 星期一

2019年10月19日 星期六

2019年10月18日 星期五

2019年10月17日 星期四

2019年10月16日 星期三

facebook 粉絲專頁排程發文方式

fb 最近改版把原本在貼文的時候可以直接設定排程的功能拿掉,不知道是暫時的或是永久的,不過還好這功能也不是真的拿掉,我們可以從別的地方進入排程的地方。

首先從上面的頁籤進入發佈工具。


接著點選建立就可以用排程功能了。
Read more

2019年10月15日 星期二

2019年10月14日 星期一

2019年10月13日 星期日

2019年10月11日 星期五

2019年10月10日 星期四

2019年10月6日 星期日

2019年10月3日 星期四

2019年9月27日 星期五

2019年9月24日 星期二

2019年9月23日 星期一

2019年9月22日 星期日

2019年9月20日 星期五

[Robot 魂] 維爾賓(ヴェルビン)(ナの国近衛騎士団長仕様)

P1200635

維爾賓(ヴェルビン)是《聖戰士丹拜因》(聖戦士ダンバイン)裡的機械設計負責本作機設的設計師「出渕裕」,事後在自己的書籍《AURA PHATASM》中,將比爾拜因的機械要素排除,以生物風格重新設計出的機體,也可以說是「比爾拜因」原本應該要有的樣貌。

所以當時看到預購單的時候我覺得看起來很像比爾拜因但又有許多地方不一樣,查了資料才知道這個緣故,這個可以算是夢幻的機體,也很開心萬代願意推出 R 魂上的版本,原本推出是夜間迷彩配色的樣式,後來才有這台ナの国近衛騎士団長仕様,是跟比爾拜因顏色比較像的配色。

P1200613P1200614

這台真的就一個字「帥」,後來也正式在機戰 T 登場,也可以說是萬代要搭配來炒作買氣的,反正我就中招了。

P1200615P1200616P1200617

昆蟲的樣子是聖戰士的特色,後續的《麟光之翼》的機體雖也是以昆蟲的造型去設計,但跟《聖戰士丹拜因》就有不少方向上的差異,但也很希望可以在 R 魂上推出啊。

P1200618P1200619P1200620P1200621P1200622P1200623P1200624

R 魂在聖戰士這系列越出越貴,雖然也是越來越大台啦..

P1200625P1200626P1200627P1200629P1200630

武裝就一把劍,沒有比爾拜因的肩上砲也不能變形。

P1200628P1200629P1200630P1200631P1200632P1200633P1200634P1200635P1200636P1200637

輕鬆擺出帥氣的姿勢。

P1200638

不知道大家喜歡哪個配色,總之我比較喜歡紅色所以就入手這台了。


跟薩拜因的合照。
P1200639

Read more
Related Posts Plugin for WordPress, Blogger...