1. 程式人生 > >用HTML和CSS實現WWDC 2015上的動畫效果

用HTML和CSS實現WWDC 2015上的動畫效果

每年,蘋果都會召開一次重大的會議。WWDC(蘋果開發者大會)是iOS開發者和OSX開發者學習蘋果先進高科技和移動裝置與桌面軟體新概念的好機會。

每一年的這個時候,他們都會製造出很多新創意,今年,我被一個用簡單圓圈和形狀製作出來的圖示所驚豔,於是我決定用HTML和CSS來實現它。

WWDC 15邀請卡

蘋果的圖示通常都會使用顏色和形狀的疊加,比如iOS 7 Photos圖標。今年WWDC邀請函用了下面這貨。

20.png

它由一些列層疊和半透明的形狀構成,非常適合用HTML和CSS來實現。

HTML

設計這樣一塊負責的東西需要稍微分析一下。首先,我把它分解成各個部分。 大方向看它是由三種形狀構成的,主要圖形為8個大圓,我先把它們列出來:
21.png

這裡我分割成幾個類,這樣做方便後面把large,circle,等類提取出來單獨寫,程式碼會整潔很多。

然後我們有八個小形狀,處於大圓的上邊,這些形狀由4個圓形和4個方形構成,方形是由圓角的,我這樣寫HTML

22.png

我用了circle,squircle以及數字1到8來為各個div設定類名,這樣做的好處是,後面為它們設定形狀和顏色的時候很方便。

最後我們把兩個大方形反倒logo中間。

23.png

同樣,我用了large和squircle。

Logo和內容

接下來我們給中間的方形增添點內容。

24.png

這裡我們用了一個SVG圖片,還有邀請函的內容。邀請函的字型為San Francisco 但是字型不是OSX標準的,所以這裡我換成Helvetica Neue Light。

寫圓和方塊樣式

我要做的第一件事是把circle和squircle的樣式寫好。

25.png

大部分形狀是大得,所以這我把預設值設大了。每個元素的定位都是absolute並且有一個白的邊框。邊框可能不會跟邀請函的一模一樣,但是可以給形狀多點光澤。

接下來我們給大圓加上樣式,設定border-radius為50%,並且使用left,top值設定位置。

26.png

這個時候所有的圓都是在同一個位置上邊。我們使用點小技巧,通過transform-origin的值來改變位置。預設的transform-origin值為(50%,50%),這裡我們把值設為圓的底部,然後我們稍微旋轉一下,形狀就出來了。

27.png

讓我們給每個圓新增CSS樣式,仔細研究邀請函的圖片,我們可以看到一個圓的位置在左下角。知道了這一點,我們就可以寫出其他與圓圈的旋轉角度。

28.png

每個塊都有一個顏色,並且旋轉一定角度。下面的動畫動態展示了生成過程。

29.gif

有了上面這些原型,我們給其他形狀寫樣式。首先方形也可以看成有不同圓角的圓。

30.png

當我們定位了圓以後,我們給了特定的旋轉角度和顏色。高興的是,相同的形狀也可以使用相同的樣式,我們寫好小形狀的樣式。

31.png

我們把這些形狀設得小一些,並且離中心更遠的距離。並且使用跟上面相同的詭計。

小方塊

小的方形角度錯了,我們需要給它旋轉45deg。

34.png

這裡有兩種方法可供選擇,我們可以給每個方形加多一個額外的元素,並旋轉,或者我們選擇CSS中的偽類。兩種方法都行,不過我更傾向於後者。

首先我們把背景顏色,邊框,盒子陰影去掉。

35.png35.png

我們使用::after偽類來建立一個相同的方形,並旋轉45deg。

36.png

現在我們有了大圓和其他小形狀了。

37.png

內容方塊

兩個大的方形包含所有內容,我們把他們定位到中間,並且給他們一個比較深的透明色。

38.png

我們可以旋轉一下第一個大方形。

39.png

41.png

新增動畫

最初的邀請函是靜態的,但是我們的網站叫做CSS Animation Rocks可不是浪得虛名。

我像把每個集合分開,為了做到這一點,我用span元素把它們分別包裹起來,後面就把動畫應用到span元素上即可。

42.png

我們先給span元素定位,防止他們溢位。
45.png

每個span元素都定位到中點。

接下來我們把動畫應用到每個span元素上面。

47.png

我們使用了相同的keyframes但是改變了動畫時間,分別為10s,20s,30s。於是他們一分鐘後回到原來的位置

keyframes 如下所示

48.png

開始位置旋轉角度為0,最終旋轉角度360deg。

49.gif

重用CSS

這是個有趣的實驗,但是我覺得最大的收穫是重用了CSS.旋轉和小形狀使用相同的CSS很方便。還有所有的animation用了同一個keyframes。這樣有助於壓縮CSS檔案的大小,保證載入速度。

字首

建立這個例子的時候,我用了autoprefixer,這樣就不用每次寫動畫都要考慮瀏覽器核心了。

相關推薦

HTMLCSS實現WWDC 2015動畫效果

