92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

首頁

手機appUI界面設計賞析(七)

前端達人

手機UI中的交互是保持產品鮮活生命力的源動力。好的交互可以幫助用戶快速地獲得反饋,認知布局,增強體驗感和沉浸感。

手機UI中的交互是保持產品鮮活生命力的源動力。好的交互可以幫助用戶快速地獲得反饋,認知布局,增強體驗感和沉浸感。這里為大家整理了12款優秀并富有創意的交互作品,為你的產品設計注入靈感。

還有精美的天氣app賞析

jhk-1601983971748.png

jhk-1601983997786.png

jhk-1601984016327.png

jhk-1601984124858.jpg

jhk-1601984237705.png

WechatIMG373.jpeg

WechatIMG374.png

WechatIMG375.jpeg

WechatIMG376.png

WechatIMG377.jpeg

WechatIMG391.jpeg

WechatIMG392.png

WechatIMG395.png

WechatIMG396.png

WechatIMG455.png

WechatIMG456.png

WechatIMG457.png

WechatIMG458.jpeg

WechatIMG459.jpeg

WechatIMG460.png

WechatIMG461.png

WechatIMG462.jpeg

WechatIMG463.jpeg

WechatIMG464.png

WechatIMG466.jpeg



   --手機appUI設計--

  --精美的天氣app設計--


(以上圖片均來源于網絡)


  藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服



  更多精彩文章:

       手機appUI界面設計賞析(一)

       手機appUI界面設計賞析(二)

       手機appUI界面設計賞析(三)

       手機appUI界面設計賞析(四)

       手機appUI界面設計賞析(五)

       手機appUI界面設計賞析(六)




CSS基礎知識第三篇

前端達人

盒子模型

看透網頁布局的本質

首先利用CSS設置好盒子的大小,然后擺放盒子的位置。最后把網頁元素比如文字圖片等等,放入盒子里面。

概念

盒子模型由元素的內容邊框border內邊距padding和外邊距margin組成
盒子里面的文字和圖片等元素是內容區域,盒子的厚度我們稱為盒子的邊框
盒子內容與邊框的距離是內邊距,盒子與盒子之間的距離是外邊距

盒子邊框

語法

border:border-width粗細|border-style樣式|border-color顏色 

邊框綜合設置
border: 1px solid red; 沒有順序

表格的細線邊框
cellspacing=“0” ,將單元格與單元格之間的距離設置為0
border-collapse:collapse; 表示相鄰邊框合并在一起

內邊距

padding屬性用于設置內邊距,是指邊框與內容之間的距離

屬性
padding-left左內邊距padding-right右內邊距padding-top上內邊距padding-bottom下內邊距

簡寫
2個值 padding: 上下內邊距 左右內邊距 ;
4個值 padding: 上內邊距 右內邊距 下內邊距 左內邊距 ;

