于任何網站而言,配色方案都是其中最關鍵的影響因素之一。你可以使用你所熟悉的配色方案,也可以跳出來選擇更加大膽、明快、更有性格的配色方案,它們或許更容易給人留下深刻的印象。
而今天我們要說的,是黃色。作為暖色調,黃色象征能量,帶來溫度,充滿生命力,它可以讓你的網站看起來更具有親和力,舒適而溫馨。毫無疑問,黃色色調的網站設計大多都非常的醒目,讓人難以忽視。
但是同時,它也是一個不容易掌控的顏色,一個不小心可能會毀掉網站的整個設計。所以,你需要清楚地了解黃色的運用手法——比如先看看那些設計優秀的網站是怎樣使用大面積黃色色調的。在黃色作為主色調/背景色的時候,文字內容如何展現,各種控件如何使用,這些都值得學習。
明快的黃色和動感的舞蹈有著天然的契合度,這也是為什么瑞士城市舞蹈學院選擇使用黃色作為網站的主色調。為了確保網站內容的識別度,設計師采用的是黃黑搭配。
擁有韓國血統的攝影師JamesTupper 也在設計他的作品展示頁的時候選擇了黃色作為主色調。 在字體配色上,他同樣選取了黑色。
YAY 是一個平面設計類的合集網站,黃黑的配色使得文字內容無比的醒目。
黃色的色調和其他的色彩也可以很好的搭配,重要的是控制好對比度,這里的插畫的色調控制就非常合理,不會太深,但是和背景的黃色形成了很好的對比。
這是一位來自英國劍橋、獲得過不少獎項的設計師的個人作品網站。網站設計大氣,但是它最大的特色是交互,無論你是在桌面端、平板還是手機上訪問,交互的豐富度都非常的強。
Croscon 是一個植根于設計和數字制造業的定制化軟件,網站的配色主色調黃色使用了黑色和白色來做搭配。
Vivedmv 的網站所用的黃色飽和度相對較低,看起來也更加復古,搭配上復古的字體、圖形元素,整體的氛圍非常的一致。
這個網站在功能開發和內容策略上達到了一個不錯的平衡,在色調的搭配上也很好的體現出了設計、開發和內容三方面的功力。
依然是黃、黑、白的色彩搭配,經典的黃黑支撐起整個視覺,而白色在整個配色中顯得更加醒目,它承載了LOGO、副標題和關鍵性的按鈕。
作為一個在線學習網站,Lambda 所用的主題基本上是經過深度定制的,深藍灰和白色占據了大量的面積,而黃色在整個網站中作為提亮色,很好的強調了關鍵性的內容與操作。
Fitness 是一個為健身房和運動所定制的一個WP主題,極簡的風格、黃黑為主的色彩搭配讓這個主題在視覺上頗為突出。
Mobirise 是一個免費的BootStrap 模板,整體設計風格非常現代。和前面許多網站在配色上不同,它沒有使用黃黑來搭配,而是使用偏橙色的黃色和灰色搭配起來,文字內容則使用了白色。
ENERGY 是一個運動健身類的WP主題,黃色醒目的特色在這個主題中被體現的淋漓盡致。
Ethanol Portfolio 是一個干凈簡約的免費Bootstrap 網站模板,這個簡約的模板是多功能的。黃色的文本標題在暗色調的背景上顯得無比清晰。
Xpress 用作作品展示或者時尚類的內容網站都是是相當不錯的選擇,黃色這一配色在網站中被很好的運用了起來。
Darklowpress 是一個WP博客主題,大量的可定制的輪播圖能夠讓你更好的展示多媒體信息。
Pluton 是一款現代多功能的HTML5著陸頁,基于BootStrap來開發的。整個網站使用了許多最新的HTML5、CSS3 和 jQuery 技術。
Agency 是一款有范兒的單頁式Bootstrap主題,對于商業機構和小公司而言,這個主題相當的不錯。這套主題的設計則是基于Golden PSD。
這個網站是一個為出租車公司所設計的,黃色的色調和出租車的基礎色調保持了一致。
Hotel Deluxe 同樣是一個響應式的網頁模板,其中黃色也是網站中最醒目的色彩而起到關鍵性的作用。
VG 動畫有很多種實現方法,也有很大SVG動畫庫,現在我們就來介紹 svg動畫實現方法都有哪些?
SVG animation 有五大元素,他們控制著各種不同類型的動畫,分別為:
1.1、set
set 為動畫元素設置延遲,此元素是SVG中最簡單的動畫元素,但是他并沒有動畫效果。
使用語法:
<set attributeName="" attributeType="" to="" begin="" />
eg:繪制一個半徑為200的圓,4秒之后,半徑變為50。
<svg width="320" height="320">
<circle cx="0" cy="0" r="200" style="stroke: none; fill: #0000ff;">
<set attributeName="r" attributeType="XML" to="50" begin="4s" />
</circle>
</svg>
1.2、animate
是基礎的動畫元素,實現單屬性的過渡效果。
使用語法:
<animate
attributeName="r"
from="200" to="50"
begin="4s" dur="2s"
repeatCount="2"
></animate>
eg:繪制一個半徑為200的圓,4秒之后半徑在2秒內從200逐漸變為50。
<circle cx="0" cy="0" r="200" style="stroke: none; fill: #0000ff;">
<animate attributeName="r" from="200" to="50"
begin="4s" dur="2s" repeatCount="2"></animate>
</circle>
1.3、animateColor
控制顏色動畫,animate也可以實現這個效果,所以該屬性目前已被廢棄。
1.4、animateTransform
實現transform變換動畫效果,與css3的transform變換類似。實現平移、旋轉、縮放等效果。
使用語法:
<animateTransform attributeName="transform" type="scale"
from="1.5" to="0"
begin="2s" dur="3s"
repeatCount="indefinite"></animateTransform>
<svg width="320" height="320">
<circle cx="0" cy="0" r="200" style="stroke: none; fill: #0000ff;">
<animateTransform attributeName="transform" begin="4s"
dur="2s" type="scale" from="1.5" to="0"
repeatCount="indefinite"></animateTransform>
</circle>
</svg>
1.5、animateMotion
可以定義動畫路徑,讓SVG各個圖形,沿著指定路徑運動。
使用語法:
<animateMotion
path="M 0 0 L 320 320"
begin="4s" dur="2s"></animateMotion>
eg:繪制一個半徑為10的圓,延遲4秒從左上角運動的右下角。
<svg width="320" height="320">
<circle cx="0" cy="0" r="10" style="stroke: none; fill: #0000ff;">
<animateMotion
path="M 0 0 L 320 320"
begin="4s" dur="2s"
></animateMotion>
</circle>
</svg>
實際制作動畫的時候,動畫太單一不酷,需要同時改變多個屬性時,上邊的四種元素可以互相組合,同類型的動畫也能組合。以上這些元素雖然能夠實現動畫,但是無法動態地添加事件,所以接下來我們就看看 js 如何制作動畫。
上篇文章我們介紹js可以操作path,同樣也可以操作SVG的內置形狀元素,還可以給任意元素添加事件。
給SVG元素添加事件方法與普通元素一樣,可以只用on+事件名 或者addEventListener添加。
eg:使用SVG繪制地一條線,點擊線條地時候改變 x1 ,實現旋轉效果。
<svg width="800" height="800" id="svg">
<line id="line" x1="100" y1="100"
x2="400" y2="300"
stroke="black" stroke-width="5"></line>
</svg>
<script>
window.onload = function(){
var line = document.getElementById("line")
line.onclick = function(){
let start = parseInt(line.getAttribute("x1")),
end=400,dis = start-end
requestAnimationFrame(next)
let count = 0;
function next(){
count++
let a = count/200,cur = Math.abs(start+ dis*a)
line.setAttribute('x1',cur)
if(count<200)requestAnimationFrame(next)
}
}
}
</script>
js制作的SVG動畫,主要利用 requestAnimationFrame 來實現一幀一幀的改變。
我們上述制作的 SVG 圖形、動畫等,運行在低版本IE中,發現SVG只有IE9以上才支持,低版本的并不能支持,為了兼容低版本瀏覽器,可以使用 VML ,VML需要添加額外東西,每個元素需要添加 v:元素,樣式中還需要添加 behavier ,經常用于繪制地圖。由于使用太麻煩,所以我們借助 Raphael.js 庫。
Raphael.js是通過SVG/VML+js實現跨瀏覽器的矢量圖形,在IE瀏覽器中使用VML,非IE瀏覽器使用SVG,類似于jquery,本質還是一個javascript庫,使用簡單,容易上手。
使用之前需要先引入Raphael.js庫文件。cdn的地址為:https://cdn.bootcdn.net/ajax/libs/raphael/2.3.0/raphael.js
3.1、創建畫布
Rapheal有兩種創建畫布的方式:
第一種:瀏覽器窗口上創建畫布
創建語法:
var paper = Raphael(x,y,width,height)
x,y是畫布左上角的坐標,此時畫布的位置是絕對定位,有可能會與其他html元素重疊。width、height是畫布的寬高。
第二種:在一個元素中創建畫布
創建語法:
var paper = Raphael(element, width, height);
element是元素節點本身或ID width、height是畫布的寬度和高度。
3.2、繪制圖形
畫布創建好之后,該對象自帶SVG內置圖形有矩形、圓形、橢圓形。他們的方法分別為:
paper.circle(cx, cy, r); // (cx , cy)圓心坐標 r 半徑
paper.rect(x, y, width, height, r); // (x,y)左上角坐標 width寬度 height高度 r圓角半徑(可選)
paper. ellipse(cx, cy, rx, ry); // (cx , cy)圓心坐標 rx水平半徑 ry垂直半徑
eg:在div中繪制一個圓形,一個橢圓、一個矩形。
<div id="box"></div>
<script>
var paper = Raphael("box",300,300)
paper.circle(150,150,150)
paper.rect(0,0,300,300)
paper.ellipse(150,150,100,150)
</script>
運行結果如下:
除了簡單圖形之外,還可以繪制復雜圖形,如三角形、心型,這時就使用path方法。
使用語法:paper.path(pathString)
pathString是由一個或多個命令組成,每個命令以字母開始,多個參數是由逗號分隔。
eg:繪制一個三角形。
let sj = paper.path("M 0,0 L100,100 L100,0 'Z'")
還可以繪制文字,如果需要換行,使用 \n 。
文字語法:paper.text(x,y,text)
(x,y)是文字坐標,text是要繪制的文字。
3.3、設置屬性
圖形繪制之后,我們通常會添加stroke、fill、stroke-width等讓圖形更美觀,Raphael使用attr給圖形設置屬性。
使用語法:circle.attr({"屬性名","屬性值","屬性名","屬性值",...})
如果只有屬性名沒有屬性值,則是獲取屬性,如果有屬性值,則是設置屬性。
注意:如果只設置一個屬性時,可以省略‘{}’。如:rect.attr('fill','pink')
eg:給上邊的矩形添加邊框和背景色。
<div id="box"></div>
<script>
var paper = Raphael("box",300,300)
let rect = paper.rect(100,100,150,200)
rect.attr({'fill':'red','stroke':'blue','stroke-width':'10'})
</script>
3.4、添加事件
RaphaelJS一般具有以下事件:
click、dblclick、drag、hide、hover、mousedown、mouseout、mouseup、mouseover等以及對應的解除事件,只要在前面加上“un”就可以了(unclick、undblclick)。
使用語法:
obj.click(function(){
//需要操作的內容
})
3.5、添加動畫
animate為指定圖形添加動畫并執行。
使用語法:
obj.animate({
"屬性名1":屬性值1,
"屬性名2":屬性值2,
...
},time,type)
屬性名和屬性值就根據你想要的動畫類型加就ok。
time:動畫所需時間。
type:指動畫緩動類型。常用值有:
eg:點擊矩形,矩形緩緩變大。
<div id="box"></div>
<script>
var paper = Raphael("box",800,500)
let rect = paper.rect(100,100,150,100)
rect.attr({'fill':'red','stroke':'blue','stroke-width':'10'})
rect.attr('fill','pink')
rect.click(function(){
rect.animate({
"width":300,
"height":300
},1000,"bounce")
})
</script>
復制上邊的代碼,分別在各個瀏覽器和低版本IE瀏覽器運行,發現都可以正常運行。SVG的動畫庫挺多了,我們介紹了拉斐爾,有興趣的小伙伴可以自行找找其他庫。
在之前的一篇文章《用HTML5的canvas來畫一個夢幻星空,來學習一下吧》中,我們使用HTML5的canvas畫出了一個夢幻星空的效果。今天這篇文章我們繼續使用canvas來畫出幾個簡單的小球運動效果,一起來看看吧。
本文源碼已經開源到Github上,感興趣的可以自取,Github地址如下。
https://github.com/zhouxiongking/article-pages/tree/master/articles/movaByCanvas
HTML5
首先我們來看看小球直線運動的效果圖,如下所示。
運動效果圖
然后我們來分析下,這個效果是如何實現的。
首先設置畫布寬高等信息,然后利用canvas畫出一個小球,設定初始狀態,包括顏色,半徑,初始位置等信息。
設定一個定時器,每次動態更新小球的位置,由于定時器時間比較短,肉眼觀察下,相當于小球運動的效果。
通過上述的分析,我們得出以下的代碼。
對于canvas頁面的HTML代碼永遠都只包含一個元素。
HTML代碼
接下來是主要的Javascript代碼,首先是畫布,小球初始信息的設置,并設置定時器函數。
小球初始信息
然后是執行的定時器函數,動態更新小球的位置,當小球運動出畫布范圍后,重新從起點位置開始運動。
定時器函數
就這兩段代碼,就可以實現出以上的小球勻速直線運動的效果。
首先,我們來看看小球勻速圓周運動的效果圖,如下所示。
運動效果圖
接下來我們同樣來分析下這個效果是如何實現的。
首先畫出兩個小圓,一個是藍色,一個是紅色,設定初始信息和上述例子一樣。
設定定時器,每次清除畫布后,重新渲染,并且更新小藍球的位置,由于是圓周運動,并不會出現上述例子中移出畫布的情況。
通過上面的描述,我們得出以下代碼,HTML代碼一樣,這里不再給出。
首先是原始小藍球的繪制,并設置定時器。
小藍球的繪制
然后是小紅球的繪制。
小紅球的繪制
最后是定時器函數的實現,在該函數中會讓小藍球旋轉一定的角度。
定時器函數
至此,小球的勻速圓周運動效果代碼就完全實現了。
今天這篇文章主要是利用HTML5的canvas實現了一些簡單的小球運動效果,你學會了嗎?
*請認真填寫需求信息,我們會在24小時內與您取得聯系。