如何更愉快地使用em

2021-03-02 前端大全

(點擊上方公眾號,可快速關注)

英文:Keith J.Grant  譯文:Yuying Wu

http://wuyuying.com/blog/archives/css-in-depth-relative-units/

CSS提供了很多種方式去定義一個值。大家最熟悉的可能也是最容易使用的就是像素(pixel),這被稱做「絕對單位」。也就是說,5px在不同的場景下是一樣的值。而其他的單位,如em和rem,不是絕對的而是相對的。相對單位的值會根據外部影響因素的變化而變化。例如,2em的值取決於你在哪個元素使用它(有時甚至是哪個屬性)。很自然,相對單位使用起來會比較困難。

開發人員,甚至有經驗的CSS開發人員,往往不喜歡跟相對單位打交道,其中包括臭名昭著的em。em的值可以被改變的方式似乎難以預測,沒有px那麼清晰。在本章中,我將揭開相對單位的神秘面紗。首先,我會解釋它們為CSS帶來的獨特價值,然後我會幫助你更好地理解它們。我會解釋它們的工作原理,也會告訴你怎麼徵服它們那看似不可預測的特性。你可以讓相對單位為你所用,正確地運行,它們將讓你的代碼變得更加簡單、靈活和容易使用。

相對單位值的魔力

CSS是通過遲邦定(late-binding)的方式把樣式渲染到web頁面上的:內容和它的樣式會在各自的渲染完成之後再合併到一起。比起其他類型的圖形設計,這給設計過程添加了它們沒有的複雜程度,同時也賦予CSS更強大的能力 —— 一個樣式表可供成百上千個頁面使用。此外,用戶可以直接改變頁面的最終呈現方式。舉個例子,用戶可以更改默認字號大小或者調整瀏覽器窗口的大小。

在早期的計算機應用程式開發以及傳統出版行業中,開發人員或出版商清楚知道所在的媒介存在哪些限制。對於一個特定的應用程式,窗口可能是400px寬,300px高,或者一個版面可能是4英寸寬,6½英寸高。因此,當開發人員布局應用程式的按鈕和文本時,他們很清楚這些元素可以做成什麼尺寸,以及在屏幕上還有多少空間可以留給他們用來處理其他元素。然而在網頁上,情況卻不是這樣的。

完美像素設計(pixel-perfect design)的掙扎

在web環境下,用戶可以將瀏覽器窗口設置為任意大小,且CSS需要去適應它。另外,用戶可以在一個頁面打開後,再調整它的大小,CSS也需要去適應這些新的約束條件。這說明了在你創建頁面時樣式還沒有被調用,而是當頁面在屏幕上渲染時,瀏覽器才會去計算樣式的規則。

這給CSS增加了一層抽象的概念。我們不應該根據理想的情境來設計元素,而是應該聲明一些樣式規則,可以讓該元素在任何場景下都能跑通。對於現在的網際網路,你的頁面可能要在一個4英寸的手機屏幕上展示,也可能在一個30英寸的大屏幕上。

長久以來,設計師大量使用「完美像素」設計,緩解了這個問題帶來的複雜性。他們會創建一個有著嚴格定義的容器,通常是一個大約800px寬的居中的縱向列。然後在這些限制下他們再進行設計,這跟他們的前輩在原生應用程式或印刷出版物中做的設計或多或少有點類似。

完美像素網頁的終結

隨著技術的進步和製造商推出更高解析度的顯示器,像素完美的設計方式慢慢開始崩潰。在21世紀初期,把頁面設計成1024px寬還是800px寬,哪個是更保險的展示策略?開發者針對這個問題討論得很多。然後,我們又針對能否改成1280px寬有類似的討論。是時候做個決定了。把我們網站的內容寬度做得寬一點(相對於落伍的小電腦屏幕),還是做得窄一點(相對於新出的大屏幕),哪個選擇更好呢?

當智慧型手機出現的時候,開發人員終於要(被迫)要停止假裝每個人都可以在他們的網站上獲得相同的體驗了。不管我們喜不喜歡,我們都得放棄已知的多欄定寬(px)布局,並開始考慮響應式設計。我們再也不能逃避CSS所帶來的抽象概念(abstraction),相反,我們要去擁抱這項特性。

