CSS是編程科技與設(shè)計(jì)藝術(shù)結(jié)合得最為完美的一項(xiàng)技術(shù),編程的優(yōu)雅在于代碼的清晰可讀,而設(shè)計(jì)的優(yōu)雅在于能夠結(jié)合技術(shù)為用戶帶來一場視覺和交互的盛宴。借助于CSS,不僅可以做出平面設(shè)計(jì)師常用的濾鏡、漸變等設(shè)計(jì)效果,還可以設(shè)計(jì)出一些交互動(dòng)畫,增強(qiáng)用戶的體驗(yàn)。
顏色漸變是設(shè)計(jì)師必不可少的,CSS linear-gradient() 函數(shù)用于創(chuàng)建一個(gè)表示兩種或多種顏色線性漸變的圖片。
技術(shù)文檔:CSS 漸變屬性linear-gradient
使用開發(fā)者工具新建一個(gè)gradient的頁面,然后在gradient.wxml頁面輸入以下代碼:
<view class="gradient-display">
</view>
在gradient.wxss里輸入:
.gradient-display{
background-image:linear-gradient(red, blue);
width: 100vw;
height: 100vh;
}
.gradient-display{
background-image:linear-gradient(red, blue);
width: 100vw;
height: 100vh;
}
我們發(fā)現(xiàn)因?yàn)楸尘皥D片使用了linear-gradient屬性,它默認(rèn)的漸變方向是從上到下,第一個(gè)顏色(這里為紅色red)是起始顏色,第二個(gè)顏色(這里為藍(lán)色blue)為停止顏色。
將.gradient-display里的backgound-image的值依次換成以下:
改變漸變的方向
background-image: linear-gradient(45deg, blue, red);
/* 漸變軸為45度,從藍(lán)色漸變到紅色 */
也可以這樣寫,代碼具體含義可以去參考技術(shù)文檔了解
background-image:linear-gradient(to left top, blue, red);
/* 從右下到左上、從藍(lán)色漸變到紅色 */
增加更多顏色變換
background-image:linear-gradient(0deg, blue, green 40%, red);
/* 從下到上(漸變軸為0度),從藍(lán)色開始漸變、到高度40%位置是綠色漸變開始、最后以紅色結(jié)束 */
顏色百分比
background-image: linear-gradient(19deg, rgb(33, 212, 253) 0%, rgb(183, 33, 255) 100%);
小任務(wù):參考徑向漸變技術(shù)文檔下面的examples,在小程序里實(shí)現(xiàn)一個(gè)徑向漸變的案例。通過實(shí)戰(zhàn)的方式,理解技術(shù)文檔就像辭典,前期學(xué)習(xí)不必做到全部看懂,能夠拿來用就行。
濾鏡對(duì)于設(shè)計(jì)師來說一定不會(huì)陌生,CSS也有濾鏡filter屬性,可以對(duì)圖片進(jìn)行高斯模糊、調(diào)整對(duì)比度、轉(zhuǎn)換為灰度圖像、色相旋轉(zhuǎn)、圖片透明等操作。
相比于Photoshop等工具的濾鏡效果來說,使用CSS可以批量化處理圖片濾鏡效果,而且通過編程的手段不僅可以疊加各種效果,而且還能與交互相結(jié)合。
這里我們主要介紹用的最多的三個(gè)濾鏡效果,高斯模糊blur,圖片變灰grayscale(%),圖片透明opacity(%),其他濾鏡效果大家以后可以閱讀技術(shù)文檔。
技術(shù)文檔:濾鏡屬性
使用開發(fā)者工具新建一個(gè)filter頁面,然后在filter.wxml輸入:
<view class="filter-display">
<view>blur高斯模糊</view>
<image class="blur" mode="widthFix" src="http://7n.w3cschool.cn/attachments/knowledge/202006/77455.png"></image>
<view>grayscale圖片變灰</view>
<image class="grayscale" mode="widthFix" src="http://7n.w3cschool.cn/attachments/knowledge/202006/77455.png"></image>
<view>opacity圖片透明</view>
<image class="opacity" mode="widthFix" src="http://7n.w3cschool.cn/attachments/knowledge/202006/77455.png"></image>
<view>多個(gè)濾鏡疊加,注意css的寫法即可</view>
<image class="multiple" mode="widthFix" src="http://7n.w3cschool.cn/attachments/knowledge/202006/77455.png"></image>
</view>
然后在filter.wxss里輸入:
.filter-display img{
width: 150px;height: auto;
}
.blur{
filter: blur(8px);
}
.grayscale{
filter: grayscale(90%);
}
.opacity{
filter: opacity(25%);
}
.multiple{
filter: blur(8px) grayscale(90%) opacity(25%);
}
圖片由灰色變?yōu)椴噬?/strong>
在實(shí)際應(yīng)用中,會(huì)在網(wǎng)站上添加很多不同色系的圖片,比如合作伙伴的logo、嘉賓的照片、新聞圖片等,為了讓照片和網(wǎng)站的色系保持一致,因此就需要對(duì)所有圖片進(jìn)行統(tǒng)一的濾鏡處理,而將圖片變灰是比較常見的一種做法。
有時(shí)我們還會(huì)給這些變灰的圖片添加一個(gè)交互特效,那就是當(dāng)鼠標(biāo)懸停在圖片上時(shí),圖片會(huì)由灰色變?yōu)椴噬?/p>
在filter.wxml輸入如下代碼:
<view class="filter-display">
<text>將鼠標(biāo)懸停(模擬器)或手指(手機(jī)微信)按住或放開圖片查看效果</text>
<view class="grayscale" hover-class="grayscale-hover" >
<image mode="widthFix" src="http://7n.w3cschool.cn/attachments/knowledge/202006/77455.png"></image>
</view>
</view>
在技術(shù)文檔view組件,我們可以看到hover-class是指定按下去的樣式類。
在filter.wxss里添加如下樣式:
.filter-display image{
width: 150px;height: auto;
}
.grayscale{
filter: grayscale(90%);
}
.grayscale-hover{
filter:grayscale(0);
}
高斯模糊的背景
高斯模糊是UI設(shè)計(jì)師經(jīng)常用到的一個(gè)特效。平面設(shè)計(jì)師通常是人工、手動(dòng)去給圖片設(shè)計(jì)樣式,而UI設(shè)計(jì)師則可以結(jié)合CSS給相同類別的所有圖片添加統(tǒng)一的樣式,比如我們希望每個(gè)用戶信息頁的背景、每篇文章頂部的背景都不一樣。
在filter.wxml輸入如下代碼:
<view class="userinfo-display">
<view class="blur-bg"></view>
<view class="user-img">
<image src="http://7n.w3cschool.cn/attachments/knowledge/202006/77455.png"></image>
</view>
</view>
在filter.wxss里添加如下樣式:
.blur-bg {
width: 750rpx;height: 300rpx;overflow: hidden;
background: url(https://hackwork-1251009918.cos.ap-shanghai.myqcloud.com/handbook/html5/blurimg.jpg);
background-size: cover;
position: fixed;
filter: blur(15px);
z-index: -1;
}
.user-img{
width: 750rpx;height: 300rpx;
display: flex;
justify-content: center;
align-items:center;
}
.user-img image {
width: 80rpx;height: 80rpx;
border-radius: 100%;
}
UI設(shè)計(jì)師在處理網(wǎng)頁元素的設(shè)計(jì)時(shí),不會(huì)像平面設(shè)計(jì)師一樣可以對(duì)每個(gè)元素都差異化的精心雕琢,畢竟CSS是沒法做到像Photoshop等設(shè)計(jì)工具那樣復(fù)雜,但是他可以做到批量。所以相對(duì)于平面設(shè)計(jì)師而言,UI設(shè)計(jì)師更注重單調(diào)且統(tǒng)一。
CSS transform屬性能通過修改CSS視覺格式化模型的坐標(biāo)空間旋轉(zhuǎn)、縮放、傾斜或平移給定的組件。
關(guān)于變形Transform、過渡Transition、動(dòng)畫Animation的技術(shù)文檔,大家先不要急著鉆研,粗略瀏覽一下即可,以后有時(shí)間再來研究。
技術(shù)文檔:CSS 變形屬性transform
使用微信開發(fā)者工具新建一個(gè)transform頁面,在transform.wxml里輸入以下代碼
<view class="transform-display">
<view>縮放,scale(x,y),x為長度縮放倍數(shù),y為寬度縮放倍數(shù),如果只有一個(gè)值,則是長和寬縮放的倍數(shù)</view>
<image class="scale" mode="widthFix" src="http://7n.w3cschool.cn/attachments/knowledge/202006/77455.png" ></image>
<view>平移,translate(x,y),x為x軸平移的距離,y為y軸平移的距離,如果只有一個(gè)值,則是x和y軸縮放的距離,值可以為負(fù)數(shù)</view>
<image class="translate" mode="widthFix" src="http://7n.w3cschool.cn/attachments/knowledge/202006/77455.png" ></image>
<view>旋轉(zhuǎn),rotate()里的值為旋轉(zhuǎn)的角度</view>
<image class="rotate" mode="widthFix" src="http://7n.w3cschool.cn/attachments/knowledge/202006/77455.png" ></image>
<view>傾斜,skew()里的值為旋轉(zhuǎn)的角度</view>
<image class="skew" mode="widthFix" src="http://7n.w3cschool.cn/attachments/knowledge/202006/77455.png" ></image>
</view>
在transform.wxss文件里添加如下樣式:
.transform-display image{
width: 80px;height: 80px;
}
.scale{
transform: scale(1,0.5);
}
.translate{
transform: translate(500px,20px);
}
.rotate{
transform: rotate(45deg);
}
.skew{
transform: skew(120deg);
}
CSS transitions 可以控制組件從一個(gè)屬性狀態(tài)切換為另外一個(gè)屬性狀態(tài)時(shí)的過渡效果。
技術(shù)文檔:CSS 過渡屬性Transition
建議大家只用簡寫屬性transition,多個(gè)屬性連著一起寫會(huì)更好一些,transition的語法如下,語法比較復(fù)雜,大家可以結(jié)合后面的實(shí)際案例
.selector {
transition: [transition-property] [transition-duration] [transition-timing-function] [transition-delay];
}
背景顏色的變化
同樣還是把下面的代碼輸入到小程序的頁面當(dāng)中,通過實(shí)戰(zhàn)的方式來查看效果。
使用開發(fā)者工具新建一個(gè)transition頁面,然后在transition.wxml頁面里面輸入以下代碼:
<view class="transition-display">
<view class="box bg-color" hover-class="bg-color-hover"></view>
</view>
然后在transition.wxss里面輸入:
.box{width: 150px;height: 150px;cursor: pointer;}
.bg-color{
background-color:green;
}
.bg-color-hover{
background-color: yellow;
transition: background-color 5s ease-out 3s;
}
動(dòng)畫是需要觸發(fā)的,這里我們使用的是懸停hover-class來觸發(fā)效果,把鼠標(biāo)放在元素上8秒以上,看一下正方形的背景顏色有什么變化。
了解了效果之后,我們?cè)賮斫Y(jié)合實(shí)際案例理解語法:
技術(shù)文檔:可設(shè)置動(dòng)畫的屬性列表
我們來查看一個(gè)綜合案例,在transition.wxml里輸入
<view>
<text>盒子的多個(gè)屬性一起動(dòng)畫: width, height, background-color, transform. 將鼠標(biāo)或手指懸停在盒子上查看動(dòng)畫之后放開。</text>
<view class="animatebox" hover-class="animatebox-hover"></view>
</view>
在transition.wxss里輸入
.animatebox {
display: block;
width: 100px;
height: 100px;
background-color: #4a9d64;
transition:width 2s, height 2s, background-color 2s, transform 2s;
}
.animatebox-hover {
background-color: #cd584a;
width:200px;
height:200px;
transform:rotate(180deg);
}
CSS animations 使得可以將從一個(gè)CSS樣式配置轉(zhuǎn)換到另一個(gè)CSS樣式配置。動(dòng)畫包括兩個(gè)部分:描述動(dòng)畫的樣式規(guī)則和用于指定動(dòng)畫開始、結(jié)束以及中間點(diǎn)樣式的關(guān)鍵幀。
技術(shù)文檔:CSS動(dòng)畫屬性Animation
<view class="fadeIn">
<view>注意會(huì)有一個(gè)無限顏色漸變變化的動(dòng)畫</view>
<image mode="widthFix" src="http://7n.w3cschool.cn/attachments/knowledge/202006/77455.png" ></image>
</view>
在wxss里輸入以下代碼
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.fadeIn {
animation: 4s linear 0s infinite alternate fadeIn;
}
CSS3 動(dòng)畫庫 Animate.css
Animate.css是一個(gè)有趣的,跨瀏覽器的css3動(dòng)畫庫,只需要你引入一個(gè)CSS文件,就能夠給指定的元素添加動(dòng)畫樣式。
技術(shù)文檔:Animate.css
它預(yù)設(shè)了抖動(dòng)(shake)、閃爍(flash)、彈跳(bounce)、翻轉(zhuǎn)(flip)、旋轉(zhuǎn)(rotateIn/rotateOut)、淡入淡出(fadeIn/fadeOut)等多達(dá) 80種動(dòng)畫效果,幾乎包含了所有常見的動(dòng)畫效果。
小任務(wù):參考Animate.css的shake抖動(dòng),在小程序?qū)崿F(xiàn)一個(gè)組件抖動(dòng)的案例。除了引入一些weui這樣的樣式框架,還有一些開源的庫我們也可以學(xué)習(xí)和借鑒,更多內(nèi)容則需要大家以后可以深入學(xué)習(xí)了。
更多建議: