如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里
微信小程序動(dòng)畫之點(diǎn)擊效果
代碼:
js:
// pages/test/test.js
Page({
containerTap: function (res) {
var that = this
var x = res.touches[0].pageX;
var y = res.touches[0].pageY + 85;
this.setData({
rippleStyle: ''
});
setTimeout(function () {
that.setData({
rippleStyle: 'top:' + y + 'px;left:' + x + 'px;-webkit-animation: ripple 0.4s linear;animation:ripple 0.4s linear;'
});
}, 200)
},
})
wxml:
<view class="ripple" style="{{rippleStyle}}"></view>
<view class="container" bindtouchstart="containerTap"></view>
wxss:
page{height:100%}
.container{
width:100%;
height:100%;
overflow: hidden
}
.ripple {
background-color:aquamarine;
border-radius: 100%;
height:10px;
width:10px;
margin-top: -90px;
position: absolute;
overflow: hidden
}
@-webkit-keyframes ripple {
100% {
webkit-transform: scale(12);
transform: scale(12);
background-color: transparent;
}
}
藍(lán)藍(lán)設(shè)計(jì)( m.yvirxh.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。
如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里
2018年如自己所愿,終于有機(jī)會(huì)可以嘗試下數(shù)據(jù)大屏的可視化設(shè)計(jì),但是想象總歸是美好的,新手上崗第一次總是那么不太如意,陌生而又熟悉著。在做過幾次嘗試后,自己又私下里翻閱了一些關(guān)于數(shù)據(jù)大屏方面的設(shè)計(jì)文章,好的設(shè)計(jì)圖片。有很多不足,也有很多剛開始做的時(shí)候沒有注意到的點(diǎn),這次整理作品,也順便把大概的設(shè)計(jì)流程整理了一下。給自己的一個(gè)復(fù)盤總結(jié),也是一次設(shè)計(jì)分享。
文章來源:UI中國
藍(lán)藍(lán)設(shè)計(jì)( m.yvirxh.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。
如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里
這周萌芽決定好好學(xué)習(xí)一下ES6,感興趣的小伙伴們來一起學(xué)習(xí)吧~
ES6(ES2015)——IE10+、Chrome、FireFox、移動(dòng)端、Node.js
編譯轉(zhuǎn)換
1.在線轉(zhuǎn)換(browser.js)
2.提前編譯
ES6新特性
1.變量
2.函數(shù)
3.數(shù)組
4.字符串
5.面向?qū)ο?br />
6.promise(串行化異步交互)
7.generator(把同步拆分為異步)
8.模塊化(ES6自帶模塊化)
變量
var
1.可以重復(fù)聲明
2.無法限制修改
3.沒有塊級(jí)作用域(沒有語法塊?。?br />
let 不能重復(fù)聲明(變量,可以修改)
const 不能重復(fù)聲明(常量,不能修改)
塊級(jí)作用域,let在外部無法調(diào)用
函數(shù)
箭頭函數(shù) =>
function show(){
//這是我們平常的函數(shù)
}
let show=()=>{
//箭頭函數(shù)
}
//區(qū)別不大,把function省略掉換成箭頭,主要就是為了方便,可傳參
1.如果只有一個(gè)參數(shù),()可以省去。
let show=a=>{
return a*2
}
2.如果只有一個(gè)return,{}可以省略
let show=a=>a*2;
let arr = [15,2,37,11,67,4,6]; //排序
arr.sort((n1,n2)=>{
return n1-n2;
})
arr.sort((n1,n2)=> n1-n2 );
console.log(arr)
函數(shù)的參數(shù)
1.參數(shù)擴(kuò)展/展開
2.默認(rèn)參數(shù)
參數(shù)的擴(kuò)展
1.收集參數(shù)
function arrData(a,b,...args) {
alert(a);
alert(b);
alert(args);
}
*注意:Rest Parameter必須是最后一個(gè)(除其他語言)
1
2.展開數(shù)組
arrData(...arr); //等價(jià)于 arrData(1,2,3);
1
這仨點(diǎn)兒【…】代表把數(shù)組內(nèi)容掏出來放這。
默認(rèn)參數(shù)
//jQuery中的默認(rèn)參數(shù)
$('#div1').animate({width:'200px'});
$('#div1').animate({width:'200px'},1000);
//ES6默認(rèn)傳參
function showOne(a,b=10,c=5) {
console.log(a,b,c)
}
解構(gòu)賦值
1.左右兩邊解構(gòu)必須一樣
2.右邊必須是個(gè)合法的東西
3.聲明和賦值不能分開(必須在一句話里完成)
let [one,two,three] = [10,20,30];
let {one1,two2,three3} = {a:10,b:20,c:30};
數(shù)組
map 映射(一個(gè)對一個(gè)。傳幾個(gè)返回幾個(gè))
let result = arr.map(function (item) {
return item*2;
});//簡寫一下
let result = arr.map(item=>item*2 );
//判斷考試成績
let score = [19,18,78,65,100];
let result = score.map(item=>item>=60?'及格':'不及格');
reduce 匯總(算個(gè)總數(shù),算個(gè)平均數(shù))
//tmp:上次求和總和,為兩兩相加,如果之前沒有結(jié)果則為傳進(jìn)來的數(shù)組的第一個(gè)數(shù)。
//itme:當(dāng)前的數(shù)。
//index:執(zhí)行的次數(shù)。
let result = arr.reduce(function (tmp, item, index) {
return tmp + item;
});
//簡寫
arr.reduce((tmp, item, index)=>tmp + item);
filter 過濾器(篩選掉不需要的)
let result = arr.filter(item=>{
if (item%2 == 0){
return true;
} else {
return false;
}
});
//簡寫
let result = arr.filter(item=>item%2 == 0);
//***萌芽在這里提一下!json和之前的item都不是固定的,可以隨便命名。意思都是當(dāng)前的值!
let arrProce = [
{title:'男士襯衫',price:75},
{title:'女士包包',price:5000},
{title:'男士包包',price:20},
{title:'女士鞋',price:2500}
];
let result = arrProce.filter(jsom=>json.price >= 2000);
console.log(result);
forEach循環(huán)(迭代)
arr.forEach((item,index)=>{
alert(index+":"+item)
})
字符串
1.多了倆新方法
startsWith(); //判斷開頭,返回布爾類型
endWith(); //判斷結(jié)尾,返回布爾類型
let str='hello,world!'
str.startsWith('h')
str.endWith('!') //返回true
2.字符串模板
字符串連接
2.1直接把東西塞進(jìn)字符串里面 ${東西}
2.2可以折行
<h1>${title}</h1>
<p>${content}</p>
ES6的面向?qū)ο?br />
1.class關(guān)鍵字,構(gòu)造器和類分開啦。
2.class里面直接加方法。
class User{
constructor(name,password){ //構(gòu)造器
this.name = name;
this.password = password;
}
showName(){
alert(this.name);
}
showPass(){
alert(this.password);
}
}
var user = new User('萌芽子','123456');
user.showName();
user.showPass();
繼承
class VipUser extends User{
constructor(name,password,age){
super(name,password); //super 超類
this.age = age;
}
showAge(){
alert(this.age)
}
}
var user = new VipUser('萌芽子','123456','18歲');
user.showName();
user.showPass();
user.showAge();
不得不說作為一只JAVA汪,這種寫法真得勁!
面向?qū)ο蟮膽?yīng)用
React
1.組件化(class)
2.JSX(JSXbabelbrowser.js)
JSX屬于JS的擴(kuò)展版
class Test extends React.Component{
constructor(...args){
super(...args);
}
render(){
return <li>{this.props.str}</li> //props:屬性
}
}
window.onload = function(){
let oDiv = document.getElementById('div1');
ReactDOM.render(
<ul>
<Item str="你好"></Item>
<Item str="世界!"></Item>
</ul>
oDiv
);
};
打卡,下次就學(xué)這個(gè)了!===============
json
1.JSON對象
JSON.stringify() json轉(zhuǎn)字符串
let json = {a:10, b:20};//JSON.stringify 字符串化
let str = 'http://www.baidu.com/path/user?data='+JSON.stringify(json);
str = 'http://www.baidu.com/path/user?data='+encodeURIComponent(JSON.stringify(json));
alert(str)
1
2
3
4
JSON.parse() 字符串轉(zhuǎn)json
let str = '{"a":12,"b":20,"c":"可樂"}';
let json = JSON.parse(str);
console.log(json);
2.簡寫
在新版的ES6當(dāng)中名字一樣的鍵(key)和值(value)可以只寫一個(gè)。
let a = 12;
let b = 5;
let json = {a,b,c:21};
簡化了JSON中的方法。
let json ={
a:12,
showJson(){
alert(this.a);
}
};
json.showJson();
json的標(biāo)準(zhǔn)寫法:
1.只能用雙引號(hào)
2.所有的名字都必須用引號(hào)包起來(所有的key都必須是雙引號(hào))
{a:12,b:5} × 錯(cuò)誤的寫法
{"a":"萌萌萌","b":"芽子"} √ 正確的寫法
1
2
Promise(承諾)
異步:操作之間沒啥關(guān)系,同時(shí)進(jìn)行多個(gè)操作
同步:同時(shí)只能做一件事
優(yōu)缺點(diǎn):
異步:代碼更復(fù)雜
同步:代碼簡單
Promise——消除異步操作
*用同步一樣的方式來書寫異步代碼;
let p = new Promise(function (resolve,reject) {
//異步代碼
//resolve——成功
//reject——失敗
})
-----------------------------------------訪問我們的arr.txt文件,這里用到了jQuery的ajax就不詳細(xì)介紹了。
let p = new Promise(function (resolve, reject) {
//異步代碼
//resolve——成功
//reject——失敗
$.ajax({
url: 'arr.txt',
dataType: 'json',
success(arr) {
resolve(arr);
}, error(err) {
reject(err);
}
})
});
//結(jié)果
p.then(function (arr) {
alert('成功啦' + arr)
}, function (err) {
alert('失敗了' + err)
console.log(err)
});
-----------------------------------------------多個(gè)請求地址
Promise.all([p1,p2]).then(function (arr){
let [res1,res2] = arr;
alert('全部成功啦');
console.log(res1);
console.log(res2);
},function (){
alert('至少有一個(gè)失敗了');
});
----------------------------再簡化
function createPromise(url){
return new Promise(function (resolve, reject) {
$.ajax({
url,
dataType: 'json',
success(arr) {
resolve(arr);
}, error(err) {
reject(err);
}
})
});
}
Promise.all([
createPromise('arr.txt'),
createPromise('json.txt')
]).then(function (arr){
let [res1,res2] = arr;
alert('全部成功啦');
console.log(res1);
console.log(res2);
},function (){
alert('至少有一個(gè)失敗了');
});
----------------------完美寫法
Promise.all([
$.ajax({url:'arr.txt',dataType:'json'}),
$.ajax({url:'json.txt',dataType:'json'})
]).then(function (results) {
let [arr,json] = results;
alert("成功了");
console.log(arr,json)
},function () {
alert("失敗了")
})
我們有了promise之后的異步:
Promise.all([ $.ajax(),$.ajax() ]).then( results=>{
//對了
},err=> {
//錯(cuò)了
})
Promise.all (必須全部成功)
Promise.race(同事讀多個(gè)數(shù)據(jù),即使失敗也沒關(guān)系)
generator(生成器)
普通函數(shù) - 一路到底執(zhí)行不可中斷
generator函數(shù) - 可中斷
function * show() {
alert('a');
yield;//暫時(shí)放棄執(zhí)行
alert('b');
}
let genObj = show();
genObj.next();
genObj.next();
yield
yield傳參
function * show(num1,num2) {
alert(`${num1},${num2}`);//es6
alert('a');
let a = yield;//暫時(shí)放棄執(zhí)行
console.log(a);
alert('b');
}
let genObj = show(99,88);
genObj.next(12);//第一個(gè)next無法給yield傳參的,廢的
genObj.next(5);
yield返回
function *show() {
alert('a');
yield 12;
alert('b');
return 55;
}
let gen = show();
let res1 = gen.next();
console.log(res1); //{value: 12, done: false}
let res2 = gen.next();
console.log(res2);//{value: undefined, done: true} 加了return {value: 55, done: true}
還沒做的菜叫函數(shù)參數(shù),過程是yield之前函數(shù)里面的東西,干凈的菜,切好的菜是中間過程也就是yield,最終我們將它返回出去!不得不說這圖很生動(dòng)。
異步操作
1.回調(diào)
$.ajax({
url:'url',
dataType:'json',
success(data){
$.ajax({
url:'xxx',
dataType: 'json',
success(data) {
//完事兒了
},error(err) {
alert('錯(cuò)了')
}
})
},error(){
alert('失敗')
}
})
2.Promise
Promise.all([
$.ajax({url:xxx,dataType:'json'}),
$.ajax({url:xxx,dataType:'json'}),
$.ajax({url:xxx,dataType:'json'})
]).then(results=>{
//完事兒
},err=>{
//錯(cuò)誤的
})
3.generator
runner(function *(){
let data1 = yield $.ajax({ulr:xxx,dataType:'json'});
let data2 = yield $.ajax({ulr:xxx,dataType:'json'});
let data3 = yield $.ajax({ulr:xxx,dataType:'json'});
})
1
2
3
4
5
generator(不能用=>函數(shù))
邏輯判斷下非常好用。
Promise:一次讀一堆。
generator:邏輯性。
runner(function *(){
let userData = yield $.ajax({url:'getUserData',dataType:'json'});
if(userData.type == 'VIP'){
let items = yield $.ajax({url:'getVIPItems',dataTyoe:'jsom'});
}else{
let items = yield $.ajax({url:'getItems',dataTyoe:'jsom'});
}
//生成...
}
})
總結(jié)
1.變量:
var:能重復(fù)聲明、函數(shù)級(jí)
let: 嚴(yán)格的,不能重復(fù)聲明,塊級(jí),變量
const:嚴(yán)格的,不能重復(fù)聲明,塊級(jí),常量
2.箭頭函數(shù)
2.1方便
i.如果只有一個(gè)參數(shù),()可以省
ii.如果只有一個(gè)return,{}可以省
2.2修正了this
this相對正常點(diǎn)
3.參數(shù)擴(kuò)展
…能收集
…能擴(kuò)展
默認(rèn)參數(shù)
4.數(shù)組方法
map 映射
reduce 匯總
filter 過濾
forEach 循環(huán)
5.字符串
starsWith/endWith
字符串模板:${a}xxx
6.Promise
封裝異步操作
Promise.all([]);
7.generator
function *show(){
yield
}
8.JSON
JSON.stringify({ a :12,b :5}) => {“a”:12,“b”:5}
JSON.parse(’{“a”:12,“b”:5}’) =>{a:12,b:5}//字符串
9.解構(gòu)賦值
let [a,b,c] = [12,5,8];
左右結(jié)構(gòu)一樣,右邊是個(gè)合法的東西,連生命帶賦值一次完成。
10.面向?qū)ο?br />
class Test(){
constructor(xxx){
this = xxx
}
方法1(){
}
方法2(){
}
}
繼承
class Test2 extends Test(){
constructor(){
super();
}
}
談?wù)凟S7和ES8
1.數(shù)組includes
數(shù)組是否包含某個(gè)東西
2.數(shù)組 keys/values/entries
for…in(循環(huán)數(shù)組)
對于數(shù)組來講循環(huán)的是下標(biāo)
對于json循環(huán)的是key
for…of(循環(huán)迭代器)
對于數(shù)組循環(huán)的是值
不能用于JSON,json并不是迭代器
keys = >所有的key拿出來 0,1,2,3…
values =>所有的values拿出來 23,5,8,1…
entries =>所有的鍵值對拿出來 {key:0,value:a}
let arr = [12,5,8,99];
for(let [key,value] of arr.entries()){
alert(`${key} = ${value}`);
預(yù)覽版,目前極大多數(shù)瀏覽器都不支持,以后可能會(huì)支持,了解一下就好。
藍(lán)藍(lán)設(shè)計(jì)( m.yvirxh.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。
如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里
數(shù)字化經(jīng)濟(jì)日益發(fā)達(dá)的現(xiàn)階段,數(shù)字化產(chǎn)品作為線上觸點(diǎn),也就逐漸成為服務(wù)中的標(biāo)配,它更像一個(gè)服務(wù)員通過屏幕與用戶發(fā)生對話。在這場對話中,好的設(shè)計(jì)應(yīng)該像一門語言,能夠承載起傳達(dá)與溝通的工具屬性。我們也可以見到,越來越多的設(shè)計(jì)團(tuán)隊(duì)都會(huì)構(gòu)建一套屬于自己產(chǎn)品的設(shè)計(jì)語言系統(tǒng)。對于團(tuán)隊(duì)內(nèi)部,它的意義在于通過系統(tǒng)化的設(shè)計(jì)規(guī)則,來控制產(chǎn)品長期迭代的熵值,以及提升團(tuán)隊(duì)的協(xié)同效率,同時(shí),設(shè)計(jì)師有機(jī)會(huì)從重復(fù)的勞動(dòng)中解放出來,投入更多精力到探討問題本質(zhì)實(shí)現(xiàn)價(jià)值創(chuàng)新。就好像在石器時(shí)代,祖先們記錄事件或表達(dá)情感的混亂程度,遠(yuǎn)遠(yuǎn)高于現(xiàn)代人,關(guān)鍵在于是否擁有一套成熟的語言系統(tǒng)。
對于外部用戶,設(shè)計(jì)語言系統(tǒng)可以讓產(chǎn)品在不同終端、不同場景中的表現(xiàn)保持一致性,也有機(jī)會(huì)通過植入品牌基因的方式形成視覺錘,提升產(chǎn)品的識(shí)別度以及消費(fèi)者對品牌的認(rèn)知。就好像,我們可以通過「豬鼻」車頭識(shí)別出那是寶馬,通過「青蛙眼」車燈知道那是保時(shí)捷,是因?yàn)檫@些汽車品牌通過長期保持某個(gè)「一致性」的表現(xiàn),形成一套高識(shí)別度的設(shè)計(jì)語言來表達(dá)「這就是我」。
在這里我們將借助語言學(xué)的角度,來探討數(shù)字化產(chǎn)品界面設(shè)計(jì)語言系統(tǒng)的構(gòu)建。在語言的應(yīng)用中,我們通常會(huì)涉及語法、語素、語句、語境、語氣等維度,通過不同的組合達(dá)成應(yīng)景的表達(dá)與適時(shí)的溝通。
1. 語法
設(shè)計(jì)原則,可以理解為設(shè)計(jì)語言中的語法,是構(gòu)建設(shè)計(jì)語言系統(tǒng)的起點(diǎn),用于傳達(dá)品牌主張或設(shè)計(jì)理念,它將指引業(yè)務(wù)設(shè)計(jì)執(zhí)行的方向。
制定設(shè)計(jì)原則時(shí),首先研究用戶特性,聚焦產(chǎn)品核心價(jià)值,然后通過腦暴等形式選擇有特點(diǎn)的維度,結(jié)合用戶體驗(yàn)與品牌屬性將其視覺化,最后用簡要的語言歸納出來。
例如 Airbnb 的設(shè)計(jì)原則簡單歸納為幾點(diǎn):
2. 語素
視覺基礎(chǔ)是構(gòu)成設(shè)計(jì)語言的最小單位,就像語素是語言中最小的音義結(jié)合體。在原子設(shè)計(jì)理論中,它屬于最小粒度的元素,通常包括:顏色、字體、圖標(biāo)、網(wǎng)格等。
3. 語句
組件就像由若干個(gè)語素組成的語句,比如一個(gè)基礎(chǔ)按鈕,通常就是由顏色、字體、邊距等元素組成。而我們平時(shí)所說的組件庫,其實(shí)就是一部詞典,其中包含了設(shè)計(jì)系統(tǒng)中所需的基礎(chǔ)組件與用法,在界面設(shè)計(jì)中也具有較高的通用性。
4. 語義
符號(hào)是語言的載體,但符號(hào)本身沒有意義,只有被賦予含義的符號(hào)才能夠被使用,這時(shí)候語言就轉(zhuǎn)化為信息,而語言的含義就是語義。在視覺傳達(dá)設(shè)計(jì)中也一樣,使用的圖標(biāo)或圖形,需具備正確的語義屬性。如果商場導(dǎo)視設(shè)計(jì)中非要使用「裙子」圖標(biāo)來代表「男廁」入口,如此混淆語義挑戰(zhàn)公眾認(rèn)知,那就等著被投訴吧。
5. 語境
這里說的語境包含 3 個(gè)維度:一是流程意義上的上下文,二是產(chǎn)品屬性中的語境,三是用戶當(dāng)下所處的環(huán)境。
當(dāng)設(shè)計(jì)需要對上下文進(jìn)行特別處理時(shí),有可能對話的層級(jí)次序是受限于屏幕稀缺性,通??刹捎?Z-Depth 疊加(Material Design屬性)、步驟條、元素關(guān)聯(lián)轉(zhuǎn)場動(dòng)效等方式。舉個(gè)常見的例子,當(dāng)用戶發(fā)起一個(gè)刪除數(shù)據(jù)的請求時(shí),界面會(huì)彈出一個(gè)二次確認(rèn)的模態(tài)會(huì)話,用戶點(diǎn)擊確認(rèn)之后才會(huì)執(zhí)行刪除操作。
過去很長一段時(shí)間,數(shù)字產(chǎn)品設(shè)計(jì)圈內(nèi)熱衷于討論的兩種風(fēng)格類型:隱喻(擬物化)與抽象(扁平化),時(shí)至今日可以說扁平化的風(fēng)格在應(yīng)用數(shù)量上壓倒擬物化風(fēng)格。然而,我依舊認(rèn)為設(shè)計(jì)的風(fēng)格策略取決于產(chǎn)品屬性中的語境,這也是如今 iOS 人機(jī)界面設(shè)計(jì)規(guī)范所提倡的,它不再像早前的規(guī)則片面拒絕隱喻設(shè)計(jì),而是鼓勵(lì)設(shè)計(jì)師將用戶在現(xiàn)實(shí)中最為熟悉的視覺樣式,即操作方法映射與界面設(shè)計(jì)之中,蘋果官方的 Garageband 就是一個(gè)很有說服力的例子。
針對用戶當(dāng)下所處的環(huán)境來適配界面語境,常見通過界面換膚的手法來實(shí)現(xiàn),比如微信讀書等閱讀應(yīng)用為用戶提供白天模式或黑夜模式的選擇。用戶所處的外部環(huán)境因素可以很大程度上決定界面語言的應(yīng)用,就好像在菜市場買東西要靠吼,在圖書館借書僅需要用肢體語言便能達(dá)成。
△ 如上,微信讀書針對外部環(huán)境因素的自定義「語境」
6. 語氣
交互界面通常需要使用說明或提示文案來指導(dǎo)用戶完成操作,大多數(shù)情況下都是使用第二人稱,就像在與用戶對話,從以用戶為中心的角度上講,建議保持謙遜、友善的語氣,盡可能避免使用晦澀的專業(yè)術(shù)語,謹(jǐn)慎使用帶有強(qiáng)烈情感屬性的感嘆號(hào),或過于口語化的語言。另外,語氣的拿捏也將直接影響到與用戶的距離感,以及當(dāng)下的應(yīng)景度。
7. 語速
語速在這里指的是界面的信息密度,在不同的場合對語速的控制能夠提升接受者的體驗(yàn),視覺設(shè)計(jì)也同樣需要注意把握間距與留白,網(wǎng)格系統(tǒng)在這里可以起到「節(jié)拍器」的作用,借助節(jié)拍器可以讓設(shè)計(jì)更具節(jié)奏感。而交互意義上的語速,更多體現(xiàn)在操作路徑的長度,以及動(dòng)效的速率。
△ 如上,富途證券在產(chǎn)品介紹與盤中交易2個(gè)不同場景下的「語速」
8. 響度
其實(shí)就好像我們說話可以通過音量大小來控制信息的可感知程度,希望接受者聽清楚的就說大聲一點(diǎn)。湯姆奧斯本(Tom Osborne)的視覺響度指南(visual loudness guide)是一個(gè)如何系統(tǒng)地處理按鈕和鏈接的例子,它們不是單獨(dú)列出,而是作為一個(gè)套件呈現(xiàn),并且根據(jù)每個(gè)元素的視覺沖擊力會(huì)相應(yīng)的擁有一個(gè)「響度」值。我們在構(gòu)建設(shè)計(jì)語言系統(tǒng)時(shí),也同樣需要設(shè)置梯級(jí)「響度」的按鈕、字重等組件來滿足不同場景的表達(dá)需求。
△ Tom Osborne的視覺響度指南
1. 基因遺傳
同一個(gè)語系下的語言,無論是經(jīng)過了朝代更迭,還是地域的遷徙,一定會(huì)保留一些固有的特性,這就是語言系統(tǒng)本身具有基因遺傳的生態(tài)特性。
一套成熟的設(shè)計(jì)語言系統(tǒng),也同樣對產(chǎn)品設(shè)計(jì)表現(xiàn)著基因級(jí)別的底層影響力:在「代際」遺傳上,體現(xiàn)在經(jīng)久不衰的堅(jiān)持。比如 Burberry 的格子紋理,無論是在哪一年的產(chǎn)品款式上,都不會(huì)丟失這個(gè)屬性。在「同輩」影響上,通常體現(xiàn)在不同終端場景下產(chǎn)品表現(xiàn)的一致性,或是兄弟產(chǎn)品的相似程度。
2. 動(dòng)態(tài)進(jìn)化
設(shè)計(jì)語言系統(tǒng)不是一份靜態(tài)的組件庫與規(guī)范文檔,而是一個(gè)動(dòng)態(tài)的且能自我進(jìn)化的系統(tǒng)。它的動(dòng)態(tài)進(jìn)化屬性基于 3 個(gè)契機(jī):
3. 開放兼容
語言同時(shí)具備工具屬性與文化屬性,開放兼容對一門語言的意義在于被更多人接受、應(yīng)用。
當(dāng)前谷歌、蘋果、微軟、阿里巴巴等大型企業(yè)推出了開源的設(shè)計(jì)語言,這些成熟的設(shè)計(jì)體系其實(shí)承載著大量的項(xiàng)目實(shí)踐與經(jīng)驗(yàn)總結(jié),對其他企業(yè)也有較大的借鑒價(jià)值。同時(shí),對于平臺(tái)級(jí)企業(yè),開放統(tǒng)一的數(shù)字語言,讓不同地域、不同類型的項(xiàng)目得以在共同的規(guī)則下發(fā)展、共生,這對于平臺(tái)生態(tài)無疑是利好的。
設(shè)計(jì)語言作為工具來說,需具備普適性,在文化層面上也需具備兼容度──在滿足企業(yè)自身品牌與業(yè)務(wù)需求之上,應(yīng)該盡可能規(guī)避因宗教、民俗等因素帶來的沖突。
舉個(gè)例子,在法國和比利時(shí),人們都厭惡墨綠色,因?yàn)槎?zhàn)期間兩國飽受德國納粹侵略之苦,而納粹的軍服是墨綠色的。那么,面向這兩個(gè)國家用戶的設(shè)計(jì)上,便應(yīng)該避免使用墨綠的元素。這時(shí),設(shè)計(jì)語言系統(tǒng)中組件元素的豐富程度,很大程度決定了設(shè)計(jì)表現(xiàn)的選擇空間與可能性。
就好像,在美國街頭詢問公共廁所時(shí),老美可能聽不懂 WC,那就用他們聽得懂的 Restroom 吧。這里想表達(dá)的是,你的語言系統(tǒng)中「詞匯」越豐富,越能兼容不同文化背景下的表達(dá)。
藍(lán)藍(lán)設(shè)計(jì)( m.yvirxh.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。
如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里
微信小程序之卡片層疊滑動(dòng)效果
代碼:
js:
// index/gun/jsSwiper2/jsSwiper2.js
Page({
/**
* 頁面的初始數(shù)據(jù)
*/
data: {
startX: 0,
endX: 0,
iCenter: 3,
datas: [{
id: 1,
zIndex: 2,
opacity: 0.2,
left: 40,
iamge: "../../images/1.jpg",
animation: null
},
{
id: 2,
zIndex: 4,
opacity: 0.4,
left: 80,
iamge: "../../images/2.jpg",
animation: null
},
{
id: 3,
zIndex: 6,
opacity: 0.6,
left: 120,
iamge: "../../images/3.jpg",
animation: null
},
{
id: 4,
zIndex: 8,
opacity: 1,
left: 160,
iamge: "../../images/4.jpg",
animation: null
},
{
id: 5,
zIndex: 6,
opacity: 0.6,
left: 200,
iamge: "../../images/5.jpg",
animation: null
},
{
id: 6,
zIndex: 4,
opacity: 0.4,
left: 240,
iamge: "../../images/6.jpg",
animation: null
},
{
id: 7,
zIndex: 2,
opacity: 0.2,
left: 280,
iamge: "../../images/7.jpg",
animation: null
},
],
order: []
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面加載
*/
onLoad: function (options) {
this.__set__();
this.move();
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面顯示
*/
onShow: function () {
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面隱藏
*/
onHide: function () {
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面卸載
*/
onUnload: function () {
},
/**
* 頁面相關(guān)事件處理函數(shù)--監(jiān)聽用戶下拉動(dòng)作
*/
onPullDownRefresh: function () {
},
/**
* 頁面上拉觸底事件的處理函數(shù)
*/
onReachBottom: function () {
},
/**
* 用戶點(diǎn)擊右上角分享
*/
onShareAppMessage: function () {
},
move: function () {
var datas = this.data.datas;
/*圖片分布*/
for (var i = 0; i < datas.length; i++) {
var data = datas[i];
var animation = wx.createAnimation({
duration: 200
});
animation.translateX(data.left).step();
this.setData({
["datas[" + i + "].animation"]: animation.export(),
["datas[" + i + "].zIndex"]: data.zIndex,
["datas[" + i + "].opacity"]: data.opacity,
})
}
},
/**左箭頭 */
left: function () {
//
var last = this.data.datas.pop(); //獲取數(shù)組的最后一個(gè)
this.data.datas.unshift(last);//放到數(shù)組的第一個(gè)
var orderFirst = this.data.order.shift();
this.data.order.push(orderFirst);
this.move();
},
/** */
right: function () {
var first = this.data.datas.shift(); //獲取數(shù)組的第一個(gè)
this.data.datas.push(first);//放到數(shù)組的最后一個(gè)位置
var orderLast = this.data.order.pop();
this.data.order.unshift(orderLast);
this.move();
},
/**點(diǎn)擊某項(xiàng) */
choose: function (e) {
var that = this;
var id = e.currentTarget.dataset.id;
var order = that.data.order;
var index = 0;
for (var i = 0; i < order.length; i++) {
if (id == order[i]) {
index = i;
break;
}
}
if (index < that.data.iCenter) {
for (var i = 0; i < that.data.iCenter - index; i++) {
this.data.datas.push(this.data.datas.shift()); //獲取第一個(gè)放到最后一個(gè)
this.data.order.unshift(this.data.order.pop());
// this.right()
}
} else if (index > that.data.iCenter) {
for (var i = 0; i < index - that.data.iCenter; i++) {
this.data.datas.unshift(this.data.datas.pop()); //獲取最后一個(gè)放到第一個(gè)
this.data.order.push(this.data.order.shift());
// this.left();
}
}
this.move();
},
/**新的排列復(fù)制到新的數(shù)組中 */
__set__: function () {
var that = this;
var order = that.data.order;
var datas = that.data.datas;
for (var i = 0; i < datas.length; i++) {
that.setData({
["order[" + i + "]"]: datas[i].id
})
}
},
//手指觸發(fā)開始移動(dòng)
moveStart: function (e) {
console.log(e);
var startX = e.changedTouches[0].pageX;
this.setData({
startX: startX
});
},
//手指觸摸后移動(dòng)完成觸發(fā)事件
moveItem: function (e) {
console.log(e);
var that = this;
var endX = e.changedTouches[0].pageX;
this.setData({
endX: endX
});
//計(jì)算手指觸摸偏移劇距離
var moveX = this.data.startX - this.data.endX;
//向左移動(dòng)
if (moveX > 20) {
this.left();
}
if (moveX < -20) {
this.right();
}
},
})
wxml:
<view class="teachers_banner">
<view class="container clearfix teachers_b">
<view class="slide" id="slide" bindtouchstart='moveStart' bindtouchend='moveItem'>
<block wx:for="{{datas}}">
<li animation="{{item.animation}}" style="z-index: {{item.zIndex}} ;opacity:{{item.opacity}};" bindtap="choose" data-id="{{item.id}}">
<image src="{{item.iamge}}"></image>
</li>
</block>
</view>
</view>
</view>
wxss:
.teachers_banner {
width: 100%;
height: 650px;
background-size: cover;
position: relative;
overflow: hidden;
}
.teachers_b {
position: relative;
margin-top: 80px;
}
#slide {
margin: 0 auto;
width: 100%;
height: 350px;
position: relative;
}
image {
width: 400rpx;
height: 550rpx;
}
#slide li {
position: absolute;
width: 400rpx;
display: -webkit-box;
display: -webkit-flex;
display: flex;
align-items: flex-start;
-webkit-box-align: flex-start;
-webkit-align-items: flex-start;
overflow: hidden;
box-shadow: 0 0 20px #1d374d;
}
#slide li img {
width: 100%;
height: 100%;
}
.slide_right {
padding: 40px;
-webkit-box-flex: 1;
-webkit-flex: 1;
flex: 1;
min-width: 0;
}
.slide_right dl {
padding-top: 10px;
}
.arrow .prev, .arrow .next {
position: absolute;
width: 50px;
top: 38%;
z-index: 9;
font: 700 96px 'simsun';
opacity: 0.3;
color: #fff;
cursor: pointer;
}
效果:
1.左右滑動(dòng)時(shí),向相應(yīng)方向移動(dòng)一個(gè)卡片位置;
2.點(diǎn)擊某一項(xiàng)時(shí),將點(diǎn)擊項(xiàng)位置移動(dòng)到中間位置;
藍(lán)藍(lán)設(shè)計(jì)( m.yvirxh.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。
如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里
在建立品牌的過程中,廣告和公關(guān)各有其使用邊界,企業(yè)家不關(guān)心用不用廣告,關(guān)心如何找到適合自己的營銷方法。
對于廣告,大家已經(jīng)比較熟悉,今天我們重點(diǎn)分析公關(guān)建立品牌的方法。
一、新經(jīng)濟(jì)品牌比傳統(tǒng)品牌有更大的公關(guān)潛力
新經(jīng)濟(jì)品牌往往比傳統(tǒng)品牌有更大的公關(guān)潛力。昨天潘軻老師講到,無人機(jī)將是5G時(shí)代的現(xiàn)象級(jí)產(chǎn)品。那么,無人機(jī)會(huì)制造出什么社會(huì)熱點(diǎn)呢?
比如說,無人機(jī)會(huì)送飯,飛上來給你送飯。
到時(shí)會(huì)出現(xiàn)爭議:
一是飯掉下去怎么辦?誰負(fù)責(zé)?二是飛機(jī)送飯時(shí)能不能開攝像頭?會(huì)不會(huì)順帶拍一下鄰居家的窗戶?推出無人機(jī)送貨第一款高空墜落險(xiǎn)的是誰?
而且,高樓的窗戶開啟是有角度限制的,怎么拿飯?一定會(huì)出現(xiàn)玻璃窗改造設(shè)計(jì),第一個(gè)高樓玻璃窗改造品牌是誰?
第一個(gè)根據(jù)無人機(jī)送貨需求設(shè)計(jì)的建筑品牌是誰?這個(gè)新品類可能叫“無人機(jī)友好建筑”,房間都帶無人機(jī)著陸設(shè)施,像航母的飛機(jī)著陸裝卸平臺(tái),第一棟無人機(jī)友好建筑將是重磅新聞。
在無人機(jī)友好建筑普及之前,不能走窗戶,怎么外賣到戶?無人機(jī)要坐電梯還是走消防梯?能允許無人機(jī)坐電梯嗎?如果能坐,無人機(jī)“坐”哪里?
一架有教養(yǎng)的無人機(jī),高度顯然不能位于裙子以下,如果在肩膀以下,也容易和人發(fā)生碰撞,最好的位置應(yīng)該是人頭頂上。到時(shí)大家在電梯里,可能看到無人機(jī)區(qū)間,抬頭向上,幾架無人機(jī)呼呼地轉(zhuǎn)。
在無人機(jī)手臂和電梯直接通信普及之前,無人機(jī)怎么按電梯?我們是否應(yīng)該幫助無人機(jī)按電梯,就像幫助老人、小孩一樣?
無人機(jī)還可以摘菜,既然能摘菜,就能偷菜,就能偷錢包,無人機(jī)安全問題將大幅上升。
可能有人用彈弓擊打惡意無人機(jī),也有黑客用程序和網(wǎng)絡(luò)捕捉無人機(jī)。
當(dāng)然,無人機(jī)賽事也會(huì)推廣開來,成為大眾喜愛觀看的運(yùn)動(dòng),正如汽車賽事一樣。
比如針對無人機(jī)復(fù)雜空域飛行的速度競賽和花式競賽,針對無人機(jī)續(xù)航能力的拉力賽,針對無人機(jī)視覺效果的藝術(shù)挑戰(zhàn)賽等等。無人機(jī)界的F1、達(dá)喀爾、勒芒就會(huì)隨之而生。
考慮到競賽無人機(jī)的價(jià)格可能低于賽車,這項(xiàng)運(yùn)動(dòng)門檻更低。
無人機(jī)當(dāng)然也可以送人,無人機(jī)民航也會(huì)出現(xiàn)。第一家無人機(jī)民航公司會(huì)是誰?送的第一位顧客是誰?
當(dāng)然,專業(yè)的無人機(jī)渠道、無人機(jī)導(dǎo)購品牌、無人機(jī)售后服務(wù)、改裝服務(wù)也會(huì)出現(xiàn)。這里面,既蘊(yùn)含了眾多新品類發(fā)展的機(jī)遇,也將出現(xiàn)大量新聞。
而新聞潛力意味著,企業(yè)家要優(yōu)先用公關(guān),激發(fā)新聞效應(yīng),借助免費(fèi)的新聞傳播來建立品牌。
那,到底怎么用公關(guān)建立品牌呢?跟大家分享一下我們的探索歷程。
第一個(gè),什么是公關(guān)?
越了解工具,越會(huì)使用它。我們對公關(guān)的理解,決定了對它的運(yùn)用。
上海的第一財(cái)經(jīng)電視臺(tái),曾經(jīng)邀請上海交大的公關(guān)教授魏武揮和原GE公關(guān)總監(jiān)李國威老師進(jìn)行過一次辯論。
辯題之一是“公關(guān)的基本目的就是發(fā)稿和滅稿?!闭垎枺銈児镜墓P(guān)是這樣的嗎?你認(rèn)同嗎?
我們不認(rèn)同。就像戰(zhàn)士確實(shí)需要臥倒和射擊,但你不能說戰(zhàn)士的基本目的就是臥倒和射擊。為什么臥倒?為什么射擊?能不能不臥倒、不射擊,達(dá)到目標(biāo)?
凡事要學(xué)就學(xué)最高標(biāo)桿,要奔珠峰去練爬山。我們的標(biāo)桿選美國公關(guān)之父愛德華·伯內(nèi)斯。
1930年代,美國幾大書商找到他,請他用公關(guān)幫助書商賣書。各位,你如果是伯內(nèi)斯,會(huì)如何用公關(guān)幫助書商賣書?
我們會(huì)打新書排行榜、請名人推薦、拍賣版權(quán)、做圖書路演、簽名售書、建立讀者社群、一萬人一起讀書,羅輯思維推《薛兆豐經(jīng)濟(jì)學(xué)講義》,在菜市場辦了一場特別新書發(fā)布會(huì),等等。
我們要學(xué)習(xí)伯內(nèi)斯,就要模擬他的思維方式。在這個(gè)項(xiàng)目中,伯內(nèi)斯的思維由幾個(gè)關(guān)鍵問題串起來:
1.美國人什么時(shí)候買書最多?注意,是買書,不是讀書?;卮鹗牵悍块g里有空書柜的時(shí)候。就像某老總新辦公室裝修,10米長的空書柜,要填滿,直接買3000本。
2.如何讓美國人家里有書架呢?誰能夠做到?裝修公司、建筑公司能夠做到,尤其是設(shè)計(jì)師能夠做到。小設(shè)計(jì)師看大設(shè)計(jì)師的,大設(shè)計(jì)師能影響設(shè)計(jì)趨勢。
大家去美國旅行,可以發(fā)現(xiàn)很多1930年代的別墅,都有嵌入式書柜,嵌入式書柜換不掉,只能買書。
伯內(nèi)斯這個(gè)案例對我們震動(dòng)很大。以前我們做奧運(yùn)項(xiàng)目,和央視等各大媒體合作,做一堆報(bào)道和簡報(bào),感覺自己很厲害。
現(xiàn)在看來,都是幻覺。連自己國家的書架都沒改變過,算什么公關(guān)高手?
伯內(nèi)斯的做法,稱為“The Big Think”,翻譯成中文,可叫“大局思考”。大局思考的局有多大呢?全社會(huì)那么大。
大局思考要求我們:把眼睛從自己品牌上抬起來,站在高空看地球,從社會(huì)系統(tǒng)角度,找到能夠幫助自己品牌發(fā)展的社會(huì)動(dòng)力,再有效嫁接這種動(dòng)力。
二、企業(yè)公關(guān)和品牌公關(guān)的關(guān)系是什么?
《升級(jí)定位》講商業(yè)模式二分法,分為企業(yè)商業(yè)模式和品牌商業(yè)模式。
企業(yè)商業(yè)模式解決組織和企業(yè)利益相關(guān)方的關(guān)系,如政府、媒體、投資人、員工等;
品牌商業(yè)模式解決品牌及其利益相關(guān)方的關(guān)系,主要是“品牌-顧客-競品”這個(gè)三角形。
把伯內(nèi)斯公關(guān)的“大局思考”和商業(yè)模式二分法結(jié)合起來,我們看到一個(gè)什么畫面?在這個(gè)畫面中間,是品牌商業(yè)模式三角“品牌-顧客-競品”,顧客在上面,下面是品牌和競品。
這個(gè)三角形的外面,環(huán)繞著一個(gè)巨大的環(huán)形,其上半部分是外部利益相關(guān)者——政府、社區(qū)、公眾、媒體、資本;其下半部分是內(nèi)部利益相關(guān)者——員工、供應(yīng)鏈和渠道。
在這里,企業(yè)公關(guān)和品牌公關(guān)的關(guān)系是什么?——企業(yè)公關(guān)是品牌公關(guān)的外部環(huán)境,品牌公關(guān)是企業(yè)公關(guān)的成果。
這個(gè)圖畫出來,像什么?像眼睛。中間是瞳孔,是我們聚焦的方向;外面是上眼瞼和下眼瞼。
要打開上下眼皮,才能見天地、見眾生,才能在天地和眾生之間重新看見自己。所以,我們把這個(gè)叫“公關(guān)眼”模型。
要打開“公關(guān)眼”,關(guān)鍵是看明白三點(diǎn):
① 世界很大,企業(yè)很小。
② 企業(yè)是企業(yè)家的中心,但不是社會(huì)的中心。既要對自己的企業(yè)充滿宗教般的熱情,也要認(rèn)識(shí)到自己的企業(yè)不過是社會(huì)系統(tǒng)中極微小的一部分。
③ 企業(yè)要堅(jiān)定使命,圍繞建立品牌這個(gè)中心,系統(tǒng)尋找和調(diào)動(dòng)社會(huì)動(dòng)力,贏得支持,幫助自己發(fā)展。
所以,我們注意到剛才先鋒電器李總的分享,當(dāng)先鋒電器“取暖專家”的戰(zhàn)略確定之后,想要贏得誰的支持?先要從內(nèi)部做起來,說服經(jīng)銷商和員工對我們的事業(yè)充滿熱情。
外部環(huán)境可以影響我們,政府的態(tài)度、公眾的態(tài)度、資本、行業(yè)的經(jīng)營環(huán)境,環(huán)境的合作伙伴、上下游的經(jīng)銷商都會(huì)影響我們。
所以從企業(yè)內(nèi)部來看,中間的那個(gè)三角形無比重要,但是我們視角拉到整個(gè)社會(huì),如果社會(huì)是銀河系,企業(yè)就是一個(gè)小小的星球。
在這里,廣告、公關(guān)有個(gè)巨大不同:廣告直接通過媒體影響顧客;公關(guān)則努力借助社會(huì)能量,影響目標(biāo)人群。
在商業(yè)實(shí)踐中,公關(guān)和廣告既有相互重疊、相互替代的區(qū)域,也有相互差異、各有所長的區(qū)域,還有相互轉(zhuǎn)化、相互支撐的方式。
說公關(guān)、廣告相互替代,是因?yàn)樗鼈兌伎梢韵蚰繕?biāo)人群傳遞信息,至于這個(gè)信息是電梯里看到,還是微信群里看到,是次要的。
說公關(guān)和廣告相互差異、各有所長,是因?yàn)閺V告有公關(guān)難以實(shí)現(xiàn)的可控性、可復(fù)制性等長處,而公關(guān)也有廣告難以擁有的關(guān)注度、可信度和關(guān)聯(lián)度。
比如,我們2017年,在定位之父杰克·特勞特先生逝世的時(shí)候,和定位學(xué)習(xí)網(wǎng)一起,發(fā)起了“紀(jì)念特勞特燭光讀書會(huì)”,全國13個(gè)城市的定位愛好者參加。
在特勞特先生的小型葬禮上,鄧德隆先生把這些照片給特勞特夫人過目,特勞特夫人特意委托鄧總向參與紀(jì)念活動(dòng)的定位愛好者表達(dá)感謝。
這樣的紀(jì)念活動(dòng),便是公關(guān)——表達(dá)我們對定位之父感恩緬懷的活動(dòng),這是廣告難以完全表達(dá)的。
說公關(guān)和廣告相互轉(zhuǎn)化,是因?yàn)閺V告可以做出公關(guān)效應(yīng),稱之為廣告公關(guān)化;公關(guān)也可以做成廣告效果,直接給賣點(diǎn),稱之為公關(guān)廣告化。
廣告公關(guān)化,要求把廣告做成新聞。南都的“天下無三”廣告,神州專車上線的“Beat U”廣告,甚至分眾電梯海報(bào)的“僅售1199元3條的圍欄男士內(nèi)褲”,都制造了話題。
公關(guān)廣告化,則要在新聞或話題中,傳遞品牌名稱,甚至傳遞產(chǎn)品圖片,顧客利益點(diǎn)等等。
比如,某面包車品牌在強(qiáng)手如云的上海車展上,曾把自己的廣告語做成了新華社報(bào)道的導(dǎo)語。
三、公關(guān)、戰(zhàn)略和定位的關(guān)系
了解了公關(guān)是什么,廣告和公關(guān)的關(guān)系,接下來我們看看公關(guān)、戰(zhàn)略和定位的關(guān)系。
和大家分享一下我們曲折的探索歷程,這個(gè)歷程分為四個(gè)階段,簡稱為“公關(guān)四階”。
第一階,制造熱點(diǎn)
相信很多人接觸公關(guān),熱點(diǎn)話題、熱點(diǎn)事件是一個(gè)重要入口。公關(guān)圈的人,熱衷于制造熱點(diǎn),包括我們自己一度也喪心病狂地想制造熱點(diǎn)。
比如說,有個(gè)網(wǎng)絡(luò)推手叫立二拆四,他們制作了系列的熱點(diǎn)事件,從“別針換別墅”,到“我把下半生交給網(wǎng)絡(luò)”等等,最后搞了“后海和尚搞船震”,最后這個(gè)團(tuán)隊(duì)進(jìn)去了。
9年前,我太太去我們辦公室,一路嘟嘟囔囔說,現(xiàn)在年輕人太不像話了,高考畢業(yè)就買鉆戒私定終身。我一看照片,兩位校服男女生,手拉手站在柜臺(tái)前,柜臺(tái)上有個(gè)logo——“I Do”。
我說,你看看那邊那個(gè)男同事,是不是眼熟?——她看過去,哦?竟然是校服男生(的扮演者)。
這個(gè)項(xiàng)目是當(dāng)時(shí)合伙人做的,但它給我?guī)矸此迹汗P(guān)如果策劃新聞、策劃話題,連自己家人都繞進(jìn)去了,這樣的公關(guān)可以持續(xù)嗎?值得持續(xù)嗎?
大家來看看這幾個(gè)事情是不是策劃的。第一,2017年維密秀,奚夢瑤摔倒,維密秀的百度指數(shù)飛漲到60多萬,翻了50倍。請問,是策劃的嗎?
策劃不策劃,需要驗(yàn)證。如果是自然事故,對于維密秀這樣級(jí)別的賽事,犯錯(cuò)誤者按道理會(huì)怎樣?會(huì)被開除。
奚夢瑤被開除了嗎?當(dāng)時(shí)維密CEO發(fā)推特,怎么說?好樣的,加油!這像是對犯錯(cuò)員工說的話么?
比語言更說明問題的是行為。2018年,維密秀嚴(yán)格的選拔開始了,請問誰免試入選了?——奚夢瑤。
在老何看來,維密官方對奚夢瑤的態(tài)度,不像是對失誤員工的處置,反倒是對冒受傷危險(xiǎn)摔倒勇士的獎(jiǎng)勵(lì)。想想奚夢瑤那么高個(gè)子,摔倒風(fēng)險(xiǎn)多么大?為了熱點(diǎn),辛苦了。
不光模特,總裁也辛苦。VIVO手機(jī)在水立方開新品發(fā)布會(huì),總裁上臺(tái)時(shí)掉水里了,主持人何炅趕緊圓場——“遇水則發(fā)!”各位,請問這是策劃的,還是自然的?
首先,如果總裁不掉水里,老何可能和很多人一樣,不知道這件事,此事對VIVO有利而非有害。
其次,判斷總裁是不是故意掉水里,要講證據(jù)。比如,回看錄像,總裁出水后是不是把手機(jī)交給助理去處理。
商界領(lǐng)導(dǎo)一般自己拿手機(jī),如果故意落水,事先把手機(jī)交給他人概率更高。
手機(jī)廠商就此打住了嗎?不。酷派ivvi發(fā)布會(huì),CEO吊威亞出場的時(shí)候,掛半空中了!各位,是策劃的還是自然的?
這件事我們問過酷派內(nèi)部人,他說那天確實(shí)是出現(xiàn)了意外——原計(jì)劃是吊10分鐘,后臺(tái)出了故障,結(jié)果吊了20分鐘。
就定位圈來說,喜棉兒童排汗睡衣創(chuàng)始人賈總,在里斯品類戰(zhàn)略大會(huì)的舞臺(tái)上,當(dāng)眾撕衣服。衣服一撕,淘寶流量翻5倍,而且翻完之后穩(wěn)定在5倍附近。
你看,為了品牌,為了熱點(diǎn),創(chuàng)始人和總裁是不是很拼?
那,追求熱點(diǎn)的方法是什么呢?我們用的模型叫“策劃三要素”。
傳播力=內(nèi)容指數(shù)X媒介指數(shù)X轉(zhuǎn)化指數(shù)。
其中,內(nèi)容指數(shù)主要涉及傳播主題、傳播環(huán)境和傳播對象,分別概括為:基礎(chǔ)口碑(主體自帶流量)、社會(huì)熱點(diǎn)(傳播環(huán)境流量)和公眾體驗(yàn)(對傳播對象的激發(fā)程度)。
內(nèi)容指數(shù)=基礎(chǔ)口碑X社會(huì)熱點(diǎn)X公眾體驗(yàn)。
對基礎(chǔ)口碑、社會(huì)熱點(diǎn)、公眾體驗(yàn),可以進(jìn)一步細(xì)分?;A(chǔ)口碑分為自己口碑和借用他人口碑,自己口碑=關(guān)注者的數(shù)量X質(zhì)量。
自己的關(guān)注度不夠,怎么辦?和自帶流量的明星、大V合作,借助知名的賽事、欄目、影視劇等等。
在公眾體驗(yàn)上,分為情感體驗(yàn)和互動(dòng)體驗(yàn)。內(nèi)容的情感體驗(yàn)越深,越能夠吸引公眾參與互動(dòng),其傳播力就越強(qiáng)。
在情感體驗(yàn)上,方法是“情感配方”。其基本原理是,雖然人的感情看起來非常復(fù)雜,但是每種情感類型可以分解為幾個(gè)簡單要素,你匯聚相關(guān)要素,就會(huì)產(chǎn)生特定的情感類型。
比如產(chǎn)生憤怒,需要四個(gè)要素:第一,發(fā)生了一件意外的事情;第二,結(jié)果是我們不想要的;第三,造成的原因是別人;第四,這個(gè)人可以不這么干。四個(gè)條件具備,就會(huì)產(chǎn)生憤怒。
例如,我們讓人拿一個(gè)盤子給我們,結(jié)果他把盤子掉地上,我們會(huì)生氣。但如果拿盤子的是家里老人,平時(shí)手就哆嗦,情緒就傾向于諒解。
找到情感合成的要素后,就可以制定內(nèi)容模板。
比如我們知道“內(nèi)容和形式的反差”會(huì)帶來幽默感,就可以用這個(gè)方式來制造一系列視頻,比如用最正式的形式——“新聞聯(lián)播”,加上最草根的內(nèi)容,就會(huì)產(chǎn)生喜感。這種方法也被網(wǎng)絡(luò)傳播大量運(yùn)用。
我們把這種根據(jù)傳播目標(biāo),分解傳播模板,批量制作傳播內(nèi)容的內(nèi)容生產(chǎn)方式,叫“內(nèi)容工廠”。
福特發(fā)明了流水線生產(chǎn)汽車,把汽車成本降低到原來的十分之一。在內(nèi)容生產(chǎn)上,也可以通過工廠化運(yùn)作,大規(guī)模降低成本,提率。
內(nèi)容生產(chǎn)出來后,可以用評分模板來給內(nèi)容評分,給基礎(chǔ)口碑、社會(huì)熱點(diǎn)和公眾體驗(yàn)分別打分,然后算總分。
每個(gè)品牌可以摸索評分規(guī)律,最后對內(nèi)容傳播力進(jìn)行量化,多少分以上才可以出街,多少分以下要重新修訂內(nèi)容。
第二階,追求植入
制造熱點(diǎn)是第一階,我們看看這些大家都熟悉的熱點(diǎn)事件。比如,“4小時(shí)逃離北上廣”,“只要心中有沙,哪里都是馬爾代夫”,“斯巴達(dá)三百勇士北京游行”,“大黃鴨進(jìn)大陸”。這四個(gè)熱點(diǎn)事件很多人聽說過,請問,這些熱點(diǎn)事件背后的品牌是誰呢?
我們在不同場合做過調(diào)查,知道品牌的人在5%到10%。那么,對于很多不知道品牌的而言,這些傳播能量是不是有一部分沒有發(fā)揮作用?所以,公關(guān)不綁定品牌,多少會(huì)免費(fèi)娛樂大眾。
如何綁定?方法是“三重植入”,這是我們探索第二個(gè)階段的目標(biāo)。
植入是有標(biāo)準(zhǔn)的,把植入分為三個(gè)層級(jí),最底層的是“表層植入”,它的定義是:品牌和事件一起出現(xiàn),但在傳播過程中品牌和事件可以分離。
比如你們品牌邀請了周杰倫來現(xiàn)場,媒體在傳播時(shí)會(huì)稱呼你為“某品牌”,把畫面上你的logo打成馬賽克。
表層植入的上一層,是“內(nèi)核植入”,定義是:品牌和事件一起出現(xiàn),在傳播過程中品牌和事件不可以分離。
最高層級(jí)是“詞植入”,是指品牌名稱植入到詞媒體中,只要提及事件名稱,品牌就得以曝光。
比如某汽車品牌做了一場“百名網(wǎng)紅直播新車上市”,這個(gè)是表層植入,因?yàn)榭梢圆惶徇@個(gè)汽車品牌的名字。像在世界杯賽場周邊擺一圈廣告牌,表層植入。
再看內(nèi)核植入。浙江有個(gè)網(wǎng)紅景點(diǎn),飯蒸巖。它的故事是,有一位女驢友,愛上了一位男驢友,就用繩索垂下懸崖,在巖壁上畫下男驢友的頭像示愛。
這個(gè)植入,品牌和事件可以分離嗎?不能。不僅不能,每次媒體傳播這張巖石的圖片,就是在幫助這個(gè)景區(qū)曝光它們的認(rèn)知產(chǎn)品。
讓產(chǎn)品成為新聞主角,便是公關(guān)廣告化,把公關(guān)做成直接講賣點(diǎn)的廣告。巖畫事件之所以有趣,在于它不僅曝光了物理賣點(diǎn),還創(chuàng)造了情感價(jià)值——有網(wǎng)友表示,這個(gè)事件讓TA又重新相信了愛情。
再看詞植入,把品牌名植入到詞媒體里。比如抖音刷出了一個(gè)視頻“吃垮海底撈”,你一說起這個(gè)事件,海底撈的品牌名就曝光了。
當(dāng)然,在十五年前,論壇上曾經(jīng)有個(gè)熱點(diǎn)事件,叫“吃垮必勝客”,兩者的策劃邏輯基本相同,只是平臺(tái)從論壇換到了抖音。張家界的“飛越天門山”,凡客的“凡客體”,都屬于詞植入。
三重植入,怎么運(yùn)用呢?
首先,盡量避免表層植入。要在事件策劃或事件合作中,尋找更深層植入的方法。
其次,盡量做到內(nèi)核植入。其方法是,把品牌、產(chǎn)品、代言人,變成新聞要素之一即可。
最后,嘗試詞植入。其方法是,自己用帶有品牌名的詞組、短語,為傳播事件命名,并促成名字被大眾采用。
各位,做到詞植入,傳播就一定會(huì)成功嗎?我們接著看。
第三階:支撐定位。
上面講到一個(gè)詞植入的案例——“凡客體”。凡客體是2010年的熱點(diǎn),也屢屢被評為2010年十大營銷案例,排名前三甚至第一。
從制造熱點(diǎn)、品牌植入上來看,凡客體都是成功的,但凡客體對品牌、對業(yè)務(wù)是否有幫助?幫助多大?
一開始人們知道凡客,是因?yàn)榉部鸵r衫。凡客體里面,韓寒穿的是T恤。
從價(jià)格來看,凡客襯衫便宜的80-100元,高一點(diǎn)的100-200元。在十年前,算是中檔價(jià)格。而T恤多少錢?29塊。
也就是說,凡客體傳播的品類和價(jià)格,都和顧客既有認(rèn)知發(fā)生著沖突。這也意味著,凡客體傳播越廣泛,原有的品牌認(rèn)知會(huì)就越稀釋,越模糊,進(jìn)而影響老顧客的購買意愿。
現(xiàn)實(shí)中,凡客的情況怎么樣呢?2010年凡客體大火,2011年末,凡客的庫存達(dá)到14.45億元,總虧損近6億元,一路從11000人裁員到300人。
凡客體告訴我們,戰(zhàn)略方向如果不對,傳播能量越強(qiáng),越南轅北轍,越努力離目標(biāo)越遙遠(yuǎn)。違背戰(zhàn)略,破壞顧客認(rèn)知的公關(guān),對品牌反而是有害的。
比如說,羅輯思維投資Papi醬很多人知道,拍賣Papi醬首條廣告也是行業(yè)熱點(diǎn),但羅輯思維CEO脫不花卻隨后反思“投資Papi醬是我們最大的恥辱”。
為什么呢?因?yàn)檫`背了公司的戰(zhàn)略。隨后,羅輯思維也原價(jià)退出了投資。
反之,則是每一次傳播都在支撐戰(zhàn)略,支撐顧客對品牌的認(rèn)知,也即支持定位。
比如,無論是做3萬米高空極限跳傘,還是做張家界翼裝飛行大賽,紅牛在每一個(gè)極限活動(dòng)中,都會(huì)強(qiáng)調(diào)“能量”兩個(gè)字,不斷向顧客認(rèn)知點(diǎn)上累加資源。
公關(guān)怎么支撐戰(zhàn)略,支撐定位呢?
首先,是把品類價(jià)值和品類特性表達(dá)出來,品類事件化。比如今天的電梯領(lǐng)導(dǎo)者奧的斯,奧的斯先生發(fā)明了“安全電梯”,首次亮相就引發(fā)了轟動(dòng)。
1853年,紐約世界博覽會(huì)上,奧的斯先生策劃了一個(gè)戲劇性的事件。他把電梯升到半空中,然后用斧頭砍斷了電梯纜繩,在圍觀眾人的一片驚呼聲中,奧的斯電梯自行鎖死,停止滑落。
公關(guān)還可以把特性事件化,變成品牌資產(chǎn)。比如說,有一款七座家用車,其特性是“安全、舒適”。
傳播難點(diǎn)在于,這款車的C-NCAP碰撞星級(jí)和安全氣囊數(shù)上,并不占優(yōu)勢。公關(guān)如何支撐其特性呢?
仔細(xì)想想,一家三代坐在車?yán)?,誰的安全更受關(guān)注?兒童。如何體現(xiàn)兒童安全呢?有沒有兒童安全碰撞測試?答案是沒有。沒有怎么辦?開創(chuàng)。
所以,這個(gè)品牌做了中國首場兒童安全碰撞測試,成為新車上市的信任狀和新聞點(diǎn)。
在支撐品類特性時(shí),不得不提到一個(gè)經(jīng)典公關(guān)案例。2005年之前,基本上很少人喝過普洱茶,北京馬連道茶城幾千家茶葉店,據(jù)說只有一家賣普洱茶。
2005年5月,活動(dòng)發(fā)起人胡明方先生,組織了120匹馬,從云南出發(fā),歷經(jīng)5個(gè)多月,于10月10日進(jìn)入北京。馬幫進(jìn)京,成了當(dāng)年最熱門的新聞事件之一。
馬幫進(jìn)京體現(xiàn)了普洱茶什么特性?發(fā)酵,而且是富有戲劇性的“馬背發(fā)酵”。馬幫馱進(jìn)京的馬背發(fā)酵普洱茶,達(dá)官貴人爭著求購,一茶難求。
所以,公關(guān)要重點(diǎn)思考如何表達(dá)品類價(jià)值,用戲劇化、事件化的方式表達(dá)出來,最好占據(jù)某種獨(dú)特的表達(dá)形式,使之成為品牌的專用配稱,成為長期的品牌資產(chǎn)。
第四階段:贏得支持
那是不是支撐定位,公關(guān)就算做到頂峰了呢?
比如,當(dāng)美團(tuán)進(jìn)軍打車市場時(shí),滴滴程維接受《財(cái)新》雜志訪談,表示“爾要戰(zhàn),便戰(zhàn)?!边@篇報(bào)道當(dāng)然體現(xiàn)了滴滴在打車市場的領(lǐng)導(dǎo)地位,但是否有效,是否對滴滴有利呢?
不僅如此,滴滴公關(guān)還攻擊“美團(tuán)補(bǔ)貼擾亂行業(yè)秩序”,雙方線下競爭和線上公關(guān)戰(zhàn)一起打響。
對滴滴的公關(guān),美團(tuán)怎么回復(fù)的?美團(tuán)的回復(fù)是“人民需要兩個(gè)打車軟件”,“打破壟斷才是終局”,與“人民”結(jié)盟,激發(fā)公眾對滴滴的反對。
各位,公關(guān)的目標(biāo)僅僅是傳播嗎?公關(guān)不僅要傳播,要支撐定位,還要為品牌贏得支持。
無論多么重大的傳播項(xiàng)目,即便如北京2008奧運(yùn)會(huì),一旦結(jié)束,大多數(shù)人就迅速遺忘。傳播就像刮風(fēng),過去了就過去了。
但是如果我們能夠通過公關(guān),通過傳播和溝通,贏得對方發(fā)自內(nèi)心的支持,影響力就會(huì)像種樹一樣持久。各位企業(yè)家,如何贏得支持?這是公關(guān)中至關(guān)重要的事情。
所以,第四階,我們要“贏得支持”。
這兩天的華為事件,是一個(gè)典型的熱點(diǎn)。但你們品牌希望攤上這樣的熱點(diǎn)嗎?多半不希望。熱點(diǎn)事件對品牌有利有弊。不光華為這次的危機(jī)如此,各種策劃熱點(diǎn)的品牌,其實(shí)都有可能被熱點(diǎn)傷害——如果不能贏得支持的話。
贏得支持比傳播更重要。傳播不能贏得支持,就是在樹立敵人。注意看這次任總的講話,把敵人搞得少少的,只有少數(shù)美國政客。朋友呢?多多的。美國公司是朋友,歐洲更是朋友,亞洲是兄弟,中國是自己人。對所有國內(nèi)企業(yè),無論你造車還是做手機(jī),都不批評,都理解,以和為貴。
任總的危機(jī)公關(guān),舉重若輕,其中透露的示弱、求和的智慧,正是贏得支持的關(guān)鍵。
贏得支持,首先要求企業(yè)家有使命,有使命才有感召力,你對全社會(huì)有價(jià)值,全社會(huì)都會(huì)成為你的力量來源。
如果你有使命,又很強(qiáng)大,別人什么感覺?點(diǎn)贊。有使命,又相對使命能力不足,大家才會(huì)想要支持你。正亦如此,廣告示強(qiáng),公關(guān)要懂得示弱。因?yàn)槭救?,才能給別人幫助你的接口。
我們看一個(gè)超年長網(wǎng)紅——故宮的故事。上一任故宮博物院院長單霽翔先生問:國家領(lǐng)導(dǎo)來故宮視察,怎么報(bào)告?
“我們的經(jīng)驗(yàn)是,越是主要領(lǐng)導(dǎo)來的時(shí)候,我們一定要給他看最不好的地方,看什么地方呢?看那些荒草凄凄的地方,看那些霉味撲鼻的地方,這樣領(lǐng)導(dǎo)的責(zé)任心油然而生,就給我們解決很多問題,屢屢得逞?!?
所以省領(lǐng)導(dǎo)到你們公司,看完后不是說“李總,你真棒!”而是問——“缺多少錢?需要什么政策?”這樣的問題最好。
剛剛我們介紹了探索公關(guān)建立品牌的四個(gè)階段,簡稱“公關(guān)四階”。華為的公關(guān),便是第四階,是在贏得支持指導(dǎo)下,被動(dòng)應(yīng)對熱點(diǎn)的做法。
任總一方面展示了華為的使命、價(jià)值,同時(shí)展示了華為人的不容易——加班加點(diǎn)、寧愿無薪也要奮斗,同時(shí)又一直被美國打壓。這樣的使命和示弱,有利于華為贏得更多的同情,更多的認(rèn)同,更多的支持。
注意,公關(guān)四階不是割裂的:不是有了植入,就不要熱點(diǎn);有了定位,就不要植入;有了支持,就不要定位;而是向前兼容的,是要在贏得支持的前提下,思考支撐定位、植入品牌、制造熱點(diǎn)。而這,也正是華為此次危機(jī)公關(guān)的印證和啟發(fā)。
四、新經(jīng)濟(jì)品牌做公關(guān)有何不同?
接下來,我們問自己一個(gè)問題:新經(jīng)濟(jì)品牌做公關(guān),和其他品牌有什么不同?這種不同,使得新經(jīng)濟(jì)品牌更適合用公關(guān)打造品牌。
這種不同是,新經(jīng)濟(jì)品牌常常開創(chuàng)新品類,而開創(chuàng)新品類意味著填補(bǔ)空白,意味著新聞性,意味著有機(jī)會(huì)贏得免費(fèi)的媒體報(bào)道。
開創(chuàng)新品類,疊加新經(jīng)濟(jì)品牌更高的社會(huì)關(guān)注度,為公關(guān)打開了更廣闊的空間 。
比如,羅輯思維在微信出現(xiàn)時(shí),就是一個(gè)新事物,60秒的語音形式引發(fā)了關(guān)注。
不僅如此,羅輯思維在有意識(shí)地開創(chuàng)新品類:有跨年晚會(huì),沒有跨年演講,和深圳衛(wèi)視合作做跨年演講;
有發(fā)布會(huì),沒有知識(shí)發(fā)布會(huì),那做一個(gè)“001號(hào)知識(shí)發(fā)布會(huì)”;有例會(huì),有直播,沒有例會(huì)直播,羅輯思維開創(chuàng)了例會(huì)直播。
就連脫不花生孩子,還做了一個(gè)“猜生男生女”的互動(dòng)。
事實(shí)上,每一種媒介形態(tài)出現(xiàn),背后都蘊(yùn)含著開創(chuàng)傳播領(lǐng)域新品類的機(jī)會(huì)。
比如百雀羚的一鏡到底長圖文,開創(chuàng)了一種新的表現(xiàn)形式,這種形式,會(huì)激發(fā)話題效應(yīng),進(jìn)而加乘傳播能量和傳播效果。
最后,各位打造品牌時(shí),如何綜合使用公關(guān)和廣告呢?
這里是我們講的4種典型形勢的公關(guān)廣告協(xié)同方式。
1. 品類成熟,兵力優(yōu)勢:這時(shí)廣告為主,拖對手打廣告戰(zhàn),做大品類。
2.品類成熟,兵力劣勢:慎用大廣告,要注意領(lǐng)導(dǎo)者的反應(yīng)。
3. 品類不成熟,兵力優(yōu)勢:公關(guān)為主,局部廣告。
4.品類不成熟,兵力劣勢:公關(guān)為主,大廣告=大風(fēng)險(xiǎn)。
品類成熟,兵力優(yōu)勢的情況:
比如二手車網(wǎng)絡(luò)交易,有現(xiàn)成的消費(fèi)習(xí)慣,二手車交易網(wǎng)接受度高,瓜子也擁有強(qiáng)大的融資能力。
所以瓜子以打廣告為核心手段,自己打廣告,吸引同行一起打,迅速提升二手車交易網(wǎng)的品類勢能,做大品類規(guī)模。
品類成熟,兵力劣勢的情況:
比如簡一大理石瓷磚,相對于東鵬和諾貝爾等品牌,簡一規(guī)模較小。
其大廣告建立品牌是否能奏效,要看領(lǐng)導(dǎo)品牌如何反應(yīng)。如果領(lǐng)導(dǎo)品牌了解定位理論防御戰(zhàn)的打法,用數(shù)倍兵力優(yōu)勢,迅速跟進(jìn)和覆蓋,情況就會(huì)發(fā)生改變。
品類不成熟,兵力優(yōu)勢的情況:
常見于擁有豐富資源的公司開發(fā)新業(yè)務(wù),推出新品牌。這種情況下,企業(yè)過早使用廣告,可能浪費(fèi)部分資源,但不至影響生存。如能用精益創(chuàng)業(yè)方法,對驗(yàn)證期的關(guān)鍵環(huán)節(jié)進(jìn)行一一驗(yàn)證,建立增長模型,費(fèi)用會(huì)花得更有效。
品類不成熟,兵力劣勢的情況:
比如有個(gè)每條400塊的男士內(nèi)褲品牌,剛剛創(chuàng)立,就通過大廣告建立品牌。這種打法就比較兇險(xiǎn)。
在完成戰(zhàn)略驗(yàn)證期必須的價(jià)值驗(yàn)證和交付驗(yàn)證之前,要謹(jǐn)慎通過大廣告等重資金的增長方式,過早刺激增長。
對于新經(jīng)濟(jì)品牌而言,品類創(chuàng)新常常帶來新聞價(jià)值,通過媒體、公眾口碑的方式傳遞出去。
過早打大廣告,會(huì)影響口碑價(jià)值。比如,你跟朋友介紹一家新發(fā)現(xiàn)的餐廳,結(jié)果朋友說,早知道了,電梯里都有。什么感覺?
品類發(fā)展的早期人群,需要一種我知你不知的信息優(yōu)勢,這種優(yōu)勢會(huì)提高其價(jià)值感,促進(jìn)人們的自發(fā)和主動(dòng)傳播。
各位,兩條腿走路總比一條腿要快,要好。企業(yè)建立品牌,也要綜合運(yùn)用廣告和公關(guān)兩條腿。
廣告善于直接向顧客傳遞購買理由,信息可控,但費(fèi)用全部需要企業(yè)自己投入。公關(guān)可以贏得外部力量的支持,一起做大品類,但需要與外部溝通、合作。
最后,祝各位邁開雙腿,在打造品牌的路上跑起來!
藍(lán)藍(lán)設(shè)計(jì)( m.yvirxh.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。
如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里
文章目錄
jQuery
jQuery的安裝:
jQuery 語法
選擇器
基本選擇器:
層級(jí)選擇器
基本篩選器
樣式操作
表單篩選器
遍歷方法
jQuery鏈?zhǔn)讲僮?br />
jQuery 事件
$(document).ready()
click()
dblclick()
mouseenter()
mouseleave()
mousedown()
mouseup()
hover()
focus()
blur()
input()
取消標(biāo)簽?zāi)J(rèn)的事件
事件冒泡
事件委托
jQuery自帶的動(dòng)畫效果
jQuery
jQuery的字面意思其實(shí)就是JavaScript和查詢(Query),即用于輔助開發(fā)JavaScript的庫。jQuery 極大地簡化了 JavaScript 編程,jQuery使用戶可以更加方便地處理HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用)、events、實(shí)現(xiàn)動(dòng)畫效果,而且方便地為網(wǎng)站提供AJAX交互。
實(shí)例找到div標(biāo)簽并給div標(biāo)簽設(shè)置為紅色
原生js操作
var d1Ele = document.getElementById('d1');
d1Ele.style.color = 'red';
jQuery操作
$('#d1').css('color','blue');
1
2
3
4
5
jQuery的安裝:
您可以從網(wǎng)頁中添加 jQuery
1、從官網(wǎng)http://jquery.com/download/下載 jQuery 庫
里面分為:Production version(用于實(shí)際的網(wǎng)站中,已被精簡和壓縮)和Development version(用于測試和開發(fā),未壓縮,是可讀的代碼),一般使用Production version壓縮版本的。
2、從 CDN 中載入 jQuery, 如從 Google 或 百度 中加載 jQuery
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
或者
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
或者
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.slim.js"></script>
1
2
3
4
5
一定要先導(dǎo)入后使用
jQuery 語法
jQuery 語法是通過選取 HTML 元素,并對選取的元素執(zhí)行某些操作。
$(selector).action()
1
美元符號(hào)定義 jQuery
選擇符(selector)“查詢"和"查找” HTML 元素
jQuery 的 action() 執(zhí)行對元素的操作
選擇器
jQuery 選擇器可以對 HTML 元素組或單個(gè)元素進(jìn)行操作。 jQuery 選擇器基于元素的 id、類、類型、屬性、屬性值等查找HTML 元素。它基于已經(jīng)存在的 CSS 選擇器外,還有一些自定義的選擇器。
基本選擇器:
ID選擇器、類名選擇器、標(biāo)簽選擇器、組合選擇器
選擇器 實(shí)例 選取
* $("*") 所有元素
#id $("#d1") id=“d1” 的元素
.class $(".name") class=“name” 的所有元素
.class , .class $(".name,.password") class 為 “name” 或 “password” 的所有元素
*element $(“span”) 所有 <span> 元素
el1,el2,el3 $(“h1,div,p”) 所有 <h1>、<div> 和 <p> 元素
提出注意點(diǎn),原生DOM查找和jQuery查找出來的結(jié)果區(qū)別DOM對象與jQuery對象
DOM對象與jQuery對象互相轉(zhuǎn)換
$('#d1')[0]
var d1Ele = document.getElementById('d1');
$(d1Ele)
1
2
3
4
層級(jí)選擇器
選擇器 實(shí)例 選取
parent > child $(“div > p”) <div> 元素的直接子元素的所有 <p> 元素
parent descendant $(“div p”) <div> 元素的后代的所有 <p> 元素
element + next $(“div + p”) 每個(gè) <div> 元素相鄰的下一個(gè) <p> 元素
element ~ siblings $(“div ~ p”) <div> 元素同級(jí)的所有 <p> 元素
基本篩選器
選擇器 實(shí)例 選取
:first $(“p:first”) 第一個(gè) <p> 元素
:last $(“p:last”) 最后一個(gè) <p> 元素
:even $(“tr:even”) 所有偶數(shù) <tr> 元素
:odd $(“tr:odd”) 所有奇數(shù) <tr> 元素
:gt(nu) $(“ul li:gt(3)”) 列舉 index 大于 3 的元素
:lt(nu) $(“ul li:lt(3)”) 列舉 index 小于 3 的元素
:eq(nu) $(“ul li:eq(3)”) 列舉 index 等于 3 的元素
:not(selector) $(“input:not(:empty)”) 所有不為空的輸入元素
:has(element) $(“div:has(a)”) 返回?fù)碛幸粋€(gè)或多個(gè)元素在其內(nèi)的所有元素
/用ul標(biāo)簽舉例
$('#ul>li:first')
$('#u1>li:last')
$('#ul>li:eq(3)')
$('#ul>li:even')
$('#ul>li:odd')
$('#ul>li:gt(3)')
$('#ul>li:lt(3)')
$('#u1>li:not(.c1)')
最后一個(gè)has的玩法需要寫個(gè)三個(gè)div:一個(gè)空div、一個(gè)兒子有a標(biāo)簽、一個(gè)兒子沒有a,孫子有a標(biāo)簽
$('div:has(a)')
輸出:
k.fn.init(3) [div, div#d2, div#d3, prevObject: k.fn.init(1)]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
樣式操作
方法 描述
addClass() 向被選元素添加一個(gè)或多個(gè)類名
after() 在被選元素后插入內(nèi)容
append() 在被選元素的結(jié)尾插入內(nèi)容
appendTo() 在被選元素的結(jié)尾插入 HTML 元素
attr() 設(shè)置或返回被選元素的屬性/值
before() 在被選元素前插入內(nèi)容
clone() 生成被選元素的副本
css() 為被選元素設(shè)置或返回一個(gè)或多個(gè)樣式屬性
detach() 移除被選元素(保留數(shù)據(jù)和事件)
empty() 從被選元素移除所有子節(jié)點(diǎn)和內(nèi)容
hasClass() 檢查被選元素是否包含指定的 class 名稱
height() 設(shè)置或返回被選元素的高度
html() 設(shè)置或返回被選元素的內(nèi)容
innerHeight() 返回元素的高度(包含 padding,不包含 border)
innerWidth() 返回元素的寬度(包含 padding,不包含 border)
insertAfter() 在被選元素后插入 HTML 元素
insertBefore() 在被選元素前插入 HTML 元素
offset() 設(shè)置或返回被選元素的偏移坐標(biāo)(相對于文檔)
offsetParent() 返回第一個(gè)定位的祖先元素
outerHeight() 返回元素的高度(包含 padding 和 border)
outerWidth() 返回元素的寬度(包含 padding 和 border)
position() 返回元素的位置(相對于父元素)
prepend() 在被選元素的開頭插入內(nèi)容
prependTo() 在被選元素的開頭插入 HTML 元素
prop() 設(shè)置或返回被選元素的屬性/值
remove() 移除被選元素(包含數(shù)據(jù)和事件)
removeAttr() 從被選元素移除一個(gè)或多個(gè)屬性
removeClass() 從被選元素移除一個(gè)或多個(gè)類
removeProp() 移除通過 prop() 方法設(shè)置的屬性
replaceAll() 把被選元素替換為新的 HTML 元素
replaceWith() 把被選元素替換為新的內(nèi)容
scrollLeft() 設(shè)置或返回被選元素的水平滾動(dòng)條位置
scrollTop() 設(shè)置或返回被選元素的垂直滾動(dòng)條位置
text() 設(shè)置或返回被選元素的文本內(nèi)容
toggleClass() 在被選元素中添加/移除一個(gè)或多個(gè)類之間切換
unwrap() 移除被選元素的父元素
val() 設(shè)置或返回被選元素的屬性值(針對表單元素)
width() 設(shè)置或返回被選元素的寬度
常用實(shí)例:
三級(jí)菜單展示
$(this).next().removeClass('hide').parent().siblings().find('.items').addClass('hide')
1
直接操作css屬性
// 兩個(gè)參數(shù)設(shè)置屬性
$('#p1').css('font-size','24px')
// 一個(gè)參數(shù)獲取屬性
$('#p1').css('font-size')
// 一次設(shè)置多個(gè)屬性
$('#p1').css({"border":"1px solid black","color":"blue"})
1
2
3
4
5
6
7
位置操作
// 不加參數(shù)獲取位置參數(shù)
$(".c3").offset()
// 加參數(shù)設(shè)置位置參數(shù)
$(".c3").offset({top:284,left:400})
// position只能獲取值,不能設(shè)置值
// scrollTop獲取當(dāng)前滾動(dòng)條偏移量
$('window').scrollTop();
$('window').scrollTop(0); // 設(shè)置滾動(dòng)條偏移量
1
2
3
4
5
6
7
8
9
10
文本操作
text() html() 不加參數(shù)獲取值,加參數(shù)設(shè)置值
val() 不加參數(shù)獲取值,加參數(shù)設(shè)置值
1
2
屬性操作
// 獲取文本屬性
$('#d1').attr('s1') // 獲取屬性值
$('#d1').attr('s1','haha') // 設(shè)置屬性值
$('#d1').attr({'num':50,'taidi':'gay'}) // 設(shè)置多個(gè)屬性
$('#d1').removeAttr('taidi') // 刪除一個(gè)屬性
// 獲取check與radio標(biāo)簽的checked屬性
$('#i1').prop('checked')
$('#i1').prop('checked',true)
1
2
3
4
5
6
7
8
9
文檔處理
// 標(biāo)簽內(nèi)部尾部追加元素
$('#d1').append(pEle)
$pEle.appendTo($('#d1'))
// 標(biāo)簽內(nèi)部頭部添加元素
$('#d1').prepend(pEle)
$pEle.prependTo($('#d1'))
// 標(biāo)簽外部下面添加元素
$(A).after(B)// 把B放到A的后面
$(A).insertAfter(B)// 把A放到B的后面
// 標(biāo)簽外部上面添加元素
$(A).before(B)// 把B放到A的前面
$(A).insertBefore(B)// 把A放到B的前面
// 替換標(biāo)簽
replaceWith() // 什么被什么替換
replaceAll() // 拿什么替換什么
// 克隆事例
<button id="b2">屠龍寶刀,點(diǎn)擊就送</button>
// clone方法加參數(shù)true,克隆標(biāo)簽并且克隆標(biāo)簽帶的事件
$("#b2").on("click", function () {
$(this).clone(true).insertAfter(this); // true參數(shù)
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
表單篩選器
選擇器 實(shí)例 選取
:input $(":input") 所有 input 元素
:text $(":text") 所有帶有 type=“text” 的 input 元素
:password $(":password") 所有帶有 type=“password” 的 input 元素
:checkbox $(":checkbox") 所有帶有 type=“checkbox” 的 input 元素
:submit $(":submit") 所有帶有 type=“submit” 的 input 元素
:reset $(":reset") 所有帶有 type=“reset” 的 input 元素
:button $(":button") 所有帶有 type=“button” 的 input 元素
:image $(":image") 所有帶有 type=“image” 的 input 元素
:file $(":file") 所有帶有 type=“file” 的 input 元素
:enabled $(":enabled") 所有啟用的 input 元素
:disabled $(":disabled") 所有禁用的 input 元素
:selected $(":selected") 所有選定的 input 元素
:checked $(":checked") 所有選中的 input 元素
// 針對表單內(nèi)的標(biāo)簽
$('input[type="text"]')
// 簡化寫法
$(':text')
// 找到所有被選中的checkbox
$(':checkbox') // 注意select框中默認(rèn)selected標(biāo)簽也會(huì)被找到
$('input:checkbox')
1
2
3
4
5
6
7
8
遍歷方法
方法 描述
add() 把元素添加到匹配元素的集合中
children() 返回被選元素的所有直接子元素
closest() 返回被選元素的第一個(gè)祖先元素
contents() 返回被選元素的所有直接子元素(包含文本和注釋節(jié)點(diǎn))
each() 為每個(gè)匹配元素執(zhí)行函數(shù)
filter() 把匹配元素集合縮減為匹配選擇器或匹配函數(shù)返回值的新元素
find() 返回被選元素的后代元素
first() 返回被選元素的第一個(gè)元素
is() 根據(jù)選擇器/元素/jQuery 對象檢查匹配元素集合,如果存在至少一個(gè)匹配元素,則返回 true
last() 返回被選元素的最后一個(gè)元素
next() 返回被選元素的后一個(gè)同級(jí)元素
nextAll() 返回被選元素之后的所有同級(jí)元素
nextUntil() 返回介于兩個(gè)給定參數(shù)之間的每個(gè)元素之后的所有同級(jí)元素
not() 從匹配元素集合中移除元素
offsetParent() 返回第一個(gè)定位的父元素
parent() 返回被選元素的直接父元素
parents() 返回被選元素的所有祖先元素
parentsUntil() 返回介于兩個(gè)給定參數(shù)之間的所有祖先元素
prev() 返回被選元素的前一個(gè)同級(jí)元素
prevAll() 返回被選元素之前的所有同級(jí)元素
prevUntil() 返回介于兩個(gè)給定參數(shù)之間的每個(gè)元素之前的所有同級(jí)元素
siblings() 返回被選元素的所有同級(jí)元素 Returns all sibling elements of the selected element
slice() 把匹配元素集合縮減為指定范圍的子集
each() 方法為每個(gè)匹配元素規(guī)定要運(yùn)行的函數(shù)。
$.each(array,function(index){
console.log(array[index])
})
$.each(array,function(){
console.log(this);
})
// 支持簡寫
$divEles.each(function(){
console.log(this) // 標(biāo)簽對象
})
1
2
3
4
5
6
7
8
9
10
11
jQuery鏈?zhǔn)讲僮?br />
python代碼詮釋鏈?zhǔn)秸{(diào)用,其實(shí)就是在調(diào)用方法之后講對象再次返回
<div>
<p>p1</p>
<p>p2</p>
</div>
$('div>p').first().addclass('c1').next().addclass('c2');
1
2
3
4
5
jQuery 事件
事件處理程序指的是當(dāng) HTML 中發(fā)生某些事件時(shí)所調(diào)用的方法。
$(document).ready()
$(document).ready() 方法允許我們在文檔完全加載完后執(zhí)行函數(shù)。為了防止網(wǎng)頁還沒加載完,js代碼就已經(jīng)執(zhí)行,通常利用下面兩種方式來書寫js代碼。
$(document).ready(function(){
// 在這里寫你的JS代碼...
})
網(wǎng)頁最后
$(function(){
// 在這里寫你的代碼
})
1
2
3
4
5
6
7
8
click()
click() 方法是當(dāng)按鈕點(diǎn)擊事件被觸發(fā)時(shí)會(huì)調(diào)用一個(gè)函數(shù)。
在下面的實(shí)例中,當(dāng)點(diǎn)擊事件在某個(gè)<p> 元素上觸發(fā)時(shí),隱藏當(dāng)前的 <p> 元素:
$("p").click(function(){
$(this).hide();
});
1
2
3
dblclick()
當(dāng)雙擊元素時(shí),會(huì)發(fā)生 dblclick 事件。
$("p").dblclick(function(){
$(this).hide();
});
1
2
3
mouseenter()
當(dāng)鼠標(biāo)指針穿過元素時(shí),會(huì)發(fā)生 mouseenter 事件。
$("#p1").mouseenter(function(){
alert("鼠標(biāo)經(jīng)過了!");
});
1
2
3
mouseleave()
當(dāng)鼠標(biāo)指針離開元素時(shí),會(huì)發(fā)生 mouseleave 事件。
$("#p1").mouseleave(function(){
alert("鼠標(biāo)離開了!");
});
1
2
3
mousedown()
當(dāng)鼠標(biāo)指針移動(dòng)到元素上方,并按下鼠標(biāo)按鍵時(shí),會(huì)發(fā)生 mousedown 事件。
$("#p1").mousedown(function(){
alert("鼠標(biāo)按下!");
});
1
2
3
mouseup()
當(dāng)在元素上松開鼠標(biāo)按鈕時(shí),會(huì)發(fā)生 mouseup 事件。
ouseup(function(){
alert("鼠標(biāo)松開!");
});
1
2
3
hover()
hover()方法用于模擬光標(biāo)懸停事件。當(dāng)鼠標(biāo)移動(dòng)到元素上時(shí),會(huì)觸發(fā)指定的第一個(gè)函數(shù)(mouseenter);當(dāng)鼠標(biāo)移出這個(gè)元素時(shí),會(huì)觸發(fā)指定的第二個(gè)函數(shù)(mouseleave)。
$("#p1").hover(function(){
alert("你的光標(biāo)懸停!");
},
function(){
alert("你的光標(biāo)已經(jīng)離開!");
});
1
2
3
4
5
6
focus()
當(dāng)元素獲得焦點(diǎn)時(shí),發(fā)生 focus 事件。
$("input").focus(function(){
$(this).css("background-color","#eee");
});
1
2
3
blur()
當(dāng)元素失去焦點(diǎn)時(shí),發(fā)生 blur 事件。
$("input").blur(function(){
$(this).css("background-color","#eee");
});
1
2
3
input()
input實(shí)時(shí)監(jiān)聽,輸入內(nèi)容時(shí)發(fā)生 input 事件
$('#i1').on('input',function () {
console.log($(this).val())
});
1
2
3
取消標(biāo)簽?zāi)J(rèn)的事件
利用preventDefault()
$('input').click(function (e) {
alert(123);
e.preventDefault();
});
直接返回false
$('input').click(function (e) {
alert(123);
return false;
});
1
2
3
4
5
6
7
8
9
10
11
事件冒泡
iv>p>span // 三者均綁定點(diǎn)擊事件
$("span").click(function (e) {
alert("span");
e.stopPropagation(); // 阻止事件冒泡
});
1
2
3
4
5
事件委托
<button>按鈕</button>
<script src="jQuery-3.3.1.js"></script>
<script>
$('body').on('click','button',function () {
alert(123)
})
</script>
1
2
3
4
5
6
7
jQuery自帶的動(dòng)畫效果
下面的表格列出了用于創(chuàng)建動(dòng)畫效果的 jQuery 方法。
方法 描述
delay() 對被選元素的所有排隊(duì)函數(shù)(仍未運(yùn)行)設(shè)置延遲
dequeue() 移除下一個(gè)排隊(duì)函數(shù),然后執(zhí)行函數(shù)
fadeIn() 逐漸改變被選元素的不透明度,從隱藏到可見
fadeOut() 逐漸改變被選元素的不透明度,從可見到隱藏
fadeTo() 把被選元素逐漸改變至給定的不透明度
fadeToggle() 在 fadeIn() 和 fadeOut() 方法之間進(jìn)行切換
finish() 對被選元素停止、移除并完成所有排隊(duì)動(dòng)畫
hide() 隱藏被選元素
queue() 顯示被選元素的排隊(duì)函數(shù)
show() 顯示被選元素
slideDown() 通過調(diào)整高度來滑動(dòng)顯示被選元素
slideToggle() slideUp() 和 slideDown() 方法之間的切換
slideUp() 通過調(diào)整高度來滑動(dòng)隱藏被選元素
stop() 停止被選元素上當(dāng)前正在運(yùn)行的動(dòng)畫
toggle() hide() 和 show() 方法之間的切換
藍(lán)藍(lán)設(shè)計(jì)( m.yvirxh.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。
如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里
抽象圖形拼接
坦白說,這些抽象的 LOGO 設(shè)計(jì)讓我立刻想起了JK·羅琳和她書中的魔法符號(hào)。如果這些Logo背后都有著獨(dú)特而富有力量的故事,那么它們確實(shí)可以很好地服務(wù)于品牌。這樣的了 LOGO 設(shè)計(jì)應(yīng)當(dāng)在筆觸上保持一致,并且充滿意義,我覺得如果能傳遞出這樣的信息,它就很優(yōu)秀了。
利落清晰的筆觸,完美的角度和弧線,這樣精準(zhǔn)的設(shè)計(jì)會(huì)給人帶來可靠的感知。當(dāng)然,這些Logo 的應(yīng)用場景同樣有著嚴(yán)格的環(huán)境要求,設(shè)計(jì)師幾乎沒有異想天開的余地。這些 Logo 看上去相當(dāng)正式,有著明顯的高級(jí)感。
借助負(fù)空間來傳遞信息一直一種巧妙的 LOGO 設(shè)計(jì)技巧,它就像缺少關(guān)鍵證據(jù)的犯罪現(xiàn)場,墻上的洞,它并不是借助現(xiàn)有存在的因素來告訴你信息,而是通過一個(gè)「不在場的關(guān)鍵元素」,來傳遞重要信息。負(fù)空間就是這樣,它同樣也是一塊畫布,只不過給人的感覺是通過畫布的背面來呈現(xiàn)信息和故事。
負(fù)空間并不是為了隱藏信息而存在,就像聯(lián)邦快遞 (FedEx) Logo中隱藏的箭頭,或是 Toblerone 巧克力 Logo 中山腰上的熊。這些元素都不是為了隱藏信息,而是為了通過這種不完整來傳遞更多的信息。通過正空間來凸顯負(fù)空間就是關(guān)鍵的技巧,正如 Reinhard Ernst 博物館的 Logo 所示,中間開放的矩形區(qū)塊如同畫框,似乎可以代表博物館的任何一件藏品,這也是一種「less is more」的設(shè)計(jì)。
很多做 Logo 的設(shè)計(jì)師都曾經(jīng)歷無法控制的時(shí)刻,發(fā)呆失神應(yīng)該也經(jīng)常會(huì)發(fā)生。如果你是在紙上畫草圖,筆尖無意識(shí)地滑動(dòng),或者墨水洇出,都會(huì)產(chǎn)生有趣的筆觸痕跡。我知道這不是電腦上繪圖的方式,但它確實(shí)幫助我描繪出這種視覺設(shè)計(jì)的特征。將筆尖繪制成一個(gè)完美的圓,而筆尖后則是留下托拽的痕跡,在筆痕結(jié)束的位置,自然留下的也是一個(gè)圓弧邊緣。
不管這些 Logo 的布局特征是怎樣的,它們都呈現(xiàn)了類似視覺特征。小圓點(diǎn)和托拽痕跡構(gòu)成了它主要的「筆觸」,它們而生動(dòng)地拼出字母,繪制出路徑,或者勾畫出有意義的符號(hào)。我想你已經(jīng)捕捉到了它們的特征了——活力四射,生動(dòng)新鮮的筆觸路徑。
在logo設(shè)計(jì)中廣泛使用漸變色,是整個(gè)行業(yè)在過去十年中經(jīng)歷的最兩極分化的趨勢之一。仍有很多設(shè)計(jì)師抵觸過渡色,因?yàn)閺腖OGO設(shè)計(jì)的角度上來說,漸變色違背了很多規(guī)則,而這些規(guī)則是在數(shù)字時(shí)代之前就已經(jīng)存在了。不過,LOGO 設(shè)計(jì)師們總能想出好辦法,比如間隔漸變式的設(shè)計(jì)。
將均勻漸進(jìn)的色彩變化用連續(xù)的純色片段來替代,同樣呈現(xiàn)出色彩的變化和韻律感,但是消解了漸變色在 LOGO 展示過程中潛在各種問題。上面案例中,Qwant 的 logo 就是通過輪廓化的顏色分割來實(shí)現(xiàn)這一點(diǎn),它真實(shí)地模擬了漸變的效果,所呈現(xiàn)出的效果比CPA Ireland 要好,CPA Ireland 則使用了的四等分幾何分割加上色階轉(zhuǎn)換??傮w上來說,間隔漸變的色彩使用技巧,很好地在當(dāng)下的流行趨勢和 LOGO 設(shè)計(jì)訴求之間找到了平衡點(diǎn),值得嘗試。
使用線條來勾勒和描摹事物,傳達(dá)信息,是一項(xiàng)古老而傳統(tǒng)的技藝。在時(shí)下的審美體系當(dāng)中,使用輪廓線條來繪制 LOGO 似乎顯得太過于老派,不夠現(xiàn)代。不過技術(shù)總歸是服務(wù)于表達(dá)的,依然有設(shè)計(jì)師能夠充分的利用這一技術(shù)——加入透視,不再局限于二維,而是開始描繪三維的對象。
這一的設(shè)計(jì)看起來和如今的線性圖標(biāo)的繪制方式在技法上保持了延續(xù)性,但是它在維度呈現(xiàn)上更加深入,更加具有表現(xiàn)力和形式感。通過富有規(guī)律性的利落的線條,設(shè)計(jì)師不用太多的線條就能勾勒出立體而抓人眼球的LOGO。這種設(shè)計(jì)要求設(shè)計(jì)具備更強(qiáng)大更精準(zhǔn)的描摹能力。你可以延續(xù)這種思路到整個(gè)設(shè)計(jì)當(dāng)中,這會(huì)使得整個(gè)品牌化設(shè)計(jì)思路更加開闊、有趣。
在 LOGO 設(shè)計(jì)當(dāng)中,使用句點(diǎn)這樣的標(biāo)點(diǎn)符號(hào),通常都會(huì)借用它身處標(biāo)點(diǎn)符號(hào)中的含義和功能。當(dāng)我仔細(xì)琢磨這一趨勢時(shí),發(fā)現(xiàn)這些類似句點(diǎn)的符號(hào)有時(shí)像句號(hào),有時(shí)則偏向冒號(hào),它們在LOGO中總帶著一些奇特的意味。如你所見,這些原點(diǎn)在更多的時(shí)候,它更接近于句號(hào),充當(dāng)收尾和封頂?shù)慕K止符。
有的時(shí)候,它的裝飾性更強(qiáng),以不同的形式漂浮在文本和符號(hào)周圍。如果你要深究這些 LOGO 設(shè)計(jì)本身的含義會(huì)發(fā)現(xiàn),這個(gè)小圓點(diǎn)可能是字母 i 上的那個(gè)小圓點(diǎn)簡略之后的殘留痕跡。這個(gè)小圓點(diǎn),在如今的很多 LOGO 中已經(jīng)超出了裝飾性的范疇,基于不同的需求和設(shè)計(jì)出發(fā)點(diǎn),它可能意味著時(shí)間,可能代表著字母,承載著特定的詞匯和含義,可能是感嘆號(hào)或者句號(hào),表達(dá)情緒或者終止。設(shè)計(jì)師將內(nèi)容抽象成幾何圖形,承載意義,提升了對話的智慧。
在傳遞放飛、飛翔、展望、自由、遠(yuǎn)見、輕盈、速度等含義的時(shí)候,很多設(shè)計(jì)師都會(huì)借用翅膀的意象。這也是為什么越來越多的地方會(huì)看到被提煉和抽象出來的翅膀和羽毛的符號(hào)或者圖形,某種意義上,翅膀已經(jīng)遠(yuǎn)超出了它本身的意味。這些被設(shè)計(jì)得形制不一的翅膀類的圖形,有著冥想的前傾或者后掠的姿態(tài),仿佛在對抗變幻莫測的大風(fēng),借助空氣動(dòng)力學(xué)向上飛起。
很多翅膀元素形制類似于字母 U,只不過兩只翅膀在傾斜角度、弧度和長短上,進(jìn)行了比較深入的調(diào)整。之后,再對 Logo 進(jìn)行弧度和細(xì)節(jié)進(jìn)行修飾,這樣就完成了。如同我們上面所在展示的幾個(gè)案例,設(shè)計(jì)師經(jīng)過很快的迭代就可以完成這樣的設(shè)計(jì)。與此同時(shí),在具體的設(shè)計(jì)過程中,設(shè)計(jì)師還會(huì)引用品牌中一些字母的特征,比如Jetta的字母J,DoorDash 的字母 D。大量包含 Fs、Ps 和非字母的意象共同孕育出了雙翼的意象。蘋果有翅膀,烏龜也可以有翅膀。我們可以用翅膀填補(bǔ)空白。
門其實(shí)我們常常會(huì)引申出「打開新世界大門」的概念,它在實(shí)際設(shè)計(jì)中會(huì)帶有通道、時(shí)間、新世界,甚至一種全新心境和意境的概念。很多品牌 LOGO 都想借助這個(gè)意象來承載更高遠(yuǎn)的含義,微軟就是一個(gè)典型。門和窗本身一直都是一組象征性極強(qiáng)的元素。門象征著通行的權(quán)利,解決方案的途徑,機(jī)會(huì),甚至歡迎的含義,某種意義上它們和眼睛在含義和隱喻上是共通的。這也是很多設(shè)計(jì)師在設(shè)計(jì) LOGO 的時(shí)候青睞這一意象的原因所在。
2019年的LOGO趨勢報(bào)告,是我們的第17份 LOGO趨勢報(bào)告。每年的趨勢報(bào)告都是從成千上萬的 Logo 中,尋找新趨勢和細(xì)微微妙的差別。我們承認(rèn),每一個(gè)設(shè)計(jì)案例都代表著來自世界各地的設(shè)計(jì)師們的思考和心血,我們對他們表示敬畏,并感謝他們不遺余力地幫助我們完成這份報(bào)告。感謝所有在過去、現(xiàn)在和未來幾年為潮流報(bào)告做出貢獻(xiàn)的設(shè)計(jì)師們。
藍(lán)藍(lán)設(shè)計(jì)( m.yvirxh.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。
如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里
目錄結(jié)構(gòu):
index.wxml:
<view class="canvasBox">
<canvas canvas-id="myCanvas" class="myCanvas" catchtouchstart='canvasStart' catchtouchmove='canvasMoving'></canvas>
</view>
<view class="btn">
<button type="warn" bindtap='drawPen'>畫筆</button>
<button type="primary" bindtap='clearCanvas'>清空畫板</button>
<button type="warn" bindtap='clearLine'>橡皮擦</button>
<button style='background:#000;color:#fff;' bindtap="black">黑色</button>
<button style='background:yellow;color:#000;' bindtap="yellow">黃色</button>
<button style='background:red;color:#fff;' bindtap="red">紅色</button>
<button style='background:blue;color:#fff;' bindtap="blue">藍(lán)色</button>
<button style='background:green;color:#fff;' bindtap="green">綠色</button>
<button type="warn" bindtap="startRecording">開始錄制</button>
<button type="primary" bindtap='rePlay'>復(fù)盤</button>
<button></button>
</view>
index.wxss:
.canvasBox{
position: relative;
top:0;
left:0;
width: 750rpx;
height:800rpx;
background:#eee;
}
.canvasBox .myCanvas{
width: 100%;
height:100%;
position: absolute;
top:0;
left:0;
}
.btn{
width: 750rpx;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.btn button{
width: 180rpx;
font-size: 24rpx;
}
index.js:
//index.js
//獲取應(yīng)用實(shí)例
import {hisData} from "../../utils/historyOperation.js";
const app = getApp()
var moveToX = 0, moveToY = 0, lineToX = 0, lineToY = 0;
var context = null;
var isStart = false;
var date;
var startDate;//開始時(shí)刻
var penType = "drawPen";
var colorStr = "#000";
var operationType = "mapping";
Page({
data: {
},
canvasStart:function(e){
var x = Math.floor(e.touches[0].clientX);
var y = Math.floor(e.touches[0].clientY);
date = new Date();
moveToX = x;
moveToY = y;
operationType = "mapping";
if(penType === "clearPen"){
operationType = "clearLine";
}
if (isStart) {
hisData.hisDataArr.push({
time: date.getTime() - startDate,
operation: operationType,
lineArr: {
startX: moveToX,
startY: moveToY,
currentX: x,
currentY: y,
z: 1,
colorStr:colorStr
}
})
}
},
//繪制線條
canvasMoving:function(e){
date = new Date();
var x = Math.floor(e.changedTouches[0].clientX);
var y = Math.floor(e.changedTouches[0].clientY);
lineToX = x;
lineToY = y;
if(penType === "clearPen"){
operationType = "clearLine";
context.clearRect(x-12, y-12, 24, 24);
context.draw(true);
}else{
operationType = "mapping";
context.setStrokeStyle(colorStr);
context.moveTo(moveToX, moveToY);
context.lineTo(lineToX, lineToY);
}
if (isStart) {
hisData.hisDataArr.push({
time: date.getTime() - startDate,
operation: operationType,
lineArr: {
startX: moveToX,
startY: moveToY,
currentX: lineToX,
currentY: lineToY,
z: 1,
colorStr: colorStr
}
})
}
moveToX = lineToX;
moveToY = lineToY;
context.stroke();
context.draw(true);
},
clearCanvas:function(){
context.clearRect(0,0,375,400);
context.draw(true);
date = new Date();//記錄當(dāng)前操作時(shí)刻
operationType = "clearCanvas";
if(isStart){
hisData.hisDataArr.push({
time: date.getTime() - startDate,
operation: operationType,
lineArr: {
startX: -1,
startY: -1,
currentX: -1,
currentY: -1,
z: 0,
colorStr: colorStr
}
})
}
},
drawPen:function(){
penType = "drawPen";
},
clearLine:function(){
penType = "clearPen";
},
black:function(){
colorStr = "#000";
},
yellow: function () {
colorStr = "yellow";
},
red: function () {
colorStr = "red";
},
blue: function () {
colorStr = "blue";
},
green: function () {
colorStr = "green";
},
startRecording:function(){
isStart = true;
date = new Date();
startDate = date.getTime();
},
rePlay:function(){
wx.navigateTo({
url: '../replay/replay',
})
},
onLoad: function () {
isStart = false;
context = wx.createCanvasContext('myCanvas');
context.beginPath();
context.setStrokeStyle('#000');
context.setLineWidth(5);
context.setLineCap('round');
context.setLineJoin('round');
}
})
historyOperation.js:該文件用來保存歷史操作,以便復(fù)盤
const hisData = {
hisDataArr:[
{
time:0,//操作時(shí)間
/**
* 操作類型
* 繪圖:mapping
* 拖動(dòng)球員:moveplayer
* 清除畫布:clearCanvas
* 橡皮擦:clearLine
*/
operation:"mapping",//操作類型
/**
* 繪制路徑
* startX:開始x坐標(biāo)
* startY:開y縱坐標(biāo)
* currentX:目標(biāo)位置的 x 坐標(biāo)
* currentY:目標(biāo)位置的 y 坐標(biāo)
* z:1代表畫線時(shí)鼠標(biāo)處于move狀態(tài),0代表處于松開狀態(tài)
* colorStr:線的填充顏色
*/
lineArr: { //繪制路徑
startX:0,
startY:0,
currentX:0,
currentY:0,
z:0,
colorStr:"#000"
}
}
]
};
export {hisData};
復(fù)盤:
reply.wxml:
<!--pages/replay/replay.wxml-->
<view class="replayBox">
<canvas canvas-id='myCanvas' class="myCanvas"></canvas>
</view>
<button type="warn" bindtap="start">開始</button>
reply.wxss:
/* pages/replay/replay.wxss */
.replayBox{
position:relative;
width: 750rpx;
height:800rpx;
background: #eee;
}
.replayBox .myCanvas{
position: absolute;
top:0;
left:0;
width:100%;
height:100%;
}
reply.js:
// pages/replay/replay.js
import {hisData} from "../../utils/historyOperation.js";
var startDate;
var date;
var curTime;
var context = null;
var timer = null;
Page({
/**
* 頁面的初始數(shù)據(jù)
*/
data: {
},
start:function(){
context.clearRect(0, 0, 375, 400);
clearInterval(timer);
date = new Date();
startDate = date.getTime();
var i = 0;
var that = this;
var len = hisData.hisDataArr.length;
timer = setInterval(function(){
date = new Date();
curTime = date.getTime() - startDate;
if (curTime >= hisData.hisDataArr[i].time){
switch (hisData.hisDataArr[i].operation) {
case "mapping":
context.setStrokeStyle(hisData.hisDataArr[i].lineArr.colorStr);
context.moveTo(hisData.hisDataArr[i].lineArr.startX, hisData.hisDataArr[i].lineArr.startY);
context.lineTo(hisData.hisDataArr[i].lineArr.currentX, hisData.hisDataArr[i].lineArr.currentY);
context.stroke();
context.draw(true);
break;
case "clearCanvas":
context.clearRect(0, 0, 375, 400);
context.draw(true);
break;
case "clearLine":
context.clearRect(hisData.hisDataArr[i].lineArr.currentX-12, hisData.hisDataArr[i].lineArr.currentY-12, 24, 24);
context.draw(true);
break;
}
i++;
}
if(i >= len){
clearInterval(timer);
}
},2);
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面加載
*/
onLoad: function (options) {
context = wx.createCanvasContext('myCanvas');
context.beginPath();
context.setStrokeStyle('#000');
context.setLineWidth(3);
context.setLineCap('round');
context.setLineJoin('round');
}
})
藍(lán)藍(lán)設(shè)計(jì)( m.yvirxh.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。
如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請點(diǎn)這里
設(shè)計(jì)師在日常溝通的時(shí)候,是不是經(jīng)常會(huì)遇到說了半天結(jié)果大家說的不是一件事的情況?筆者認(rèn)為,要解決這個(gè)問題,首先要統(tǒng)一名詞,保證溝通的準(zhǔn)確度。下面是筆者整理的一些關(guān)于 APP(小程序)名詞的規(guī)范樣例,希望能幫助到剛剛?cè)胄械耐瑢W(xué)們。我們從下載并使用一個(gè) APP 的流程來展開說明。
1. 啟動(dòng)圖標(biāo)
點(diǎn)擊后可以啟動(dòng) APP 的圖標(biāo),如圖分別是淘寶在不同場景下的啟動(dòng)圖標(biāo)。
2. 應(yīng)用市場展示頁
在應(yīng)用市場中為了幫助用戶在下載之前了解 APP 功能的頁面叫應(yīng)用市場展示頁,也能夠通過優(yōu)秀的 UI 設(shè)計(jì)吸引用戶下載。
如圖中紅框內(nèi)分別是蘇寧易購、設(shè)計(jì)本、當(dāng)當(dāng)網(wǎng)的應(yīng)用市場展示頁。
3. 啟動(dòng)頁(閃屏)
APP 啟動(dòng)后加載過程中顯示的頁面叫啟動(dòng)頁,如圖是微信、有道云筆記、得到的啟動(dòng)頁。一般啟動(dòng)頁的設(shè)計(jì)都會(huì)比較簡潔,只有啟動(dòng)圖標(biāo)+solgen,或是吉祥物、一張精美圖片的形式。
4. 廣告頁
國內(nèi)一些公司由于變現(xiàn)困難在啟動(dòng)頁之前或之后,進(jìn)入主頁之前加了一張廣告頁,主要用來顯示接的廣告或自己公司的運(yùn)營活動(dòng),可以跳轉(zhuǎn)鏈接或打開其他 APP。
如圖是 UC瀏覽器、網(wǎng)易云音樂、寶寶樹的廣告頁。
5. 引導(dǎo)頁
用戶第一次打開 APP 后為用戶介紹 APP 主要功能的頁面,只顯示一次,或是 APP 版本更新后用來介紹新版本新功能。
如圖是前程無憂 APP 的引導(dǎo)頁。
6. 首頁
進(jìn)入 APP 后默認(rèn)顯示的頁面,如圖是微信、澎湃新聞、淘寶的首頁。
7. 一級(jí)頁面
一般指通過底部標(biāo)簽切換的方式能夠到達(dá)的頁面。如:
8. 二級(jí)頁面
指通過一次反饋操作能夠回到一級(jí)頁面的頁面,叫二級(jí)頁面。
如圖分別是微信聊天頁面、朋友圈頁面、支付寶我的余額頁面,它們都是二級(jí)頁面。
9. 注冊登錄頁面
用戶注冊賬號(hào)、登錄賬號(hào)的頁面。如圖是洪恩故事的注冊登錄頁。
10. 個(gè)人主頁/我的頁面
顯示用戶個(gè)人信息、和用戶有關(guān)的訂單、收藏、優(yōu)惠券、課程、商品等等信息的頁面。
如圖是 luckin 咖啡、家長幫、丁香醫(yī)生的個(gè)人主頁。
11. 菜單導(dǎo)航頁
包含很多分類、不同欄目,可以跳轉(zhuǎn)到很多個(gè)不同內(nèi)容頁面的頁面叫做菜單導(dǎo)航頁。一般首頁大部分屬于菜單導(dǎo)航頁,如我們的 pro 小程序的首頁就是一個(gè)菜單導(dǎo)航頁。
如圖是一條、新世相閱讀、美圖秀秀的菜單導(dǎo)航頁。
12. 搜索頁面
用于搜索的頁面。有的 APP 沒有單獨(dú)的搜索頁面只有一個(gè)輸入框,有的有單獨(dú)的,因?yàn)榭梢苑乓恍┩扑]內(nèi)容或廣告位。
如圖是喜馬拉雅 FM、貝貝、搜狗閱讀的搜索頁。
13. 設(shè)置頁面
更改 APP 設(shè)置的頁面,如圖是百度閱讀、淘票票、夸克瀏覽器的設(shè)置頁面。
14. 詳情頁面
展示內(nèi)容詳細(xì)信息的頁面,如圖分別是淘寶的商品詳情頁、起點(diǎn)學(xué)院的課程詳情頁、今日頭像的咨詢詳情頁。
15. 關(guān)于我們頁面
介紹 APP 版本信息、功能介紹、公司信息、聯(lián)系方式、版權(quán)聲明的頁面。
如圖分別是夸克瀏覽器、極客時(shí)間、火辣健身的關(guān)于我們頁面。
16. 意見反饋頁面
一般的 APP 都會(huì)設(shè)計(jì)一個(gè)意見反饋功能來收集用戶需求,對應(yīng)的頁面就是意見反饋頁面。
如圖分別是貝貝、阿里釘釘、花生地鐵的意見反饋頁。
APP 中的頁面類型大致可以分為以上這些,上邊所寫的頁面名稱是被使用得最多的、最規(guī)范的名稱。溝通時(shí)使用上面的頁面名稱應(yīng)該 90% 的成員都能理解。
對于不同類型的頁面名稱一般設(shè)計(jì)師用的比較多,叫法也最準(zhǔn)確,以上名稱是在一些專業(yè)的 UI 設(shè)計(jì)網(wǎng)站查閱資料,又和幾個(gè)設(shè)計(jì)師朋友確認(rèn)后擬定的,準(zhǔn)確度可以保證。
1. 編程語言
人的語言可以分為漢語、英語、法語等等,計(jì)算機(jī)的語言同樣可以分為 java、php、html 等等,這些語言就是編程語言。不同的程序員會(huì)的語言不同,每一種語言都需要單獨(dú)學(xué)習(xí)。
2. 程序
通過編程語言給計(jì)算機(jī)下達(dá)任務(wù),讓它理解我們要做什么。用編程語言給計(jì)算機(jī)/手機(jī)下達(dá)的任務(wù)書就是程序。
3. 數(shù)據(jù)類型
編程語言中用來區(qū)分?jǐn)?shù)據(jù)格式的標(biāo)記,如記錄數(shù)字和記錄漢字就要使用不同的數(shù)據(jù)類型。
如:
4. 變量
沒有固定值的量,例如:定義一個(gè)變量 X 表示繪本名稱,那 X 可能叫《我不喜歡哭》,也可能叫《鱷魚媽媽》。即用一個(gè)單詞表示物體的一個(gè)屬性,如上面說的繪本標(biāo)題。
5. 接口
電腦需要調(diào)用手機(jī)里面的信息,這時(shí)候你會(huì)拿一根數(shù)據(jù)線將電腦手機(jī)連接起來,電腦和手機(jī)上連接數(shù)據(jù)線的接口就是傳說中的 API 接口──即獲取數(shù)據(jù)、獲取某種功能的通道。
如在 pro 小程序中要想在前端展示文章,那么在定義完文章標(biāo)題的字號(hào)、顏色等等后就需要設(shè)計(jì)師提供給接口獲取具體的文章內(nèi)的文字,常說的 API 就是接口的意思。
6. 客戶端(前端)和后臺(tái)
客戶端是用戶使用軟件時(shí)能夠看到的軟件界面,后臺(tái)是控制前端內(nèi)容、功能的控制器,一般給軟件開發(fā)者使用。
7. 寫死和后臺(tái)傳過來
寫死就是程序員直接在 html 代碼中直接把具體文字寫出來,想修改的話只能在代碼中進(jìn)行修改,后臺(tái)傳過來就行。程序員在 html 代碼中不寫具體文字,而是寫一個(gè)變量,這個(gè)變量可以在后臺(tái)修改成不同的內(nèi)容。
例如,要設(shè)計(jì)一個(gè)管理不同城市分公司的軟件,需要一個(gè)下拉選擇框切換不同城市的分公司,這個(gè)需求在技術(shù)上有兩個(gè)實(shí)現(xiàn)辦法:
第一種方案比較靈活,當(dāng)城市數(shù)據(jù)有變化(在新的城市成立了新的分公司)可以在后臺(tái)直接添加,前端不需要做修改。缺點(diǎn)是需要開發(fā)相應(yīng)接口,有一定工作量。第二種是比較快速的辦法,省去了開發(fā)接口的工作量。
具體使用哪種方案要根據(jù)具體場景選擇,如廣告位的圖片就不適合寫死,而是要開發(fā)對應(yīng)的接口能夠在后臺(tái)靈活更換修改。像導(dǎo)航欄中部的頁面名稱的文字一般不會(huì)有變化就可以直接寫死。
8. 服務(wù)器
提供服務(wù)的機(jī)器,如微信的服務(wù)器就提供了聊天、傳文件、視頻、朋友圈等服務(wù),用戶連接服務(wù)器(登錄)后由服務(wù)器對數(shù)據(jù)和信息進(jìn)行處理,再返回給用戶結(jié)果,而不是在用戶自己的電腦/手機(jī)上處理。
9. 數(shù)據(jù)庫
儲(chǔ)存用戶信息、軟件內(nèi)容的地方,保存一切數(shù)據(jù)的倉庫。
如我們 pro 小程序的專家文章就保存在自己的數(shù)據(jù)庫中,上次出問題打不開文章就是數(shù)據(jù)庫出了問題,其余鏈接式的文章是保存在微信的服務(wù)器上,我們鏈接到微信的服務(wù)器上他為我們提供瀏覽文章的服務(wù),數(shù)據(jù)庫是服務(wù)器的一部分。
10. 類、對象、抽象和實(shí)例
抽象在技術(shù)術(shù)語里的意思是提煉出一個(gè)通用模板,然后基于模板做具象化的實(shí)現(xiàn)。
例如:在現(xiàn)實(shí)世界中關(guān)于人的分類,會(huì)有男人、女人、老人和小孩,如果將這個(gè)具體的分類抽象出一個(gè)類別,得到的抽象結(jié)果就是人。所以,人就是一個(gè)抽象出來的分類,也就是技術(shù)術(shù)語里面的「類」。
在編程語言的世界中,通過程序語言描述現(xiàn)實(shí)世界中的事物時(shí),使用的就是抽象的方法,將一類事物抽象成一個(gè)類。有了類以后就可以根據(jù)類具體出實(shí)例,如根據(jù)「人」這個(gè)類可以具體出老人、小孩,這樣的人就叫實(shí)例。
11. 程序員說的「打印」
在調(diào)試程序或開發(fā)測試的時(shí)候經(jīng)常出現(xiàn)打印這個(gè)詞,程序員口中的打印不是用打印機(jī)打印出文字或圖片,而是表示結(jié)果輸出。這個(gè)輸出不是輸出到現(xiàn)實(shí)世界的紙張上,而是把程序運(yùn)行的結(jié)果輸出到他的電腦屏幕上,進(jìn)而查看程序運(yùn)行是否正確。這個(gè)把程序運(yùn)行的結(jié)果輸出到屏幕上的過程就叫打印。
12. 架構(gòu)和框架
架構(gòu)和框架是程序員經(jīng)常提到的兩個(gè)技術(shù)概念,在工作崗位上也有架構(gòu)師這一崗位。
我們通過舉例來理解這兩個(gè)概念,例如:修建房屋時(shí)會(huì)有一個(gè)總設(shè)計(jì)師負(fù)責(zé)設(shè)計(jì)整體藍(lán)圖和規(guī)劃,這個(gè)工作就可以理解為架構(gòu)師的工作。
架構(gòu)設(shè)計(jì)好后,繼續(xù)進(jìn)入具體施工的環(huán)節(jié),施工時(shí)可以完全自己設(shè)計(jì)裝修方案,也可以使用一些現(xiàn)有的比較成熟的裝修模板來套用,這里的裝修模板就是框架??蚣芫褪鞘褂矛F(xiàn)有的成熟技術(shù)框架簡化開發(fā)過程,降低復(fù)雜度、減少工作量。現(xiàn)在很多軟件的開發(fā)都會(huì)使用一些比較成熟的開發(fā)框架代替純自主開發(fā)來提率。
13. 控件和組件
任何一個(gè)網(wǎng)頁或 APP 都是由大量的輸入框、按鈕、圖文展示框組成的,這些組成頁面的最小元素就叫控件。一個(gè)按鈕是一個(gè)控件,一個(gè)輸入框也是一個(gè)控件。
而組件是一種功能更全面的升級(jí)版控件,可以把組件理解成多個(gè)控件的組合。如 tab 欄就是一個(gè)組件,它是由圖標(biāo)、文字、按鈕等組成的。
14. 進(jìn)程和線程
經(jīng)常聽程序員討論進(jìn)程和線程,如涉及到一些復(fù)雜功能的時(shí)候程序員會(huì)說已經(jīng)同時(shí)開了幾個(gè)線程在處理了。
還是通過實(shí)例來說明,例如:我們點(diǎn)擊一個(gè) APP 的啟動(dòng)圖標(biāo),手機(jī)的操作系統(tǒng)就會(huì)給這個(gè) APP 分配運(yùn)行資源(CPU和內(nèi)存),分配好后這個(gè) APP 就會(huì)開始運(yùn)行。這里說的 APP 運(yùn)行就是一個(gè)進(jìn)程,也可以理解為每一個(gè)正在運(yùn)行的 APP 都是一個(gè)進(jìn)程,如我們同時(shí)打開的微信和淘寶,那么就同時(shí)存在兩個(gè)進(jìn)程。當(dāng)手機(jī)的 cpu 資源或內(nèi)存不足時(shí)就會(huì)關(guān)閉當(dāng)前沒有正在使用的進(jìn)程(APP),進(jìn)程就會(huì)被終止,對應(yīng)的 APP 也就關(guān)閉了。
相對于進(jìn)程,線程是一個(gè)更小的程序運(yùn)行單位。一個(gè) APP 中可以包含多個(gè)線程,如負(fù)責(zé)發(fā)送聊天信息的線程、負(fù)責(zé)連接網(wǎng)絡(luò)的線程。APP 之所以能夠同時(shí)完成很多功能就是因?yàn)榇嬖诙鄠€(gè)線程,多個(gè)線程可以保證系統(tǒng)資源被合理地分配和利用。
15. 腳本
腳本這個(gè)詞出現(xiàn)的頻率也比較高,程序員有時(shí)候就會(huì)說「弄一個(gè)腳本統(tǒng)一處理一下」。腳本也是一種計(jì)算機(jī)程序,一般用來代替人工重復(fù)的操作,例如:我們可以通過一個(gè)固定格式的表格,來把繪本信息導(dǎo)入到數(shù)據(jù)庫中,就是使用了腳本。
腳本一般沒有圖形界面,通過代碼命令的形式使用,腳本一般是程序員使用的。
藍(lán)藍(lán)設(shè)計(jì)( m.yvirxh.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。
藍(lán)藍(lán)設(shè)計(jì)的小編 http://m.yvirxh.cn