響應式 —— 在CSS中,這指的針對不同大小的瀏覽器窗口,用不同的方式響應更新頁面的樣式。我們要對不同尺寸的手機、平板電腦或桌面顯示器多花心思了。我們將在第8章中詳細介紹響應式設計,但在本章中,我會先給大家介紹一些重要的基礎概念。

增加的抽象概念意味著額外的複雜性。如果我設定一個寬度為800px的元素,那麼它在一個更小的窗口中會怎麼顯示呢?如果一個橫向菜單不能全部在一行展示完,它又會怎麼展示?在編寫CSS時,你需要能夠同時考慮具體情況以及普適性的問題。如果針對一個特定的問題,你有多種方式可以解決,那麼你應該選那個在多種不同場景下更通用的解決方案。

在抽象概念這個問題上,相對單位是CSS提供的工具之一。與其把字號大小設置為14px,你可以把它設置為與窗口大小成比例縮放。或者,你可以設置頁面上所有元素是依賴基礎字號大小的變化而變化的,然後用一行代碼就可以達到調整整個頁面的目的。接下來,我們來看看CSS提供了哪些方式來實現以上的效果。

像素(pixel)、點(point)和pc(pica)

CSS支持一些絕對長度單位,其中最常見也最基本的是像素(px)。較不常見的絕對單位有毫米(mm,millimeter)、釐米(cm,centimeter)、英寸(in.,inch)、點(pt,point,印刷術語,長度為1/72 inch)以及pc(pica,印刷術語,長度為12 points)。如果你想了解其中的計算方式,以上的長度單位都可以直接轉換成另一個單位:1 inch = 25.4 mm = 2.54 cm = 6 pc = 72 pt = 96 px。因此,16px與12pt(16/96×72)是等價的。設計師通常更熟悉點(point)的使用,而開發人員更習慣於像素,因此在和設計師溝通時,你可能需要在兩者之間做一些計算工作。

像素這個名字有點誤導性 —— 1 CSS像素並不嚴格等同於顯示器的1像素,在高解析度顯示器(如「Retina顯示屏」)上尤其明顯。儘管根據瀏覽器、作業系統和硬體的不同,CSS的測量值可能會有細微的差別,但96px總是會大致等於屏幕上的物理1英寸。(儘管有可能會因某些設備或用戶設置而異。)

em和rem

em是最常見的相對長度單位,這是排版中使用的一種度量方式,基準值是當前元素的字號大小。 在CSS中,1em表示當前元素的字號大小,實際值取決於在哪個元素上應用。圖2.1展示了一個padding為1em的div。

padding為1em的元素(添加虛線是為了讓padding更明顯)

模板代碼片段如下。這套樣式規則定義字號為16px,也就是元素本身1em代表的值,然後再使用em來聲明元素的padding。 把這段代碼添加到一個新的樣式表裡,在<div class ="padded">下隨手寫些文字,然後到瀏覽器看看效果吧。

在padding上使用em

.padded {
 font-size: 16px;
 padding: 1em;          1
}

把padding賦值為1em,乘以字號,得到一個值為16px的padding渲染值。重點來了,使用相對單位聲明的值會由瀏覽器轉化為一個絕對值,我們稱之為計算值。

在這個例子裡,將padding改為2em會生成一個32px的計算值。如果同一個元素的另一個選擇器,用一個不一樣的字號值去覆蓋它,這會改變em在這個域下的基準值,那麼padding的計算值也會相應變化。

在設置padding、height、width或border-radius等屬性時,使用em可能會很方便,因為如果它們繼承了不同的字號大小,或者用戶更改了字體設置,這些屬性會均勻地縮放。

展示了兩個不同大小的盒子。盒子內的font-size、padding和border-radius各不相同。

有相對大小的padding和border-radius的元素

你可以通過用em聲明padding和border-radius來給這些盒子聲明樣式規則。首先給每個元素設定padding和border-radius為1em,然後給每個盒子指定不同的字號,那麼其他屬性會跟著字號縮放。

在你的HTML代碼裡,創建如下的兩個盒子,類名分別是box-small和box-large,代表兩個字號修飾符。

在不同元素上使用em(HTML)

<span class="box box-small">Small</span>
<span class="box box-large">Large</span>

現在,添加下面的樣式到你的樣式表。這裡使用了em聲明了一個盒子。還定義了小字號和大字號的修飾符,指定不同的字號大小。

在不同元素上使用em(CSS)