每年,蘋果都會召開一次重大的會議。WWDC(蘋果開發者大會)是iOS開發者和OSX開發者學習蘋果先進高科技和移動裝置與桌面軟體新概念的好機會。 每一年的這個時候,他們都會製造出很多新創意,今年,我被一個用簡單圓圈和形狀製作出來的圖示所驚豔,於是我決定用HTML和CSS來實現它。 WWDC

HTMLCSS實現點擊內容顯示再點擊隱藏

str har ctu box 點擊 實現 aep anti 實現思路 實現思路: 1.display:none,隱藏元素;點擊時display:black; 2.設置隱藏元素高度為0,overflow:hidden;點擊時overflow:visible; 由於第一條只能

htmlcss實現透明div的div不透明,也可說父div透明,子div不透明

css:實現透明div上的div不透明,也可說父div透明,子div不透明,但這裡並不是嚴格的父子關係,只是看起來像是父子關係。 一、方法一: (1)程式碼片段: ... <st

htmlcss製作一個簡單的頁面

原始碼:<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>簡單頁面</title> <meta name="v

HTMLcss寫的介面適應手機介面小結

用html和css寫得頁面要適應各種手機螢幕的話,寫的時候要注意以下幾點: 整體頁面的寬度用百分之比表示,任意一個要設定寬度的元素都用百分比表示。比如在整體的上設 width:100%; 要適應各個

htmlcss實現 字型變色 旋轉 圖示漸變

要求: 1.用html和css實現上圖整體佈局效果 2.當滑鼠懸停在時,其字型變為原來的1.2倍,同時字型顏色發生變化。 3.當滑鼠懸停在時,其字型旋轉360度。 4.當滑鼠移動到時,其圖示漸變為(由

CSS實現加載中動畫效果

cit one form overflow relative tor -o ica tom HTML &lt;div class="pswp__preloader__icn"&gt; &lt;div class="

css實現載入中loading動畫效果

1.html<div class="load-container"> <div class="loader"></div> <p>載入中請稍後...</p> </div>2.css.load

AnkoKotlin實現Android的對話框警告提示(KAD 24)

posit eve linear 免費 clas testing size uil 如何 作者:Antonio Leiva 時間:Mar 9, 2017 原文鏈接:https://antonioleiva.com/dialogs-android-anko-kotlin/

最全HtmlCSS布局技巧

喜歡 輸出 隔離 init scale ext med 兩種 float 單列布局水平居中 水平居中的頁面布局中最為常見的一種布局形式,多出現於標題,以及內容區域的組織形式,下面介紹四種實現水平居中的方法(註:下面各個實例中實現的是child元素的對齊操作,child元素的

html div內第二行文字顯示不下的時候才省略號代替 css實現

IE 代碼 塊元素 實現 bubuko flow html web hidden 有時候文字太多,但為了美觀想要在第二行的時候才顯示省略號,而不是第一行超出馬上就出現省略號 下面是css代碼: overflow:hidden;text-overflow: ellipsis;

最全的HTMLCSS標籤常用命名規則

資料夾主要建立以下資料夾:   1、Images 存放一些網站常用的圖片;   2、Css 存放一些CSS檔案;   3、Flash 存放一些Flash檔案;   4、PSD 存放一些PSD原始檔;   5、Temp 存放所有臨時圖片和其它檔案;   6、copyright

前端要完!人工智慧已經能實現自動編寫 HTML CSS

點選上方“CSDN”,選擇“置頂公眾號”關鍵時刻,第一時間送達!【CSDN 編者按】一個月前,我

html2canvasjspdf實現html轉成pdf下載到本地

解決了下載的圖片會模糊和偏移的問題 <script src="${basePath!}/js/bluebird.js"></script> <script src="${basePath!}/js/jspdf.debug.js"></script>

HTML+js+css實現點選圖片彈出傳檔案視窗的兩種思路

第一種:CSS實現 <style> <!--  .fileInputContainer{         height:256px;         background:url(upfile.png);         position:rel

HTMLCSS怎麽

渲染 連接 mage 名稱 tle 訪問 標簽 版本 網址 首頁> 1.HTML和CSS是什麽? ·網站和HTML頁面   ·簡單理解網站   ·一個房子比喻(HTML比喻成房子,CSS為裝修)   ·

css3canvas實現的蜂窩動畫效果

image() all nim 自己 clas 函數 顯示 var 不兼容 近期工作時研究了一下css3動畫和js動畫。主要是工作中為了增強頁面的趣味性,大家都有意無意的加入了非常多動畫效果。當然大部分都是css3動畫效果。能夠gpu加速,這會降低移動端的性能需求。 今

HTMLCSS中的居中效果(1)

htm inner height overflow n-1 txt posit splay read HTML和CSS中的居中效果 單行上下左右居中 Html: <div class=”container”></div> CSS:

htmlcss面試題

相對 列表標記 格式 erl sam ext 第一個 onos static 21.如何居中div,如何居中一個浮動元素? 給div設置一個寬度,然後添加margin:0 auto屬性 div{ width:200px; margin

jQueryJson實現Ajax異步請求

登錄 iter() pat pass dtd tran java encoding find 這裏有兩個例子,一個是關於登錄驗證的,一個是異步加載數據的 1、regist.jsp <%@ page language="java" import="java.util.