Amazon Ads

顯示具有 CSS 標籤的文章。 顯示所有文章
顯示具有 CSS 標籤的文章。 顯示所有文章

2014年4月26日 星期六

【分享】YUI Compressor - JavaScript與CSS的壓縮工具

你是否有曾經因為某些網頁載入時間太久,而跳離該網頁?所以在開發網頁時,網頁程式的輕量化是一個重點。

現在大部份的網頁,除了HTML文件本身外,都還會使用JavaScriptCSS來做網頁設計與版型編排,也都是使用引入的方式來使用,在網頁開啟的時候,也是要先下載到使用者的電腦中,再由瀏覽器執行與呈現,所以這兩者檔案大小,也是影響網頁呈現是否順暢的重要因素。

在這裡我要分享一個名為YUI Compressor這個JavaScriptCSS的壓縮工具,這裡所謂壓縮並非像7-ziptar那種壓縮,而是把程式碼「最小化」的意思。

YUI Compressor是採BSD授權,先到這裡下載,下載回來後,可以得到一個yuicompressor-x.y.z.jar,前面的x、y、z表示它的版號,這裡使用2.4.8來做說明。

請注意,這是個Java應用程式,所以在執行這個jar檔之前,電腦中要先安裝Java

再來我寫了一個test.js,內容如下:
var add = function(a, b){
        var c = a + b;
        return c;
};
var sub = function(a, b){
        var c = a - b;
        return c;
};
var multiply = function(a, b){
        var c = a * b;
        return c;
};
var divide = function(a, b){
        if(b === 0){
                return 0;
        }
        var c = a / b;
        return c;
}
將上列程式碼儲存後,它的檔案大小為260 byte:
-rw-r--r--  1 bioyang  staff     260  4 26 16:05 test.js
再來我使用YUI Compressor來進行壓縮:
java -jar yuicompressor-2.4.8.jar test.js -o test-min.js --charset utf-8 --type js
上列的指令中,-o表示要輸出的檔案名稱,--charset是指定壓縮的字元編碼格式,--type是用來告知輸入的檔案是.js.css,它在輸入的檔案副檔名沒指定時才需要。

其它參數可以參考YUI Compressor文件

壓縮之後可以看到檔案大小有明顯的減少:
-rw-r--r--  1 bioyang  staff     195  4 26 16:10 test-min.js
使用編輯器來打開test-min.js
var add=function(e,d){var f=e+d;return f};var sub=function(e,d){var f=e-d;return f};var multiply=function(e,d){var f=e*d;return f};var divide=function(e,d){if(d===0){return 0}var f=e/d;return f};
可以看到除了壓縮大小處理之後,它也能對程式碼做些類似加密、混碼的動作,這對不想讓別人清楚看到程式碼結構的人,是一個非常方便的功能,但如果不要這個功能的話,可以在執行指令時,加上--nomunge這個參數。

當你的.js檔案愈大時,檔案大小減少的感覺會更明顯,比如我下載一個未壓縮的jQuery函式庫回來,還沒壓縮前的大小為:
-rw-r--r--@ 1 bioyang  staff  282944  4 26 16:20 jquery-1.11.0.js
我再用YUI Compressor來進行壓縮後,大小變成:
-rw-r--r--  1 bioyang  staff  108081  4 26 16:23 jquery-my-min.js
更有感!

當然像jQuery這種函式庫若要應用在正式產品上面時,通常還是下載他們壓縮後的版本回來使用,這裡只是用它來做個範例說明。

2014年4月22日 星期二

【筆記】在HTML中使用ul、li來實現表格呈現

在網頁上以表格來呈現資料,初學者如我,都會使用table來實現,但使用table有一些較不便的地方,如比較難維護,載入時間較久等問題,後來才發現使用divullidtdldd等,才是進階(相對於我)的用法。

在本範例中,使用ulli來做一個例子。