.box {
 padding: 1em;
 border-radius: 1em;
 background-color: lightgray;
}
.box-small {
 font-size: 12px;              1
}
.box-large {
 font-size: 18px;              1
}

這是em一個強大的功能。你可以定義一個元素的字號大小,然後使用一句簡單的聲明,就可以通過改變字號大小從而控制整個元素大小縮放。你後面將會創建另外一個這樣的例子,不過首先,我們來討論一下em和字號大小。

對font-size使用em

當font-size使用em作為單位時,它的表現會有點不一樣。我之前說過,em是以當前元素的字號大小作為基準值的。但是,如果你把一個元素的字號設為1.2em的時候,這是什麼意思呢?一個元素的字號大小是不能等於它自己的1.2倍的。相反,在font-size上的em會先從繼承到的字號大小衍生出來。

舉個簡單的例子,見圖2.3。以下展示了一些不同字號大小的文字。在代碼片段2.4,你會用到em來實現。

以em為單位的兩種不同的字號大小

在你的頁面添加以下代碼片段。第一行文字,在<body>標籤裡面,它會按body的字號大小渲染。第二部分,口號(slogan),繼承父元素的字號大小。

相對font-size的模板

<body>
 We love coffee  <p class="slogan">We love coffee</p>          1
</body>

代碼片段中,CSS代碼片段聲明了body的字號大小。為了更加清晰,在這裡我用了px來聲明。下一步,你可以用em來放大slogan的字號大小。

在font-size上使用em

body {
 font-size: 16px;
}
.slogan {                  
 font-size: 1.2em;        
}

slogan聲明的字號大小是1.2em,為了計算轉換成像素值,你需要引用繼承的字號16px,16 * 1.2 = 19.2,所以計算字號值是19.2px。

提示

如果你已經知道以px為單位的基礎字號大小,但希望把它改用em聲明,下面有個簡單的計算公式:目標em值 = 目標像素值 / 父元素(被繼承元素)像素值。舉個例子,如果你想要一個10px的字號大小,父元素的字號是12px,10 / 12 = 0.8333em。如果你想要16px的字號大小,父元素字號是12px,那麼 16 / 12 = 1.3333em。我們會在這章裡多次用到這個計算公式。

有一點對你很有幫助,對於大多數瀏覽器,默認字號大小是16px。技術上,關鍵字medium會被計算轉換為16px。

當我們在一個元素內用em同時聲明font-size和其他屬性
你已經使用過em聲明font-size了(基於一個繼承的字號大小值)。以及,你也曾經使用em聲明其他屬性,如padding和border-radius(基於當前元素的字號大小值)。當你針對同一個元素使用em聲明font-size和其他屬性的時候,em會變得很神奇。此時瀏覽器必須先計算font-size,然後基於這個值再去計算其他值。這些屬性聲明的時候使用的是相同的em值,但很可能它們會有不同的計算值。

在之前的例子裡,我們計算到字號大小是19.2px(繼承的16px乘以1.2em)。圖2.4是相同的slogan元素,但有額外的1.2em padding以及為了讓padding大小更加明顯的灰色背景。可以看出,padding比font-size稍微大一些,儘管它倆聲明的時候em值是一樣的。

一個font-size為1.2em以及padding為1.2em的元素

現在的情況是,這個段落從body繼承了16px的字號大小,通過計算得到值為19.2px的字號計算值。這意味著,19.2px是1em在當前域的基礎值,而這個值會被用作計算padding的值。對應的CSS代碼在下面,更新你的樣式表並查看你的測試頁面吧。

在font-size和padding上使用em

body {
 font-size: 16px;
}
.slogan {
 font-size: 1.2em;             1
 padding: 1.2em;               2
 background-color: #ccc;
}

1 賦值為 19.2 px

2 賦值為 23.04 px

在這個例子裡,padding的聲明值為1.2em,乘以19.2px(當前元素的字號大小),計算出23.04px。我們可以看到,儘管font-size和padding聲明時em值是一樣的,但它們的計算值是不一樣的。

字號收縮問題

當你使用em聲明多層嵌套的元素字號時,會產生意想不到的效果。要弄清楚每個元素的實際值,首先你需要知道它繼承的父元素的字號大小,如果父元素的字號也是用em聲明的,那麼你需要知道它的父元素的字號大小,在dom樹往上查,以此類推。

