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