body中放入下列程式碼:
  • Microsoft helped develop technology that, based on GPS data, accurately predicts one's location up to multiple years beforehand.
  • Target predicts customer pregnancy from shopping behavior, thus identifying prospects to contact with offers related to the needs of a newborn's parents.
  • Tesco (UK) annually issues 100 million personalized coupons at grocery cash registers across 13 countries. Predictive analytics increased redemption rates by a factor of 3.6.
  • Netflix sponsored a $1 million competition to predict which movies you will like in order to improve movie recommendations.
  • One top-five U.S. health insurance company predicts the likelihood an elderly insurance policy holder will die within 18 months in order to trigger end-of-life counseling.
  • Con Edison predicts energy distribution cable failure, updating risk levels that are displayed on operators' screens three times an hour in New York City.
然後在head中放入CSS如下:
ul.table{
        width:660px;
}
ul.table > li{
        width:200px;
        height:120px;
        color:#fff;
        background-color:#001aea;
        list-style-type:none;
        float:left;
        padding:10px;
        margin:2px;
}
效果就會像下面一樣:

  • Microsoft helped develop technology that, based on GPS data, accurately predicts one's location up to multiple years beforehand.
  • Target predicts customer pregnancy from shopping behavior, thus identifying prospects to contact with offers related to the needs of a newborn's parents.
  • Tesco (UK) annually issues 100 million personalized coupons at grocery cash registers across 13 countries. Predictive analytics increased redemption rates by a factor of 3.6.
  • Netflix sponsored a $1 million competition to predict which movies you will like in order to improve movie recommendations.
  • One top-five U.S. health insurance company predicts the likelihood an elderly insurance policy holder will die within 18 months in order to trigger end-of-life counseling.
  • Con Edison predicts energy distribution cable failure, updating risk levels that are displayed on operators' screens three times an hour in New York City.

2014年4月11日 星期五

【分享】在使用vim在編輯CSS時,開啟自動完成的功能

在使用vim來編輯CSS檔案時,是可以使用「自動完成」功能的,但vim預設是未啟動該功能,要開啟該功能,先要切換到指令模式(command mode)下,在指令模式中輸入:
:set omnifunc=csscomplete#CompleteCSS
指令輸入後,切換回編輯模式中,按下Ctrl + X後,再按Ctrl + O,就會出現自動完成的選項:


但這只是暫時間的設定,關閉vim後,再次開啟編輯CSS檔案時,原先開啟的自動完成功能就會關閉。

若要vim在編輯.css檔案時,就預設開啟自動完成的功能,就需要編輯vimrc這個檔案(以Ubuntu為例):
$ sudo vi /etc/vim/vimrc
在檔案的最下方加入下列指令:
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
下面是在Mac設定的方式。

若是在Mac(以我的電腦為例),要先去編輯/usr/share/vim/下的vimrc檔案:
sudo vi /usr/share/vim/vimrc
在檔案的最下方加入下列指令後儲存:
syntax on
再來新增或編輯,家目錄下的vimrc
vim ~/.vimrc
在檔案的最下方加入下列指令:
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
上面是在Mac設定的方式。 

儲存後,再以vim來編輯.css檔案時就能有自動完成的功能。

參考來源:

2014年4月2日 星期三

【筆記】用CSS漸層實作文字區塊的透明遮掩效果

一直好奇在亞馬遜網站中,有一種文字透明遮掩效果是怎麼做出來的,像這樣:


可以看到上列文字區塊的下方,有漸漸淡去的效果。

有天找了時間去研究,原來就是利用區塊漸層的效果,就能做得出來了。 首先看一下CSS的部份:
.txtGradient {
   z-index: 2;
   position: relative;
   height: 50px; 
   margin-top: -50px;
   overflow: hidden;
   background: -moz-linear-gradient(
     bottom, 
     rgb(255, 255, 255) 15%,

     rgba(255, 255, 255, 0) 100%
   ); 
   background: -webkit-gradient(
     linear,
     bottom,
     top,
     color-stop(15%, rgb(255, 255, 255)),
     color-stop(100%, rgba(255, 255, 255, 0))
   );
   background: -webkit-linear-gradient(
     bottom,
     rgb(255,255,255) 15%,
     rgba(255, 255, 255, 0) 100%
   );
   background: -o-linear-gradient(
     bottom,
     rgb(255,255,255) 15%,
     rgba(255, 255, 255, 0) 100%
   );
   background: -ms-linear-gradient(
     bottom,
     rgb(255,255,255) 15%,
     rgba(255, 255, 255, 0) 100%
   );

   background: linear-gradient(
     bottom,
     rgb(255, 255, 255) 15%,
     rgba(255, 255, 255, 0) 100%
   );
}
上列主要對我們要用來遮掩的區塊設定漸層的效果,其中linear-gradient屬性的設定主要是由下往上用白色來做漸層,這樣就會讓被遮掩的區塊由上往下慢慢變透明的效果。

這個屬性的設定和參數,可以參考linear-gradient

再來於HTML中加入文字區塊和要遮掩的區塊:
Duplicate the circle Because the circle is now a clipping mask, it won’t be visible. We need something to be visible that the user can see. Let’s duplicate the circle. Now we have two circles ontop of each other, one is a clipping mask, the other is a circle with a green stroke.
see more
再來我用一點JavaScript來增加一點動畫效果:



做出來的效果就會像這樣:


點了See more之後:


上方文字區塊就有整個展開的感覺。

若你有興趣的話,上列程式碼可以在這裡下載

【筆記】使用CSS做圓形數字牌子

今天在某個網頁中,看到了類似平常在電視上用來給分的顏色牌子,來做為分步驟的指示,覺得很有趣,就把它記下來,做一點改變如下:

10



它的HTML程式碼如下:
10
主要是利用CSSborder-radius屬性來做圓形的變化,如下列程式的第4、5、6行。

再利用padding屬性來調數字的位置,如下列程式的第13、14、15行:

span.circle{
 font-family:Courier, Arial;
 font-size: 36px;
 -webkit-border-radius: 40px;
 -moz-border-radius: 40px;
 border-radius: 40px;
 background-color: #0055d4;
 border: 3px solid #0055d4;
 color: #fff;
 display: block;
 float: left;
 height: 38px;
 padding: 7px 8px 13px 8px;
 text-align: center;
 vertical-align: top;
 width: 44px;
}
上列會分別設-webkit-border-radius-moz-border-radiusborder-radius是針對不同瀏覽器做的圓角設定,可以參考MDN說明

2014年1月14日 星期二

【筆記】使用CSS製作網頁載入動畫效果(CSS for loading)

有時為了讓使用者有更好的使用經驗,在網頁載入時,需要顯示些什麼,讓使用者知道現在在載入中,今天同事介紹了一個網站cssload.net,讓人輸入一些簡單的設定後,就可以不用gif等圖檔,只使用CSS做出網頁載入時,等待的效果,像這樣:


進入該網站後,就會有幾個簡單的設定:


第一步在「Select your loader」 選擇好我們要的載入時顯示的圖形樣版:


再來選擇好要的顏色、大小,和動畫的速度後,點按【GET CODE】,就會跳出一個小視窗,顯示相對應的html和CSS:


上列的程式碼中包含了<style>和<div>兩個部份,分別把需要的style和html複製後放在適當的地方,就可以顯示出所需要的效果。

2013年1月27日 星期日

【分享】CSS在Firefox和IE中網頁跑版,但Chrome沒問題

今天解決了一個問題:「在Firefox和IE中網頁跑版,但Chrome沒問題」,原因是在儲存CSS檔案時,將編碼儲存為UNICODE。

解決方法為:將該檔案改為UTF-8(比如:用notepad開啟,再另存新檔)即可。