當你使用em聲明列表的字號大小,列表嵌套了好幾層,效果就更明顯了。大多數web開發者會發現在他們的職業生涯裡面,圖2.5的列表嵌套形式有點眼熟。文字在逐步縮小!正是因為em帶來的這一類煩人的問題,開發者才對em避而遠之。

嵌套列表中的字號縮小現象

當你多層嵌套列表,而每一層聲明的字號大小以em為單位,字號收縮現象就會發生。在代碼片段2.7和2.8的例子裡,無序列表的字號是0.8em。這個選擇器對頁面上所有的ul有效,所以當一個列表從另外一個列表繼承到字號大小的時候,em就產生複合效果。

在列表上使用em

body {
 font-size: 16px;
}
ul {
 font-size: .8em;
}

多層嵌套的列表

<ul>
 <li>Top level
   <ul>                                    1
     <li>Second level                      1
       <ul>                                2
         <li>Third level                   2
           <ul>                            3
             <li>Fourth level              3
               <ul>
                 <li>Fifth level</li>
               </ul>
             </li>
           </ul>
         </li>
       </ul>
     </li>
   </ul>
 </li>
</ul>

每一個列表的字號大小是0.8乘以父元素的字號大小。這代表第一個列表的字號大小是12.8px,嵌套的子列表字號大小是10.24px(12.8px * 0.8),第三層列表的是8.192px,如此類推。同樣地,如果你給字號大小的賦值大於1em,相反,文字的字號會一層層變大。我們想要的效果是像圖2.6一樣,在頂層聲明字號的大小,但下面嵌套層級的列表字號保持不變。

圖 2.6 字號正常的多層嵌套列表

其中一種實現的方式可以看看代碼片段2.9。第一個列表的字號大小還是0.8 em(見示例2.7),第二個選擇器對嵌套在無序列表的無序列表有效 —— 也就是除了第一個無序列表以外的所有無序列表。現在嵌套的列表設定了跟父元素一致的字號大小,正如圖2.6一樣。

字號收縮現象的糾正

ul {
 font-size: .8em;
}
ul ul {                1
 font-size: 1em;      1
}

這可以解決問題,但不是最優方案。因為你設置了一個字號值,馬上用另一個選擇器重寫了這個規則。如果你可以使用針對嵌套的列表聲明一個特定的選擇器,避免互相覆蓋,會是一個更好的方案。

到現在我們清楚了,如果你不是一個比較小心的人,你應該遠離em。使用em作為padding、margin和元素縮放效果的單位挺好的,但當em遇上font-size時,事情可以變得很複雜。感謝上天,我們有個更好的選擇 —— rem。

【關於投稿】

如果大家有原創好文投稿,請直接給公號發送留言。

① 留言格式:
【投稿】+《 文章標題》+ 文章連結

② 示例:
【投稿】《不要自稱是程式設計師,我十多年的 IT 職場總結》:http://blog.jobbole.com/94148/

③ 最後請附上您的個人簡介哈~

覺得本文對你有幫助?請分享給更多人

關注「前端大全」,提升前端技能