內盒尺寸計算(元素實際大?。?/span>
盒子的實際的大小 = 內容的寬度和高度 + 內邊距 + 邊框

外邊距

margin屬性用于設置外邊距。margin控制盒子和盒子之間的距離,屬性和簡寫與padding相同

塊級盒子水平居中

盒子必須指定寬度(width)然后就給左右的外邊距都設置為auto

文字居中和盒子居中區別

盒子內的文字水平居中是text-align:center, 而且還可以讓行內元素和行內塊居中對齊
塊級盒子水平居中 左右margin 改為 auto

清除元素的默認內外邊距

代碼

* {
padding:0;     /* 清除內邊距 */
margin:0;      /* 清除外邊距 */
} 

注意
行內元素為了兼容性, 盡量只設置左右內外邊距, 不設置上下內外邊距

外邊距合并

相鄰塊元素垂直外邊距的合并

當上下相鄰的兩個塊元素相遇時,如果上面的元素有下外邊距margin-bottom,下面的元素有上外邊距margin-top,則他們之間的垂直間距不是margin-bottom與margin-top之和,取兩個值中的較大者這種現象被稱為相鄰塊元素垂直外邊距的合并

解決方案
盡量給只給一個盒子添加margin值

嵌套塊元素垂直外邊距的合并

對于兩個嵌套關系的塊元素,如果父元素沒有上內邊距及邊框,父元素的上外邊距會與子元素的上外邊距發生合并,合并后的外邊距為兩者中的較大者

解決方案
可以為父元素定義上邊框
可以為父元素定義上內邊距
可以為父元素添加overflow:hidden

盒子模型布局穩定性

按照優先使用寬度(width)內邊距(padding)外邊距(margin)

原因
margin有外邊距合并還有ie6下面margin加倍的bug所以最后使用
padding會影響盒子大小,需要進行加減計算,其次使用
width沒有問題,經常使用寬度剩余法高度剩余法來做

浮動

CSS 布局的三種機制

普通流(標準流)

塊級元素會獨占一行,從上向下順序排列
行內元素會按照從左到右順序排列,碰到父元素邊緣則自動換行

浮動

讓盒子從普通流中浮起來,主要作用讓多個塊級盒子一行顯示

定位

將盒子定在瀏覽器的某一個位置

為什么需要浮動

因為行內塊元素可以實現多個元素一行顯示但中間會有空白縫隙
因為行內塊元素不能實現盒子左右對齊

什么是浮動

概念

元素的浮動是指設置了浮動屬性的元素
會脫離標準普通流的控制并可以移動到指定位置

作用

讓多個盒子(div)水平排列成一行,使得浮動成為布局的重要手段
浮動最早是用來控制圖片,實現文字環繞圖片的效果
可以實現盒子的左右對齊等等

語法

選擇器 { float: 屬性值; } 
  • 1

屬性值
none(元素不浮動(默認))left(元素左浮動)right(右浮動)

特點


加了浮動的盒子是浮起來的,漂浮在其他標準流盒子的上面

加了浮動的盒子不占位置,它原來的位置漏給了標準流的盒子

浮動元素改變display屬性, 類似轉換成行內塊元素,但是元素之間沒有空白縫隙

浮動的應用

浮動和標準流的父盒子搭配

實際的導航欄中不直接用鏈接a而是用li包含鏈接(li+a)
li+a語義更清晰
直接用a搜索引擎容易辨別為有堆砌關鍵字嫌疑而影響網站排名

浮動的擴展

浮動元素與父盒子的關系
子盒子的浮動參照父盒子對齊
不會與父盒子的邊框重疊,也不會超過父盒子的內邊距

浮動元素與兄弟盒子的關系
在一個同一個父級盒子中,如果前一個兄弟盒子是浮動的,那么當前盒子會與前一個盒子的頂部對齊
在一個同一個父級盒子中,如果前一個兄弟盒子是普通流的,那么當前盒子會顯示在前一個兄弟盒子的下方

清除浮動

為什么要清除浮動

浮動元素不占用原文檔流的位置,會對后面的元素排版產生影響

清除浮動本質

父級元素因為子級浮動導致內部高度為0,清除浮動后,父級會根據浮動的子盒子檢測高度,父級有高度就不會影響下面的標準流

清除浮動的方法

語法

選擇器{clear:屬性值;}  clear 清除 
  • 1

屬性值
left清除左浮動right清除右浮動both同時清除左右浮動

額外標簽法

是W3C推薦的做法是通過在浮動元素末尾添加一個空的標簽例如<div style=”clear:both”></div>,或則其他標簽br等亦可 
  • 1

優缺點
通俗易懂,書寫方便,但是添加許多無意義的標簽,結構化較差

父級添加overflow屬性方法

可以給父級添加:overflow為hidden|auto|scroll都可以實現

優缺點
代碼簡潔,但是內容增多時候容易造成不會自動換行導致內容被隱藏掉,無法顯示需要溢出的元素

使用after偽元素清除浮動

:after 方式為空元素額外標簽法的升級版,.clearfix:after {  content: ""; display: block; height: 0; clear: both;visibility: hidden; } 
.clearfix {*zoom: 1;}  /* IE6、7 專有 */ 
  • 1
  • 2

優缺點
符合閉合浮動思想結構語義化正確,但是由于IE6-7不支持:after,使用zoom:1觸發hasLayout

使用雙偽元素清除浮動

方法

.clearfix:before,.clearfix:after {
content:"";
display:table;
}
.clearfix:after {
clear:both;
}
.clearfix {
*zoom:1;
} 

優缺點
代碼更簡潔,但由于IE6-7不支持:after使用zoom:1觸發hasLayout

精美時尚的天氣?? 手機APP界面UI設計欣賞 - 藍藍設計(十二)

前端達人

手機UI中的交互是保持產品鮮活生命力的源動力。好的交互可以幫助用戶快速地獲得反饋,認知布局,增強體驗感和沉浸感。

手機UI中的交互是保持產品鮮活生命力的源動力。好的交互可以幫助用戶快速地獲得反饋,認知布局,增強體驗感和沉浸感。這里為大家整理了一些優秀并富有創意的交互作品,為你的產品設計注入靈感。

jhk-1599450540777.jpg

--精美時尚的天氣??手機app--jhk-1599450537147.jpg

--精美時尚的天氣??手機app--

jhk-1599528210651.jpg

--精美時尚的天氣??手機app--

jhk-1599528218678.jpg

jhk-1599528340106.jpg

jhk-1599528344567.jpg

WechatIMG172.png

jhk-1599449851286.png

jhk-1599449824025.png

jhk-1599010597722.png

jhk-1599010532826.png

jhk-1599010495523.png

WechatIMG173.jpeg

WechatIMG174.png

WechatIMG175.png

WechatIMG176.jpeg

WechatIMG177.png

--手機appUI設計--

 (以上圖片均來源于網絡)



 藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服



  更多精彩文章:

       手機appUI界面設計賞析(一)

       手機appUI界面設計賞析(二)

       手機appUI界面設計賞析(三)

       手機appUI界面設計賞析(四)

       手機appUI界面設計賞析(五)

       手機appUI界面設計賞析(六)

       手機appUI界面設計賞析(七)

       手機appUI界面設計賞析(八)

      手機appUI界面設計賞析(九)

       手機appUI界面設計賞析(十)

     手機appUI界面設計賞析(十一)




超贊的頁面設計賞析

前端達人

網頁中超過95%以上的信息都是通過文字的形式呈現。 然而,頁面文字并非毫無章法的隨意呈現。事實上,更具可讀性、視覺效果以及獨特排版和布局的網頁文本設計,更能吸引用戶,提升用戶愉悅度。這也是為什么越來越多的設計師日益重視網頁排版設計的重要原因。

BS界面是基于瀏覽器的界面,隨著人們對于用戶體驗要求的不斷提高,BS界面的設計要求也越來越高,

接下來為大家分享一下我收集到的案例:

0130015f4ef6fe11013f1a64a7ae6e.png

jhk-1598577838087.jpg

jhk-1599010563540.png

jhk-1599010690940.jpg

jhk-1599450537147.jpg

jhk-1599528268664.png

WechatIMG178.png

WechatIMG180.jpeg

WechatIMG181.jpeg

WechatIMG182.jpeg

WechatIMG183.jpeg

WechatIMG184.jpeg

WechatIMG201.jpeg

WechatIMG202.png

WechatIMG203.png

WechatIMG204.png

WechatIMG206.png




(以上圖片均來源于網絡)



  藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服



  更多精彩文章:

       ui界面設計之網站設計案例欣賞(一)

       超贊的創意頁面排版設計,打造“視”不可擋的網頁設計







超贊的創意網頁排版設計,打造 “視”不可擋的網頁設計

前端達人

網頁中超過95%以上的信息都是通過文字的形式呈現。 然而,頁面文字并非毫無章法的隨意呈現。事實上,更具可讀性、視覺效果以及獨特排版和布局的網頁文本設計,更能吸引用戶,提升用戶愉悅度。這也是為什么越來越多的設計師日益重視網頁排版設計的重要原因。

BS界面是基于瀏覽器的界面,隨著人們對于用戶體驗要求的不斷提高,BS界面的設計要求也越來越高,

接下來為大家分享一下我收集到的案例:

jhk-1598599171213.jpg

jhk-1598599175297.jpg

jhk-1598599244105.png

jhk-1598599256648.png

WechatIMG73.png

WechatIMG74.png

WechatIMG94.png

WechatIMG106.jpeg

WechatIMG138.png

WechatIMG139.png

WechatIMG140.jpeg

WechatIMG141.pngWechatIMG142.jpeg

WechatIMG143.png

WechatIMG156.jpeg

WechatIMG157.jpeg

WechatIMG158.jpegWechatIMG158.jpeg



(以上圖片均來源于網絡)


藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服



  更多精彩文章:

       ui界面設計之網站設計案例欣賞(一)


超贊 時尚簡約 手機APP界面UI設計欣賞 - 藍藍設計(十一)

前端達人

手機UI中的交互是保持產品鮮活生命力的源動力。好的交互可以幫助用戶快速地獲得反饋,認知布局,增強體驗感和沉浸感。

手機UI中的交互是保持產品鮮活生命力的源動力。好的交互可以幫助用戶快速地獲得反饋,認知布局,增強體驗感和沉浸感。這里為大家整理了一些優秀并富有創意的交互作品,為你的產品設計注入靈感。

WechatIMG78.png



WechatIMG102.jpeg

jhk-1589856834298.jpg

jhk-1589856847369.jpg

jhk-1596893249060.png

jhk-1596893316552.jpg

jhk-1596893336786.jpg

jhk-1598335311209.jpg

jhk-1599010550962.png

jhk-1599010555618.png

jhk-1599010562811.png

jhk-1599010576450.png

WechatIMG78.png

WechatIMG79.png

WechatIMG80.jpeg

WechatIMG81.png

WechatIMG82.png

WechatIMG100.png

WechatIMG101.pngWechatIMG102.jpeg

WechatIMG103.jpeg

WechatIMG104.png

--手機appUI設計--

 (以上圖片均來源于網絡)



 藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服



  更多精彩文章:

       手機appUI界面設計賞析(一)

       手機appUI界面設計賞析(二)

       手機appUI界面設計賞析(三)

       手機appUI界面設計賞析(四)

       手機appUI界面設計賞析(五)

       手機appUI界面設計賞析(六)

       手機appUI界面設計賞析(七)

       手機appUI界面設計賞析(八)

      手機appUI界面設計賞析(九)

       手機appUI界面設計賞析(十)



JavaScript進階教程(4)-函數內this指向解惑call(),apply(),bind()的區別

前端達人

目錄

1 函數的定義方式

1.1 函數聲明

1.2 函數表達式

1.3 函數聲明與函數表達式的區別

1.4 構造函數Function(了解即可,一般不用)

2 函數的調用方式

3 函數內 this 的指向

4 call、apply、bind

4.1 call,apply

4.1.1 新的函數調用方式apply和call方法

4.1.2 apply和call可以改變this的指向

4.2 call,apply使用

4.3 bind

4.4 總結

5 函數的其它成員(了解)

6 高階函數

6.1 作為參數

6.2 作為返回值

7 總結


1 函數的定義方式

定義函數的方式有三種:

  1. 函數聲明
  2. 函數表達式
  3. new Function(一般不用)

1.1 函數聲明


  1. // 函數的聲明
  2. function fn() {
  3. console.log("我是JS中的一等公民-函數!!!哈哈");
  4. }
  5. fn();

1.2 函數表達式

函數表達式就是將一個匿名函數賦值給一個變量。函數表達式必須先聲明,再調用。


  1. // 函數表達式
  2. var fn = function() {
  3. console.log("我是JS中的一等公民-函數!!!哈哈");
  4. };
  5. fn();

1.3 函數聲明與函數表達式的區別

  1. 函數聲明必須有名字。
  2. 函數聲明會函數提升,在預解析階段就已創建,聲明前后都可以調用。
  3. 函數表達式類似于變量賦值。
  4. 函數表達式可以沒有名字,例如匿名函數。
  5. 函數表達式沒有變量提升,在執行階段創建,必須在表達式執行之后才可以調用。

下面是一個根據條件定義函數的例子:


  1. if (true) {
  2. function f () {
  3. console.log(1)
  4. }
  5. } else {
  6. function f () {
  7. console.log(2)
  8. }
  9. }

以上代碼執行結果在不同瀏覽器中結果不一致。我們可以使用函數表達式解決上面的問題:


  1. var f
  2. if (true) {
  3. f = function () {
  4. console.log(1)
  5. }
  6. } else {
  7. f = function () {
  8. console.log(2)
  9. }
  10. }

函數聲明如果放在if-else的語句中,在IE8的瀏覽器中會出現問題,所以為了更好的兼容性我們以后最好用函數表達式,不用函數聲明的方式。

1.4 構造函數Function(了解即可,一般不用)

在前面的學習中我們了解到函數也是對象。注意:函數是對象,對象不一定是函數,對象中有__proto__原型,函數中有prototype原型,如果一個東西里面有prototype,又有__proto__,說明它是函數,也是對象。


  1. function F1() {}
  2. console.dir(F1); // F1里面有prototype,又有__proto__,說明是函數,也是對象
  3. console.dir(Math); // Math中有__proto__,但是沒有prorotype,說明Math不是函數

對象都是由構造函數創建出來的,函數既然是對象,創建它的構造函數又是什么呢?事實上所有的函數實際上都是由Function構造函數創建出來的實例對象。

所以我們可以使用Function構造函數創建函數。

語法:new Function(arg1,arg2,arg3..,body);
arg是任意參數,字符串類型的。body是函數體。


  1. // 所有的函數實際上都是Function的構造函數創建出來的實例對象
  2. var f1 = new Function("num1", "num2", "return num1+num2");
  3. console.log(f1(10, 20));
  4. console.log(f1.__proto__ == Function.prototype);
  5. // 所以,函數實際上也是對象
  6. console.dir(f1);
  7. console.dir(Function);

2 函數的調用方式

  1. 普通函數
  2. 構造函數
  3. 對象方法

  1. // 普通函數
  2. function f1() {
  3. console.log("我是普通函數");
  4. }
  5. f1();
  6. // 構造函數---通過new 來調用,創建對象
  7. function F1() {
  8. console.log("我是構造函數");
  9. }
  10. var f = new F1();
  11. // 對象的方法
  12. function Person() {
  13. this.play = function() {
  14. console.log("我是對象中的方法");
  15. };
  16. }
  17. var per = new Person();
  18. per.play();

3 函數內 this 的指向

函數的調用方式決定了 this 指向的不同:

調用方式 非嚴格模式 備注
普通函數調用 window 嚴格模式下是 undefined
構造函數調用 實例對象 原型方法中 this 也是實例對象
對象方法調用 該方法所屬對象 緊挨著的對象
事件綁定方法 綁定事件對象  
定時器函數 window  

  1. // 普通函數
  2. function f1() {
  3. console.log(this); // window
  4. }
  5. f1();
  6. // 構造函數
  7. function Person() {
  8. console.log(this); // Person
  9. // 對象的方法
  10. this.sayHi = function() {
  11. console.log(this); // Person
  12. };
  13. }
  14. // 原型中的方法
  15. Person.prototype.eat = function() {
  16. console.log(this); // Person
  17. };
  18. var per = new Person();
  19. console.log(per); // Person
  20. per.sayHi();
  21. per.eat();
  22. // 定時器中的this
  23. setInterval(function() {
  24. console.log(this); // window
  25. }, 1000);

4 call、apply、bind

了解了函數 this 的指向之后,我們知道在一些情況下我們為了使用某種特定環境的 this 引用,需要采用一些特殊手段來處理,例如我們經常在定時器外部備份 this 引用,然后在定時器函數內部使用外部 this 的引用。
然而實際上 JavaScript 內部已經專門為我們提供了一些函數方法,用來幫我們更優雅的處理函數內部 this 指向問題。這就是接下來我們要學習的 call、apply、bind 三個函數方法。call()、apply()、bind()這三個方法都是是用來改變this的指向的。

4.1 call,apply

call() 方法調用一個函數, 其具有一個指定的 this 值和分別地提供的參數(參數的列表)。
apply() 方法調用一個函數, 其具有一個指定的 this 值,以及作為一個數組(或類似數組的對象)提供的參數。

注意:call() 和 apply() 方法類似,只有一個區別,就是 call() 方法接受的是若干個參數的列表,而 apply() 方法接受的是一個包含多個參數的數組。

call語法:

fun.call(thisArg[, arg1[, arg2[, ...]]]) 

call參數:

  • thisArg

    • 在 fun 函數運行時指定的 this 值
    • 如果指定了 null 或者 undefined 則內部 this 指向 window
  • arg1, arg2, ...

    • 指定的參數列表

apply語法:

fun.apply(thisArg, [argsArray]) 

apply參數:

  • thisArg
  • argsArray

apply() 與 call() 相似,不同之處在于提供參數的方式。
apply() 使用參數數組而不是一組參數列表。例如:

fun.apply(this, ['eat', 'bananas']) 

4.1.1 新的函數調用方式apply和call方法


  1. function f1(x, y) {
  2. console.log("結果是:" + (x + y) + this);
  3. return "666";
  4. }
  5. f1(10, 20); // 函數的調用
  6. console.log("========");
  7. // apply和call方法也是函數的調用的方式
  8. // 此時的f1實際上是當成對象來使用的,對象可以調用方法
  9. // apply和call方法中如果沒有傳入參數,或者是傳入的是null,那么調用該方法的函數對象中的this就是默認的window
  10. f1.apply(null, [10, 20]);
  11. f1.call(null, 10, 20);
  12. // apply和call都可以讓函數或者方法來調用,傳入參數和函數自己調用的寫法不一樣,但是效果是一樣的
  13. var result1 = f1.apply(null, [10, 20]);
  14. var result2 = f1.call(null, 10, 20);
  15. console.log(result1);
  16. console.log(result2);

4.1.2 apply和call可以改變this的指向


  1. // 通過apply和call改變this的指向
  2. function Person(name, sex) {
  3. this.name = name;
  4. this.sex = sex;
  5. }
  6. //通過原型添加方法
  7. Person.prototype.sayHi = function(x, y) {
  8. console.log("您好啊:" + this.name);
  9. return x + y;
  10. };
  11. var per = new Person("小三", "男");
  12. var r1 = per.sayHi(10, 20);
  13. console.log("==============");
  14. function Student(name, age) {
  15. this.name = name;
  16. this.age = age;
  17. }
  18. var stu = new Student("小舞", 18);
  19. var r2 = per.sayHi.apply(stu, [10, 20]);
  20. var r3 = per.sayHi.call(stu, 10, 20);
  21. console.log(r1);
  22. console.log(r2);
  23. console.log(r3);

4.2 call,apply使用

apply和call都可以改變this的指向。調用函數的時候,改變this的指向:


  1. // 函數的調用,改變this的指向
  2. function f1(x, y) {
  3. console.log((x + y) + ":===>" + this);
  4. return "函數的返回值";
  5. }
  6. //apply和call調用
  7. var r1 = f1.apply(null, [1, 2]); // 此時f1中的this是window
  8. console.log(r1);
  9. var r2 = f1.call(null, 1, 2); // 此時f1中的this是window
  10. console.log(r2);
  11. console.log("=============>");
  12. //改變this的指向
  13. var obj = {
  14. sex: "男"
  15. };
  16. // 本來f1函數是window對象的,但是傳入obj之后,f1的this此時就是obj對象
  17. var r3 = f1.apply(obj, [1, 2]); //此時f1中的this是obj
  18. console.log(r3);
  19. var r4 = f1.call(obj, 1, 2); //此時f1中的this是obj
  20. console.log(r4);


調用方法的時候,改變this的指向:


  1. //方法改變this的指向
  2. function Person(age) {
  3. this.age = age;
  4. }
  5. Person.prototype.sayHi = function(x, y) {
  6. console.log((x + y) + ":====>" + this.age); //當前實例對象
  7. };
  8. function Student(age) {
  9. this.age = age;
  10. }
  11. var per = new Person(10); // Person實例對象
  12. var stu = new Student(100); // Student實例對象
  13. // sayHi方法是per實例對象的
  14. per.sayHi(10, 20);
  15. per.sayHi.apply(stu, [10, 20]);
  16. per.sayHi.call(stu, 10, 20);

總結

apply的使用語法:
1 函數名字.apply(對象,[參數1,參數2,...]);
2 方法名字.apply(對象,[參數1,參數2,...]);
call的使用語法
1 函數名字.call(對象,參數1,參數2,...);
2 方法名字.call(對象,參數1,參數2,...);
它們的作用都是改變this的指向,不同的地方是參數傳遞的方式不一樣。

如果想使用別的對象的方法,并且希望這個方法是當前對象的,就可以使用apply或者是call方法改變this的指向。

4.3 bind

bind() 函數會創建一個新函數(稱為綁定函數),新函數與被調函數(綁定函數的目標函數)具有相同的函數體(在 ECMAScript 5 規范中內置的call屬性)。當目標函數被調用時 this 值綁定到 bind() 的第一個參數,該參數不能被重寫。綁定函數被調用時,bind() 也可以接受預設的參數提供給原函數。一個綁定函數也能使用new操作符創建對象:這種行為就像把原函數當成構造器。提供的 this 值被忽略,同時調用時的參數被提供給模擬函數。
bind方法是復制的意思,本質是復制一個新函數,參數可以在復制的時候傳進去,也可以在復制之后調用的時候傳入進去。apply和call是調用的時候改變this指向,bind方法,是復制一份的時候,改變了this的指向。

語法:

fun.bind(thisArg[, arg1[, arg2[, ...]]]) 

參數:

  • thisArg

    • 當綁定函數被調用時,該參數會作為原函數運行時的 this 指向。當使用new 操作符調用綁定函數時,該參數無效。
  • arg1, arg2, ...

    • 當綁定函數被調用時,這些參數將置于實參之前傳遞給被綁定的方法。

返回值:

返回由指定的this值和初始化參數改造的原函數的拷貝。

示例1:


  1. function Person(name) {
  2. this.name = name;
  3. }
  4. Person.prototype.play = function() {
  5. console.log(this + "====>" + this.name);
  6. };
  7. function Student(name) {
  8. this.name = name;
  9. }
  10. var per = new Person("人");
  11. var stu = new Student("學生");
  12. per.play();
  13. // 復制了一個新的play方法
  14. var ff = per.play.bind(stu);
  15. ff();

示例2:


  1. //通過對象,調用方法,產生隨機數
  2. function ShowRandom() {
  3. //1-10的隨機數
  4. this.number = parseInt(Math.random() * 10 + 1);
  5. }
  6. //添加原型方法
  7. ShowRandom.prototype.show = function() {
  8. //改變了定時器中的this的指向了
  9. window.setTimeout(function() {
  10. //本來應該是window, 現在是實例對象了
  11. //顯示隨機數
  12. console.log(this.number);
  13. }.bind(this), 1000);
  14. };
  15. //實例對象
  16. var sr = new ShowRandom();
  17. //調用方法,輸出隨機數字
  18. sr.show();

4.4 總結

  • call 和 apply 特性一樣

    • 都是用來調用函數,而且是立即調用
    • 但是可以在調用函數的同時,通過第一個參數指定函數內部 this 的指向
    • call 調用的時候,參數必須以參數列表的形式進行傳遞,也就是以逗號分隔的方式依次傳遞即可
    • apply 調用的時候,參數必須是一個數組,然后在執行的時候,會將數組內部的元素一個一個拿出來,與形參一一對應進行傳遞
    • 如果第一個參數指定了 null 或者 undefined 則內部 this 指向 window
  • bind

    • 可以用來指定內部 this 的指向,然后生成一個改變了 this 指向的新的函數
    • 它和 call、apply 最大的區別是:bind 不會調用
    • bind 支持傳遞參數,它的傳參方式比較特殊,一共有兩個位置可以傳遞
      • 在 bind 的同時,以參數列表的形式進行傳遞
      • 在調用的時候,以參數列表的形式進行傳遞 
      • 那到底以 bind 的時候傳遞的參數為準呢?還是以調用的時候傳遞的參數為準呢?
      • 兩者合并:bind 的時候傳遞的參數和調用的時候傳遞的參數會合并到一起,傳遞到函數內部。

5 函數的其它成員(了解)

  • arguments
    • 實參集合
  • caller
    • 函數的調用者
  • length
    • 函數定義的時候形參的個數
  • name
    • 函數的名字,name屬性是只讀的,不能修改

  1. function fn(x, y, z) {
  2. console.log(fn.length) // => 形參的個數
  3. console.log(arguments) // 偽數組實參參數集合
  4. console.log(arguments.callee === fn) // 函數本身
  5. console.log(fn.caller) // 函數的調用者
  6. console.log(fn.name) // => 函數的名字
  7. }
  8. function f() {
  9. fn(10, 20, 30)
  10. }
  11. f()

6 高階函數

函數可以作為參數,也可以作為返回值。

6.1 作為參數

函數是可以作為參數使用,函數作為參數的時候,如果是命名函數,那么只傳入命名函數的名字,沒有括號。


  1. function f1(fn) {
  2. console.log("我是函數f1");
  3. fn(); // fn是一個函數
  4. }
  5. //傳入匿名函數
  6. f1(function() {
  7. console.log("我是匿名函數");
  8. });
  9. // 傳入命名函數
  10. function f2() {
  11. console.log("我是函數f2");
  12. }
  13. f1(f2);


作為參數排序案例:


  1. var arr = [1, 100, 20, 200, 40, 50, 120, 10];
  2. //排序---函數作為參數使用,匿名函數作為sort方法的參數使用,此時的匿名函數中有兩個參數,
  3. arr.sort(function(obj1, obj2) {
  4. if (obj1 > obj2) {
  5. return -1;
  6. } else if (obj1 == obj2) {
  7. return 0;
  8. } else {
  9. return 1;
  10. }
  11. });
  12. console.log(arr);

6.2 作為返回值


  1. function f1() {
  2. console.log("函數f1");
  3. return function() {
  4. console.log("我是函數,此時作為返回值使用");
  5. }
  6. }
  7. var ff = f1();
  8. ff();

作為返回值排序案例: 


  1. // 排序,每個文件都有名字,大小,時間,可以按照某個屬性的值進行排序
  2. // 三個文件,文件有名字,大小,創建時間
  3. function File(name, size, time) {
  4. this.name = name; // 名字
  5. this.size = size; // 大小
  6. this.time = time; // 創建時間
  7. }
  8. var f1 = new File("jack.avi", "400M", "1999-12-12");
  9. var f2 = new File("rose.avi", "600M", "2020-12-12");
  10. var f3 = new File("albert.avi", "800M", "2010-12-12");
  11. var arr = [f1, f2, f3];
  12. function fn(attr) {
  13. // 函數作為返回值
  14. return function getSort(obj1, obj2) {
  15. if (obj1[attr] > obj2[attr]) {
  16. return 1;
  17. } else if (obj1[attr] == obj2[attr]) {
  18. return 0;
  19. } else {
  20. return -1;
  21. }
  22. }
  23. }
  24. console.log("按照名字排序:**********");
  25. // 按照名字排序
  26. var ff = fn("name");
  27. // 函數作為參數
  28. arr.sort(ff);
  29. for (var i = 0; i < arr.length; i++) {
  30. console.log(arr[i].name + "====>" + arr[i].size + "===>" + arr[i].time);
  31. }
  32. console.log("按照大小排序:**********");
  33. // 按照大小排序
  34. var ff = fn("size");
  35. // 函數作為參數
  36. arr.sort(ff);
  37. for (var i = 0; i < arr.length; i++) {
  38. console.log(arr[i].name + "====>" + arr[i].size + "===>" + arr[i].time);
  39. }
  40. console.log("按照創建時間排序:**********");
  41. // 按照創建時間排序
  42. var ff = fn("time");
  43. // 函數作為參數
  44. arr.sort(ff);
  45. for (var i = 0; i < arr.length; i++) {
  46. console.log(arr[i].name + "====>" + arr[i].size + "===>" + arr[i].time);
  47. }

超贊 時尚簡約 手機APP界面UI設計欣賞 - 藍藍設計(十)

前端達人

手機UI中的交互是保持產品鮮活生命力的源動力。好的交互可以幫助用戶快速地獲得反饋,認知布局,增強體驗感和沉浸感。

手機UI中的交互是保持產品鮮活生命力的源動力。好的交互可以幫助用戶快速地獲得反饋,認知布局,增強體驗感和沉浸感。這里為大家整理了一些優秀并富有創意的交互作品,為你的產品設計注入靈感。

WechatIMG107.png

WechatIMG108.png

WechatIMG109.jpeg

WechatIMG110.png

WechatIMG111.jpeg

WechatIMG113.png

WechatIMG115.png

WechatIMG116.jpeg

WechatIMG117.jpeg

WechatIMG118.jpeg

WechatIMG119.jpeg

WechatIMG120.jpeg

WechatIMG121.jpeg

WechatIMG122.jpeg

WechatIMG124.jpeg

WechatIMG125.jpeg

WechatIMG126.jpeg

WechatIMG128.jpeg

WechatIMG129.jpeg

WechatIMG130.jpeg

WechatIMG159.jpeg

WechatIMG160.jpeg




--手機appUI設計--

 (以上圖片均來源于網絡)

 藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服



  更多精彩文章:

       手機appUI界面設計賞析(一)

       手機appUI界面設計賞析(二)

       手機appUI界面設計賞析(三)

       手機appUI界面設計賞析(四)

       手機appUI界面設計賞析(五)

       手機appUI界面設計賞析(六)

       手機appUI界面設計賞析(七)

       手機appUI界面設計賞析(八)

      手機appUI界面設計賞析(九)




ES6 模塊知識點總結

前端達人

模塊化 export 和 import

import 導入模塊、export 導出模塊
可以直接在任何變量或者函數前面加上一個 export 關鍵字,就可以將它導出。
在一個文件中:

export const sqrt = Math.sqrt; export function square(x) { return x * x; } export function diag(x, y) { return sqrt(square(x) + square(y)); }  
    然后在另一個文件中這樣引用:
import { square, diag } from 'lib'; console.log(square(11)); // 121 console.log(diag(4, 3));  

總結

//mod.js // 第一種模塊導出的書寫方式(一個個的導出) // 導出普通值 export let a = 12; export let b = 5; // 導出json export let json = { a, b }; // 導出函數 export let show = function(){ return 'welcome'; }; // 導出類 export class Person{ constructor(){ this.name = 'jam'; } showName(){ return this.name; } } //index.js //導出模塊如果用default了,引入的時候直接用,若沒有用default,引入的時候可以用{}的形式 // 導入模塊的方式 import { a, b, json, show, Person } from './mod.js'; console.log(a); // 12 console.log(b); // 5 console.log(json.a); // 12 console.log(json.b); // 5 console.log(show()); // welcome console.log(new Person().showName()); // jam //mod1.js // 第二種模塊導出的書寫方式 let a = 12; let b = 5; let c = 10; export { a, b, c as cc // as是別名,使用的時候只能用別名,特別注意下 }; //index1.js // 導入模塊的方式 import { a, b, cc // cc是導出的,as別名 } from './mod1.js'; console.log(a); // 12 console.log(b); // 5 console.log(cc); // 10 //mod2.js // 第三種模塊導出的書寫方式 ---> default // default方式的優點,import無需知道變量名,就可以直接使用,如下 // 每個模塊只允許一個默認出口 var name = 'jam'; var age = '28'; export default { name, age, default(){ console.log('welcome to es6 module of default...'); }, getName(){ return 'bb'; }, getAge(){ return 2; } }; //index2.js // 導入模塊的方式 import mainAttr from './mod2.js'; var str = ' '; // 直接調用 console.log(`我的英文名是:${mainAttr.name}我的年齡是${mainAttr.age}`); mainAttr.default(); // welcome to es6 module of default... console.log(mainAttr.getName()); // bb console.log(mainAttr.getAge()); // 2 //mod3.js var name = 'jam'; var age = '28'; export function getName(){ return name; }; export function getAge(){ return age; }; //index3.js // 導入模塊的方式 import * as fn from './mod3.js'; // 直接調用 console.log(fn.getName()); // 


超贊 時尚簡約 手機APP界面UI設計欣賞 - 藍藍設計(九)

前端達人

手機UI中的交互是保持產品鮮活生命力的源動力。好的交互可以幫助用戶快速地獲得反饋,認知布局,增強體驗感和沉浸感。

手機UI中的交互是保持產品鮮活生命力的源動力。好的交互可以幫助用戶快速地獲得反饋,認知布局,增強體驗感和沉浸感。這里為大家整理了一些優秀并富有創意的交互作品,為你的產品設計注入靈感。

WechatIMG67.jpeg


WechatIMG68.png


WechatIMG69.jpeg


WechatIMG70.jpeg

WechatIMG71.jpeg

WechatIMG64.jpeg

WechatIMG65.png

WechatIMG72.png

WechatIMG76.png

WechatIMG77.png

WechatIMG78.png

WechatIMG79.png

WechatIMG80.jpeg

WechatIMG81.png

WechatIMG82.png



--手機appUI設計--

 (以上圖片均來源于網絡)

 藍藍設計m.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服



  更多精彩文章:

       手機appUI界面設計賞析(一)

       手機appUI界面設計賞析(二)

       手機appUI界面設計賞析(三)

       手機appUI界面設計賞析(四)

       手機appUI界面設計賞析(五)

       手機appUI界面設計賞析(六)

       手機appUI界面設計賞析(七)

       手機appUI界面設計賞析(八)


日歷

鏈接

個人資料

藍藍設計的小編 http://m.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
亚洲欧洲日产国码二区| 亚洲综合三区| 亚洲激情一区二区| 国产精品自拍小视频| 亚洲高清资源综合久久精品| 8av国产精品爽爽ⅴa在线观看| 精品一区二区三区四区在线| 亚洲国产综合色| 高清国产一区二区| 亚洲无毛电影| 青青伊人久久| 亚洲国产精品综合久久久| 国产v亚洲v天堂无码| 日本精品黄色| 日韩三级视频在线观看| 黄色成人在线网| 亚洲成人动漫在线播放| www红色一片_亚洲成a人片在线观看_| 成人动漫一区| 欧美激情综合五月色丁香小说| 老牛精品亚洲成av人片| 992tv国产精品成人影院| 欧美成人第一页| 成人午夜在线播放| 亚洲一区二区三区香蕉| 亚洲高清不卡| 日本精品一区二区三区在线播放| 亚洲国产精品资源| 久久er99热精品一区二区| 91蜜臀精品国产自偷在线| 久久久综合精品| 高清不卡在线观看| 91豆花精品一区| 三级小说欧洲区亚洲区| 成人三级视频在线观看一区二区| 激情图片在线观看高清国产| 美女精品久久久| 99这里只有精品视频| 欧美怡春院一区二区三区| 在线看黄色av| 国产91精品在线观看| 日本亚洲免费观看| 欧美成人亚洲成人| 精品九九在线| 综合激情网...| 国产综合久久久久久| 91精品国产自产在线观看永久∴| 久久综合资源网| 亚洲国产成人av在线| 欧美嫩在线观看| 婷婷六月国产精品久久不卡| 精品福利在线导航| 91国产精品| 国产精品久久久久久久美男| 亚洲美女一区| 福利一区福利二区微拍刺激| 中文字幕乱码日本亚洲一区二区| 永久免费精品影视网站| 久久99精品久久久久久欧洲站| av在线一区二区| 精品sm在线观看| 91精品黄色片免费大全| 日韩av在线网| 日韩三区在线观看| 你懂的在线观看一区二区| 久久国产福利国产秒拍| 国产91综合一区在线观看| av资源网一区| 最新精品在线| 日本欧洲国产一区二区| 99精品国产91久久久久久| 国产精品日韩欧美一区二区| 欧美精品久久久久久久久老牛影院| 欧美成人国产va精品日本一级| 日韩制服丝袜av| 日韩理论电影| 欧美日韩成人激情| 在线观看h网| 国产探花在线精品一区二区| 久久久精品视频成人| 欧美在线日韩精品| 视频成人永久免费视频| 欧美xx视频| 久久影视一区二区| 成人av色网站| 国产综合婷婷| 精品动漫3d一区二区三区免费| 亚洲一区日韩精品中文字幕| 日韩在线观看不卡| 亚州一区二区| 一本大道久久a久久精品综合| 国模精品视频一区二区| 久久视频精品在线| 最新日本在线观看| 国产精品永久免费观看| 自拍偷自拍亚洲精品被多人伦好爽| 日韩亚洲精品电影| 极品av在线| 色国产综合视频| 久久91精品国产91久久久| 国产视频精品免费播放| 久久看人人爽人人| av成人手机在线| 国产精品无圣光一区二区| 久久久久久久久久看片| 欧洲福利电影| 欧美高跟鞋交xxxxhd| 香蕉成人啪国产精品视频综合网| 亚洲免费电影在线| 乱人伦视频在线| 国产精品国产三级在线观看| 日韩av资源在线播放| 国产区精品视频在线观看豆花| 国产亚洲婷婷免费| 欧美亚洲动漫精品| 亚洲美女又黄又爽在线观看| 亚洲一二三区视频在线观看| 91精品国产自产观看在线| 国产婷婷视频在线| 91极品女神在线| 久久亚洲二区| a成人v在线| 国产精品久av福利在线观看| 羞羞色国产精品网站| 免费a级人成a大片在线观看| 日韩午夜电影在线观看| 成人av一区| 亚洲三级电影网站| 久久国内精品视频| 久久久久久久一| 粉嫩av一区二区三区在线播放| 韩国自拍一区| 在线亚洲人成电影网站色www| 国产九九视频一区二区三区| 久久综合久久久| 亚洲日本成人在线观看| 视频小说一区二区| 亚洲sss视频在线视频| 在线免费视频一区二区| 成人小视频免费观看| 亚洲欧洲无码一区二区三区| 68精品国产免费久久久久久婷婷| 欧美性受极品xxxx喷水| 国产精品国产精品国产专区蜜臀ah| 精品视频网站| 91po在线观看91精品国产性色| 亚洲qvod图片区电影| 日本美女视频一区二区| 国产亚洲激情视频在线| 亚洲精品久久久一区二区三区| 免费在线亚洲| 日韩综合一区二区| 亚洲精品在线观看免费| 日韩欧美一区二区三区四区| 欧美丝袜自拍制服另类| 狠狠色伊人亚洲综合成人| 999国产在线| 成人福利视频在线看| 伊人春色在线观看| 狠狠色狠狠色综合系列| 日韩欧美高清一区二区三区| 午夜不卡av在线| 中文字幕亚洲无线码在线一区| 99re国产在线播放|