相關焦點

  • 打鼓Tip——如何在家愉快地打鼓?
    既然如此,如何在家愉快地打鼓呢?01噪音問題我們從初始的好奇、興趣,發展成特長甚至專業,都離不開勤奮的練習。提升樂器演奏水平更是如此。像鼓這樣的樂器,首先需要在家裡創造一個可以練習的環境,但噪音問題成為了我們最大的困擾。
  • 英文中的虛偽以及如何和老外更愉快地聊天
    老外:……然後你就以為,老外真的是I』d love to ,興衝衝地滿懷期待,然後等不到人,只能一臉沮喪。更有甚者,很多老外可能對你的邀請答應了前半句,後半句的but部分根本就不說,你更看不出來對方的虛偽了。★被老外表白怎麼辦? 在這兒我也爆料一個被老美表白的經歷吧。害羞臉。
  • 如何愉快地「射爆」《噴射戰士2》?
    但沒關係,即便沒有中文,咱也有方法教各位玩家如何愉快地「射爆」《噴射戰士2》,請收好下面這份保姆級教學!這第一步就難倒了部分switch玩家,如何給自己的NS創造一個穩定高效的加速環境?<1>DNS救助方法偶爾有效,但是不穩定,穩定情況與基礎網絡有關。
  • 再也不能愉快地使用真人表情包了!已有人被索賠40萬!
    真人表情包真的不能隨心所欲地亂用,否則會面臨侵害他人合法權益、觸犯法律規定的風險。在網友看來,表情包的使用早已經不限定在官方提供的範圍之內了。的正確「姿勢」那麼,以後真的都不能愉快的使用真人表情包了?怎麼使用才不會侵權呢?「如果截取表情包圖像以商業使用為目的,未經肖像權人或其三代以內近親屬同意,就會構成對他人肖像權的侵害。」南京大學新聞傳播學院教授陳堂發在接受檢察日報記者採訪時說,如果表情圖形存在對權利人的不適當「藝術」處理,體現為一種「醜化、歪曲」的效果,可能構成對他人名譽權的侵害。
  • 專欄 關山遠:懂得如何愉快地聊天,絕對是一種能力
    即使是從小穿開襠褲的玩伴,但一個張開了時間的翅膀,另一個仍然凝固在穿開襠褲的階段,他們又如何有平等的交流?如何還能愉快地聊天?所以他不理睬別人,卻能夠跟唐德剛愉快地聊天了。 會聊天,絕對是種能力。共同的語言不僅來自曾經共同的經歷,更來自如今共同的層面
  • 愉快地偷吃,不愉快的果實
    TBS改編的1996年版《不愉快的果實》劇照。早二十年,勵志臺TBS就曾改編過1996年出版的女作家林真理子的作品《不愉快的果實》(不機嫌な果実)。上世紀末的日本電視劇,偷情成為重要的表現主題,最著名的當屬根據渡邊淳一作品改編的《失樂園》,但《不愉快的果實》實力也不弱,收視率低開高走,不至於萬人空巷,但也掀起過一陣小高潮。
  • 假期臨近,行李箱不夠逼格還如何愉快地出門?
    · 行李箱 ·< 假期臨近,行李箱不夠逼格還如何愉快地出門?
  • 越南歌曲:Yêu Em Nhiều Hơn (Love Me Harder)
    Mình chạm ánh mắt khi ta vẫn còn ngu ngơ Làm sao để nói tâm tư cho nên lời Vì chẳng thể nói yêu anh, yêu anh nửa vời Từng ngày cứ thế nỗi nhớ tăng nhiều thêm One, ôm thật chặt em
  • 越南歌曲:我的心思Tâm Tư Giữ Riêng Em - Liz (LIME)
    Liz (LIME)歌詞:Vẫn giữ mãi vết xước quá khứ đã lâu rồi Chẳng thể yêu một ai ngoài anh, người emtháng ngày Từng giọt lệ cô đơn nhìn vết thương mãi in hằn trong tim Giữ đau buồn chỉ riêng em
  • 使用CSS技術實現Netflix Logo動畫效果
    在觀看了幾集電視劇之後,我想到可以用 CSS 來實現 Netflix 的 logo 動畫,於是我看了幾部作品之後,就用 CodePen 來重現這個 logo。第一個概念因為我想要嘗試某些技術方案導致我的第一種實現方式有些累贅。
  • 如果你的生活不愉快,不妨讀一下牛頓的名言,讓你從此愉快地生活
    當我們渴望錢和真實感情都不得時,也想要自己生活過得愉快一點,如何能做到呢?不知道答案的時候,生活也過得不愉快的時候,不妨讀一下牛頓的名言,讓你從此愉快地生活!文字如下:愉快的生活是由愉快的思想造成的。——牛頓這句話說的太好了,想要過上愉快的生活,首先自己要有愉快的思想。一個人的思想不愉快,即便遇到了愉快的事情,他也是皮笑肉不笑的,怎麼也笑不起來。因為他腦海裡全是不愉快的事情,心裡想的,裝的全是煩惱的事情。哪怕身邊發生再怎麼愉快的事情,好像跟他毫無關係一樣,他看不進去,也聽不進去,更影響不到他。這就是當一個人沒有了愉快思想後的恐怖。
  • 願每一天都愉快地度過!
    以後的日子,我想平靜而認真地度過,按自己的節奏,用自己的方式。 ——陶立夏 然而,無論是孝敬父母,還是養家餬口,都需要我們拼命地掙錢。 漸漸地,我們滿腦子想的都是家人,卻唯獨少了我們自己。隨即,我們變得急功近利,我們變得身心俱疲,我們甚至變得茫然不知所措,竟忘了來時的路,更不知前方的路在哪裡。
  • 如何愉快地和巨蟹座男生聊天
    既然和你不能愉快的聊天,那蟹男自然就會避免和你在網絡上的聊天咯。有時候,和你聊天,或者這個巨蟹男要被氣死了,一肚子火。為了保持對你的那份愛和美好,能點讚絕不BB。所以很多時候,你家蟹男不回你信息,卻和你點個讚。mmp,這算怎麼一回事。下面有張聊天記錄,是我在相親吧看到的。我覺得能學到很多,所以放出來給大家講講。最起碼也要知道自己是怎麼SHI的。
  • 越南歌曲:Em Kết Hôn Rồi - 我結婚了
    越南歌曲:Em Kết Hôn RồiPhạm Quỳnh Anh歌詞:Người yêu trong mơ trên lưng con bạch mã tươi cười với emTay nắm tay em rồi cùng phi thật nhanh đến cuối đườngNơi yên
  • 用好1物,或能讓「夫妻生活」更愉快
    要想「夫妻生活」和諧,這三個時間段最好不去「交流」,要聽勸1、餐後餐後同房對女性的健康十分不利,這是因為剛吃完飯,我們體內的食物還沒有被完全消化,堆積在腸胃裡,此時進行夫妻生活可能會壓迫我們的消化系統,不僅不利於消化或不愉快,而且易對身體造成傷害
  • 今天,又是愉快的一天
    寧靜的午後,一窗之隔的冬日,陽光調皮的溜進室內取暖,慵懶的打在了身上,像加了濾鏡一般的放大了生活的美好,讓人不禁慨嘆:又是愉快的一天。日子沉澱,積攢了一地泛黃的落葉,開始愈發的囿於一些老舊的時光。喜歡一遍遍讀著喜歡的書,似乎在字裡行間形成了不需言語的共鳴,甚至近來讀著陶立夏的《又是愉快的一天》,會不自覺的和她一起思索,安定太久的一年,如果重新開始,該如何應對,會感同身受的發現老舊的事物中,也藏著別有一番的驚喜,一些微物之中,也總能尋得一些美好。「如果重新開始。
  • 五彩繩粽子卡通香包,陪你一起愉快地過端午!
    這款五彩繩粽子卡通香包,外部採用透氣的棉麻面料手工縫製內部則使用艾葉,薄荷,薰衣草或驅蚊的香料填充可以根據自己的需要或喜好去選擇,都是健康生活的表現方式端午的正確打開方式他們的一生可能比較悲傷:屈原懷才不遇投江而死,伍子胥忠君愛國卻被挑撥至死而作為今天的我們,不僅要銘記歷史,更重要的是不重蹈覆轍活在當下,認真生活,努力向上,是對節日的最佳尊重方式;而愉快的生活工作,積極樂觀則是對節日的最佳渡過方式
  • 自籤工具 ReProvision 又可以愉快使用了
    使用 ReProvision 插件自籤安裝越獄工具,是個維持越獄工具「生命」的一個好辦法。無需電腦,手機端籤名安裝IPA,實現自動重籤,無限續命,無需擔心證書失效問題。使用介紹下面簡單介紹一下ReProvision的使用方法。1,安裝自籤插件首先,我們需要在Cydia 內添加ReProvision 官方源,安裝ReProvision 。
  • 如何在「平面設計」中創造性地使用'媒介'?
    平面設計專業的學生可能不確定這些建議如何應用於他們。您能描述一下第一手經驗如何影響你的項目嗎?Linus:起初,我發現第一手作品相當繁瑣和麻煩,並思考為什麼當我可以從網際網路上下載外觀精美的字體時要打些字體。但是您意識到第一手觀察可以使你與作品形成更緊密的聯繫,並給予作為平面設計師「靈魂」 。
  • 如何優雅地在電腦音樂製作中使用iPad
    在這首期推文中,我來和大家分享一下如何優雅的在電腦音樂製作中使用iPad。現在的朋友們絕大多數人都有了iPad或者是iPhone,經常在iPad上面玩音樂的朋友們肯定接觸過iPad的編曲軟體、控制器和合成器,比如蘋果官方的GarageBand,Moog官方推出的Model D和Animoog等等,為音樂愛好者增添了多一點樂趣。