整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          JS的數(shù)據(jù)類型你了解多少?

          為 JavaScript 的??級知識點,JS 數(shù)據(jù)類型在整個 JavaScript 的學(xué)習(xí)過程中其實尤為重要。因為

          在 JavaScript 編程中,經(jīng)常會遇到邊界數(shù)據(jù)類型條件判斷問題,很多代碼只有在某種特定的數(shù)據(jù)

          類型下,才能可靠地執(zhí)?。

          希望本章的學(xué)習(xí),能讓你熟練掌握數(shù)據(jù)類型的判斷以及轉(zhuǎn)換等知識,在遇到數(shù)據(jù)類型判斷,隱式轉(zhuǎn)換等問題時,

          可以輕松應(yīng)對。

          數(shù)據(jù)類型概念

          Javascript數(shù)據(jù)類型有下面的8種



          其中,前面7種為基礎(chǔ)類型,最后 1 種為引用類型,這也是要重點學(xué)習(xí)的。

          因為各種不同的數(shù)據(jù)類型,創(chuàng)建的對象,最后都存放在內(nèi)容當中。

          因此數(shù)據(jù)類型大概可以分為兩類來進行存儲

          • 基礎(chǔ)類型,存放在棧內(nèi)存,被引用或者拷貝時,會創(chuàng)建一個完全相等的變量
          • 引用類型,存放在堆內(nèi)容,存儲的是地址,多個引用指向同一個地址。也就是說多個地址共享一塊內(nèi)存,這里會涉及到共享的概念

          關(guān)于引用類型,“共享”的概念,可以通過兩段代碼來講解,

          片段一: 牛刀小試

          let a = {
            site: "helloworld.net",
            name: "兔哥",
          };
          
          let b = a;
          console.log(a.site);    //輸出: helloworld.net
          b.site = "csdn.net";
          
          console.log(a.site);    //輸出:csdn.net
          console.log(b.site);    //輸出:csdn.net

          上面的例子比較簡單,有一個對象 a , 又賦值給了 b , 結(jié)果就是a, b 是引用類型,并且指向同一塊內(nèi)存

          a對象修改,b會受影響 , b對象修改,a會受影響 。

          從打印結(jié)果就可以看出來:這兩個值都指向同一塊內(nèi)存,一個發(fā)生了變化 ,另一個也跟著發(fā)生了變化 。

          其實,對于引用類型來說,變量保存的是地址,并不是真實的值,通過地址,找到內(nèi)存,才能從內(nèi)存中讀出真實的值。

          下面的例子能驗證。

          片段二:初有小成

          let a = {
            name: "兔哥",
            age: 18,
          };
          
          function change(obj) {
            obj.age = 20;
            obj = {
              name: "張三",
              age: 30,
            };
          
            return obj;
          }
          
          let b = change(a);
          console.log(b.age);     //輸出:30
          console.log(a.age);     //輸出:20
          
          console.log(a);			//輸出 :{ name: '兔哥', age: 20 }
          console.log(b);			//輸出 :{ name: '張三', age: 30 }

          是不是和你想象的有區(qū)別?需要注意的是,這里的 function 給我們帶來了不一樣的東西。

          原因如下 :

          • 函數(shù)傳進來的是 obj, 傳遞的是對象在堆中的內(nèi)存地址,通過 obj.age = 20; 語句,改變了對象a中的 age 的值
          • 接著又把一個新的對象賦值給了 b,此時 b 就指向了新的一堆內(nèi)存,和以前的 a 沒有關(guān)系了。

          結(jié)論如下:

          • 引用類型的變量,保存的是堆內(nèi)存中的地址
          • 小知識點:內(nèi)存中的地址,其實就是一個16進制的數(shù)字表示。類似家里的門牌號一樣。
          • 函數(shù)傳參數(shù),其實是值傳遞,會拷貝一分變量的副本,包括引用也是,會拷貝一份引用的副本,只不過這個副本里面保存的還是同一個內(nèi)存地址

          數(shù)據(jù)類型檢測

          數(shù)據(jù)類型也是面試過程中,經(jīng)常會被遇到的問題。

          比如:如何判斷是否為數(shù)組?

          而且在平常寫代碼過程中,也會經(jīng)常用到。

          很多人只知道用 typeof 來判斷,但這樣的回答是不能夠讓面試官滿意的。

          所以我們要加深對 JS 數(shù)據(jù)類型的理解,做到對各種數(shù)據(jù)類型的判斷方法了然于胸

          再進行歸納總結(jié),這樣才能徹底掌握數(shù)據(jù)類型的判斷方法。


          第一種判斷方法: typeof

          這是最常見的一種方法,來一段代碼,快速了解用法。

          typeof 10			//‘number’
          typeof '10'			//‘string’
          typeof undefined	//‘undefined’
          typeof Symbol()		//‘symbol’
          typeof []			//‘object’
          typeof {}			//‘object’
          typeof console		//‘object’
          typeof console.log	//‘object’
          typeof null			//‘object’

          最后一種要注意:判斷null ,不要用typeof null , 雖然也會返回 object ,但是這是一個JS的bug

          直接用 if( x === null) 判斷就行

          第二種判斷方法:instanceof

          我們 new ?個對象,那么這個新對象就是它原型鏈繼承上?的對象了

          通過 instanceof 我們能判斷這個對象是否是之前那個構(gòu)造函數(shù)?成的對象

          這樣就基本可以判斷出這個新對象的數(shù)據(jù)類型。下?通過代碼來了解?下。

          let Phone = function () {};
          let apple = new Phone();
          
          console.log(apple instanceof Phone); //true
          
          let phone = new String("小米手機");
          console.log(phone instanceof String); //true
          
          let str = "www.helloworld.net";
          console.log(str instanceof String); //false

          上面就是用instanceof 判斷數(shù)據(jù)類型的大概流程,那么如果讓你實現(xiàn)一個instanceof的底層實現(xiàn),你會怎么寫。

          請看下面代碼:

          function myInstanceof(left, right) {
          
            // 這里先用typeof來判斷基礎(chǔ)數(shù)據(jù)類型,如果是,直接返回false
            if (typeof left !== "object" || left === null) 
              return false;
          
          
            // getProtypeOf是Object對象自帶的API,能夠拿到參數(shù)的原型對象
            let proto = Object.getPrototypeOf(left);
            while (true) {
              //循環(huán)往下尋找,直到找到相同的原型對象
              if (proto === null) 
                  return false;
          
              //找到相同原型對象,返回true
              if (proto === right.prototype) 
                  return true; 
          
              proto = Object.getPrototypeof(proto);
            }
          }
          
          // 驗證一下自己實現(xiàn)的myInstanceof是否OK
          console.log(myInstanceof(new Number(100), Number)); // true
          console.log(myInstanceof(100, Number)); 			// false
          

          現(xiàn)在你知道了兩種判斷數(shù)據(jù)類型的?法,那么它們之間有什么差異呢?

          總結(jié)了下?兩點:

          1. instanceof 可以準確地判斷復(fù)雜引?數(shù)據(jù)類型,但是不能正確判斷基礎(chǔ)數(shù)據(jù)類型;
          2. ? typeof 也存在弊端,它雖然可以判斷基礎(chǔ)數(shù)據(jù)類型(null 除外),但是引?數(shù)據(jù)類型中,除了

          function 類型以外,其他的也?法判斷。

          總之,不管單獨? typeof 還是 instanceof,都不能滿?所有場景的需求,?只能通過?者混寫的?式

          來判斷。

          但是這種?式判斷出來的其實也只是?多數(shù)情況,并且寫起來也?較難受,你也可以試著寫?下。

          其實我個?還是?較推薦下?的第三種?法,相?上述兩個??,能更好地解決數(shù)據(jù)類型檢測問題

          第三種判斷?法:Object.prototype.toString

          toString() Object的原型?法,調(diào)?該?法,可以統(tǒng)?返回格式為 [object XXX]的字符串,其中

          XXX 就是對象的類型。對于 Object 對象,直接調(diào)? toString() 就能返回[object Object];?對于其他對

          象,則需要通過 call 來調(diào)?,才能返回正確的類型信息。我們來看?下代碼。

          Object.prototype.toString( {} ); 					// "[object Object]"
          Object.prototype.toString.call( {} ); 				// 同上結(jié)果,加上call也ok
          Object.prototype.toString.call(100); 				// "[object Number]"
          Object.prototype.toString.call("100"); 				// "[object String]"
          Object.prototype.toString.call(true); 				// "[object Boolean]"
          Object.prototype.toString.call(function () {}); 	// "[object Function]"
          Object.prototype.toString.call(null); 				//"[object Null]"
          Object.prototype.toString.call(undefined); 			//"[object Undefined]"
          Object.prototype.toString.call(/123/g); 			//"[object RegExp]"
          Object.prototype.toString.call(new Date()); 		//"[object Date]"
          Object.prototype.toString.call([]); 				//"[object Array]"
          Object.prototype.toString.call(document); 			//"[object HTMLDocument]"
          Object.prototype.toString.call(window); 			//"[object Window]"


          從上?這段代碼可以看出,Object.prototype.toString.call() 可以很好地判斷引?類型,甚?可以把

          document 和 window 都區(qū)分開來。

          但是在寫判斷條件的時候?定要注意,使?這個?法最后返回統(tǒng)?字符串格式為 "[object XXX]" ,?這

          ?字符串??的 "XXX" ,第?個?字?要?寫(注意:使? typeof 返回的是?寫),這?需要多加留

          意。

          那么下?來實現(xiàn)?個全局通?的數(shù)據(jù)類型判斷?法,來加深你的理解,代碼如下。


          function getType(obj) {
            let type = typeof obj;
          
            // 先進行typeof判斷,如果是基礎(chǔ)數(shù)據(jù)類型,直接返回
            if (type !== "object") {
              return type;
            }
          
            // 對于typeof返回結(jié)果是object的,再進行如下的判斷,正則返回結(jié)果
            return Object.prototype.toString
              .call(obj)
              .replace(/^\[object (\S+)\]$/, "$1");
          }
          
          /* 代碼驗證,需要注意大小寫,哪些是typeof判斷,哪些是toString判斷?思考下 */
          getType([]); // "Array" typeof []是object,因此toString返回
          getType("100"); // "string" typeof 直接返回
          getType(window); // "Window" toString返回
          getType(null); // "Null"首字母大寫,typeof null是object,需toString來判斷
          getType(undefined); // "undefined" typeof 直接返回
          getType(); // "undefined" typeof 直接返回
          getType(function () {}); // "function" typeof能判斷,因此首字母小寫
          getType(/100/g); //"RegExp" toString返回


          至此,數(shù)據(jù)類型檢測的三種方式介紹完了,也給出了示例代碼,希望你可以對比著學(xué)習(xí),使用。

          下面我們來看下一個問題:數(shù)據(jù)類型的轉(zhuǎn)換。

          數(shù)據(jù)類型轉(zhuǎn)換

          在日常開發(fā)中,經(jīng)常會遇到數(shù)據(jù)類型的轉(zhuǎn)換問題

          有時候需要主動進行強制轉(zhuǎn)換

          有時候JS會進行隱式轉(zhuǎn)換,隱式轉(zhuǎn)換的時候就要多留心了。

          "123" == 123; // false or true?
          "" == null; // false or true?
          "" == 0; // false or true?
          [] == 0 // false or true?
          null == undefined; // false or true?
          Number(null); // 返回什么?
          Number(""); // 返回什么?
          parseInt(""); // 返回什么?
          
          {}+10; // 返回什么?
          
          let obj = {
            [Symbol.toPrimitive]() {
              return 200;
            },
            valueOf() {
              return 300;
            },
            toString() {
              return "Hello";
            },
          };
          console.log(obj + 200); // 這里打印出來是多少?

          上?的問題相信你并不陌?,基本涵蓋了我們平常容易疏漏的?些情況,這就是在做數(shù)據(jù)類型轉(zhuǎn)

          換時經(jīng)常會遇到的強制轉(zhuǎn)換和隱式轉(zhuǎn)換的?式,那么下?我就圍繞數(shù)據(jù)類型的兩種轉(zhuǎn)換?式詳細講解

          ?下,希望可以為你提供?些借鑒。

          強制類型轉(zhuǎn)換

          強制類型轉(zhuǎn)換?式包括 Number()、parseInt()、parseFloat()、toString()、String()、Boolean(),這?

          種?法都?較類似,都是通過?身的?法來進?數(shù)據(jù)類型的強制轉(zhuǎn)換。

          Number() 方法強制轉(zhuǎn)換規(guī)則

          • 如果是 boolean ,true和false ,分別轉(zhuǎn)成 1 和 0
          • 如果是是數(shù)字,返回自身
          • 如果 null ,返回 0
          • 如果是 undefined,返回 NaN
          • 如果是字符串,有以下4種規(guī)則
            • 如果只包含數(shù)字,則轉(zhuǎn)為十進制
            • 如果包含有效的浮點格式,則轉(zhuǎn)為浮點數(shù)值
            • 如果是空字符串,則轉(zhuǎn)為 0
            • 如果不是以上格式的字符串,則轉(zhuǎn)為NaN
          • 如果是Symbol, 拋出錯誤
          • 如果是對象,并且部署了 [Symbol.toPrimitive],那么調(diào)用此方法,否則調(diào)用對象的valueOf() 方法
          • 然后根據(jù)前面的規(guī)則返回值,如果轉(zhuǎn)換后的結(jié)果是NaN,則調(diào)用對象的toString() 方法
          • 再依次按照前面 的轉(zhuǎn)換順序返回對應(yīng)的值

          下面通過一段代碼來說明上面的規(guī)則


          Number(true)	//1
          Number(false)	//0
          Number('0111')	//111
          Number(null)	//0
          Number('')		//0
          Number('abc')	//NaN
          Number(-0x11)	//-17
          Number(0x11)	//17
          

          其中,我分別列舉了?較常?的 Number 轉(zhuǎn)換的例?,它們都會把對應(yīng)的?數(shù)字類型轉(zhuǎn)換成數(shù)字類

          型,?有?些實在?法轉(zhuǎn)換成數(shù)字的,最后只能輸出 NaN 的結(jié)果。

          Boolean()?法的強制轉(zhuǎn)換規(guī)則

          這個?法的規(guī)則是:除了 undefined、 null、 false、 ''、 0(包括 +0,-0)、 NaN 轉(zhuǎn)換出來是 false,

          其他都是 true。

          這個規(guī)則很簡單,沒有那么多規(guī)矩


          Boolean(0) //false
          Boolean(null) //false
          Boolean(undefined) //false
          Boolean(NaN) //false
          Boolean(1) //true
          Boolean(13) //true
          Boolean('12') //true

          隱式類型轉(zhuǎn)換

          凡是通過邏輯運算符 (&&、 ||、 !)、運算符 (+、-、*、/)、關(guān)系操作符 (>、 <、 <= 、>=)、相等運算符

          (==) 或者 if/while 條件的操作,如果遇到兩個數(shù)據(jù)類型不?樣的情況,都會出現(xiàn)隱式類型轉(zhuǎn)換。這?你

          需要重點關(guān)注?下,因為?較隱蔽,特別容易讓?忽視。

          下?著重講解?下?常?得?較多的“==”和“+”這兩個符號的隱式轉(zhuǎn)換規(guī)則

          '=='的隱式類型轉(zhuǎn)換規(guī)則

          • 如果類型相同,?須進?類型轉(zhuǎn)換;
          • 如果其中?個操作值是 null 或者 undefined,那么另?個操作符必須為 null 或者 undefined,才會

          返回 true,否則都返回 false;

          • 如果其中?個是 Symbol 類型,那么返回 false;兩個操作值如果為 string 和 number 類型,那么就會將字符串轉(zhuǎn)換為 number;
          • 如果?個操作值是 boolean,那么轉(zhuǎn)換成 number;
          • 如果?個操作值為 object 且另??為 string、number 或者 symbol,就會把 object 轉(zhuǎn)為原始類型再

          進?判斷(調(diào)? object 的 valueOf/toString ?法進?轉(zhuǎn)換)。

          如果直接死記這些理論會有點懵,我們還是直接看代碼,這樣更容易理解?些,如下所示。



          '+'的隱式類型轉(zhuǎn)換規(guī)則

          '+' 號操作符,不僅可以用作數(shù)字相加 ,還可以用作字符串拼接。僅當 '+' 兩邊都是數(shù)字時,進行的是加法運算

          如果兩邊都是字符串,無須進行隱式類型轉(zhuǎn)換

          除了上面規(guī)則,還有一些特殊規(guī)則

          • 如果其中有?個是字符串,另外?個是 undefined、null 或布爾型,則調(diào)? toString() ?法進?字符
          • 串拼接;如果是純對象、數(shù)組、正則等,則默認調(diào)?對象的轉(zhuǎn)換?法會存在優(yōu)先級,然后再進?拼接。
          • 如果其中有?個是數(shù)字,另外?個是 undefined、null、布爾型或數(shù)字,則會將其轉(zhuǎn)換成數(shù)字進?加
          • 法運算,對象的情況還是參考上?條規(guī)則
          • 如果其中?個是字符串、?個是數(shù)字,則按照字符串規(guī)則進?拼接。

          如果直接死記這些理論會有點懵,我們還是直接看代碼,這樣更容易理解?些,如下所示。


          1 + 2 	//3 常規(guī)情況
          '1' + '2' 	//'12' 常規(guī)情況 
          '1' + undefined  // '1undefined' , 規(guī)則1:undefined 轉(zhuǎn)成字符串
          '1' + null // '1null' ,規(guī)則1:null轉(zhuǎn)成字符串
          '1' + true // '1true', 規(guī)則1:true轉(zhuǎn)成字符串
          '1' + 2 // '12' , 規(guī)則3, 字符串拼接
          

          整體來看,如果數(shù)據(jù)中有字符串,JavaScript 類型轉(zhuǎn)換還是更傾向于轉(zhuǎn)換成字符串,因為第三條規(guī)則

          中可以看到,在字符串和數(shù)字相加的過程中最后返回的還是字符串,這?需要關(guān)注?下。

          了解了 '+' 的轉(zhuǎn)換規(guī)則后,我們最后再看?下 Object 的轉(zhuǎn)換規(guī)則。

          Object 的轉(zhuǎn)換規(guī)則

          對象轉(zhuǎn)換的規(guī)則,會先調(diào)?內(nèi)置的 [ToPrimitive] 函數(shù),其規(guī)則邏輯如下:

          • 如果部署了 Symbol.toPrimitive ?法,優(yōu)先調(diào)?再返回;
          • 調(diào)? valueOf(),如果轉(zhuǎn)換為基礎(chǔ)類型,則返回;
          • 調(diào)? toString(),如果轉(zhuǎn)換為基礎(chǔ)類型,則返回;
          • 如果都沒有返回基礎(chǔ)類型,會報錯。

          直接理解有些晦澀,還是直接來看代碼,你也可以在控制臺??敲?遍來加深印象。

          var obj = {
            value: 1,
            valueOf() {
              return 2;
            },
          
            toString() {
              return "3";
            },
          
            [Symbol.toPrimitive]() {
              return 4;
            },
          };
          
          console.log(obj + 1); // 輸出: 5  , 因為有Symbol.toPrimitive方法,所以優(yōu)先調(diào)用這個方法,所以結(jié)果是 5
          
          
          10 + {} // "10[object Object]" , 調(diào)用的是valueOf函數(shù)
          
          
          // "1,2,,4,510" , 會先調(diào)用valueOf,結(jié)果是個數(shù)組
          //不是基礎(chǔ)類型,然后再調(diào)用的是toString函數(shù)
          [1,2,undefined,4,5] + 10 

          總結(jié)

          • 數(shù)據(jù)類型的基本概念:這是必須掌握的知識點,作為深?理解 JavaScript 的基礎(chǔ)
          • 數(shù)據(jù)類型的判斷?法:typeof 和 instanceof,以及 Object.prototype.toString 的判斷數(shù)據(jù)類型、
          • ?寫 instanceof 代碼?段,這些是?常開發(fā)中經(jīng)常會遇到的,因此你需要好好掌握
          • 數(shù)據(jù)類型的轉(zhuǎn)換?式:兩種數(shù)據(jù)類型的轉(zhuǎn)換?式,?常寫代碼過程中隱式轉(zhuǎn)換需要多留意,如果

          理解不到位,很容易引起在編碼過程中的 bug,得到?些意想不到的結(jié)果。

          建議

          Javascript語言不像是其它語言一樣,Javascript是個殘缺的語言,沒有開發(fā)完就上了。

          所以有些犄角旮旯的不符合常理的,我們知道就行了,沒必要記住,知道有那回事就行了

          但是自己寫代碼的時候,一定要嚴格要求自己,一定要注意類型的問題

          強制要求自己,按照強類型語言開發(fā)要求自己,不要做一些騷操作因為那代表不了技術(shù)水平

          reamweaver的CSS面板分類

          type(類型)

          background(背景)

          block(區(qū)塊)

          box(方框) 或盒子意思

          border(邊框)

          list(列表)

          positioning(定位)

          extensions(擴展)

          共八個部分

          1. type(類型)

          type面板主要是對文字的字體,大小,顏色,效果等基本樣式進行設(shè)置。

          注意:屬性名帶*號的是指樣式效果不能在編輯文檔時顯示,要用瀏覽器打開才能看到效果。

          (1)font-family:設(shè)置字體系列。什么叫字體系列呢?是指對文字設(shè)定幾個字體,當遇到第一個字體不能顯示的文字時會自動用系列中的第二個

          字體或后面的字體顯示。

          注意:一般英文字體我們用"Verdana, Arial, Helvetica, sans-serif"這個系列比較好看。如果不用這些字體系列,你就需要自己編輯字體系列,

          也可以直接手動在下拉框里寫字體名,字體之間用逗號隔開。中文網(wǎng)頁默認字體是宋體, 一般就空著不要選取任何字體。

          默認值: not specified(取決于瀏覽器,系統(tǒng)默認的字體, 如: 微軟雅黑)


          注意:

          1.如果有漢字, 那么我們要加引號

          2.如果有多個英文字母組成的單詞, 我們也要加引號; "microsoft yahei" 中間用空格隔開

          3.font-family:"黑體","宋體","華文隸書"; 首先找黑體, 沒有黑體找宋體...

          為了避免在CSS中使用 font 或 font-family 設(shè)置中文字體時亂碼, 可以使用 Unicode 編碼來表示字體。

          /* 示例:使用Unicode字體編碼設(shè)置字體為"微軟雅黑" */
          font-family: "\5FAE\8F6F\96C5\9ED1";


          (2)font-size:定義文字的大小。你可以通過選取數(shù)字和度量單位來選擇具體的字體大小,或者你也可以選擇一個相對的字體大小。

          最好使用pixels作為單位,這樣不會在瀏覽器中文本變形。一般字體用比較標準的12px或14px, 默認值為16px。

          注意:CSS中長度的單位分絕對長度單位和相對長度單位:

          絕對長度單位有:

          pt:磅(point)

          mm、cn、in、pc:(毫米、厘米、英寸、活字)根據(jù)顯示的實際尺寸來確定長度。

          此類單位不隨顯示器的分辨率改變而改變。

          相對長度單位有:

          px:(像素)根據(jù)顯示器的分辨率來確定長度。

          em:當前文本的尺寸。例如:{font-size:2em}是指文字大小為原來的2倍。

          比如自身font-size: 30px; 那么此時1em=30px;

          ex:當前字母"x"的高度,一般為字體尺寸的一半。

          %:是以當前文本的百分比定義尺寸。例如:{ font-size:300%}是指文字大小為原來的3倍。

          small、large:表示比當前小一個級別或大一個級別的尺寸。

          默認值:medium(標準大小)


          (3)font-style:定義字體樣式為normal、italic、oblique。默認設(shè)置為normal。

          注意: italic 斜體 oblique 歪斜體 italic和oblique實際效果是一樣的。

          默認值:normal


          (4)line-height:設(shè)置文本所在行的行高。默認為normal。可以是行內(nèi)元素、行內(nèi)塊元素, 通常與height設(shè)置的高度值相同, 可以做到垂直居中的作用。

          你也可以自己鍵入一個精確的數(shù)值并選取一個計量單位。

          比較直觀的寫法用百分比, 例如140%是指行高等于文字大小的1.4倍。

          最常用的方法: line-height:1.5em; /*行間距,相對數(shù)值,1.5倍行距,*/ 可有效的避免文字發(fā)生重疊

          默認值: normal


          (5)text-decoration:在文本中添加underline(下劃線)、overline(上劃線)、line-through(中劃線)、blink(閃爍效果)。

          這些效果可以同時存在,將效果前的復(fù)選框選定即可。

          注意:鏈接的默認設(shè)置是underline,我們可以通過選none去除下劃線。blink(閃爍效果)只在mozilla瀏覽器里可以看到, IE、opera不支持

          默認值: none


          (6)font-weight:給字體指定粗體字的磅值。

          normal 默認值。定義標準的字符。

          bold 定義粗體字符。

          bolder 定義更粗的字符。

          lighter 定義更細的字符。

          100

          200

          300

          400

          500

          600

          700

          800

          900

          inherit 規(guī)定應(yīng)該從父元素繼承字體的粗細。

          定義由粗到細的字符。400 等同于 normal, 而 700 等同于 bold。

          默認值: normal


          (7)font-variant:允許你選取字體的變種, 選small-caps(小型大寫字母)時, 此樣式區(qū)域內(nèi)所有字母大寫。

          normal表示正常的字體, 為默認值;

          默認值: normal


          (8)text-transform:將選區(qū)中每個單詞的第一個字母轉(zhuǎn)為大寫, 或者令單詞全部大寫或全部小寫。

          參數(shù):capitalize(單詞首字母大寫)、uppercase(轉(zhuǎn)換成大寫)、lowercase(轉(zhuǎn)換成小寫)、none(不轉(zhuǎn)換)。

          默認值:none


          (9)color:定義文字顏色。包括對表單輸入的文字顏色。

          CSS中顏色的值有三種表示方法:

          #RRGGBB格式,是由紅綠藍三種顏色的值組合,每種顏色的值為"00 – FF"的兩位十六進制正整數(shù)。

          例如:#FF0000表示紅色,#FFFF00表示黃色。

          rgb(R,G,B)格式, RGB為三色的值, 取0~255, 例如:rgb(255,0,0)表示紅色, rgb(255,255,0)表示黃色。

          用顏色名稱。CSS可以使用已經(jīng)定義好的顏色名稱。例如:red表示紅色, yellow表示黃色。

          顏色值的縮寫:

          p{color:#000000} 可以縮寫為:p{color:#000}

          p{color:#336699} 可以縮寫為:p{color:#369}

          默認值: not specified


          color: transparent; 透明色


          rgba() 解釋: rgba(紅0-255, 綠0-255, 藍0-255, 透明度0-1)


          注意: 如果文字的顏色通過單獨的類選擇去設(shè)置沒有改變顏色, 則應(yīng)該通過組合選擇器(.header .top .topR .blue)去設(shè)置, 改變它的優(yōu)先級。




          2. background(背景)

          background面板主要是對元素的背景進行設(shè)置,包括背景顏色、背景圖象、背景圖象的控制。

          一般是對body(頁面)、table(表格)、div(區(qū)域)的設(shè)置。

          (1)background-color:設(shè)置元素的背景色。包括對input表單輸入框的背景顏色;

          默認值: transparent(背景顏色為透明)


          rgba() 解釋: rgba(紅0-255, 綠0-255, 藍0-255, 透明度0-1) 一般用于背景色


          (2)background-image:設(shè)置元素的背景圖像。

          默認值:none

          CSS3支持多重背景圖,只要加上一個url指定圖片路徑,并用逗號(,)將兩組url分隔就可以了

          background-image:url(a.jpg),url(b.jpg);


          base64使用

          background-image: url("data:image/png;base64,iVBORw0KGgo=...");


          (3)background-repeat:確定背景圖像是否以及如何重復(fù)。

          repeat 默認值。背景圖像將在垂直方向和水平方向重復(fù)。

          repeat-x 背景圖像將在水平方向重復(fù)。

          repeat-y 背景圖像將在垂直方向重復(fù)。

          no-repeat 背景圖像將僅顯示一次。

          inherit 規(guī)定應(yīng)該從父元素繼承background-repeat屬性的設(shè)置。

          注意:如果定義的元素的body,可以控制頁面背景是否重復(fù)。

          默認值: repeat


          (4)background-attachment:固定背景圖像或者跟隨內(nèi)容滾動。

          參數(shù)fixed表示固定背景(不隨屏幕滾動而滾動,決定背景圖像是否要固定在原來的位置), scroll表示跟隨內(nèi)容滾動的背景。

          注意:如果定義的元素的body, 可以使頁面背景固定。

          默認值: scroll


          (5)background-position(X):指定背景圖像的水平位置。

          可以指定為left(左邊), center(居中),right(右邊);

          也可以指定數(shù)值,如20px是指背景距離左邊20象素。

          background-position(Y):指定背景圖像的垂直位置。

          可以指定為top(頂部), center(居中), bottom(底部);也可以指定數(shù)值。

          background-position屬性值:

          left top

          center top

          right top

          left center

          center center

          right center

          left bottom

          center bottom

          right bottom

          如果您僅規(guī)定了一個關(guān)鍵詞,那么第二個值將是"center"。

          注意:采用英文單詞的水平位置和垂直位置的屬性值可以調(diào)換

          x% y% 第一個值是水平位置,第二個值是垂直位置。左上角是 0% 0%。右下角是 100% 100%。如果您僅規(guī)定了一個值,另一個值將是 50%。

          xpos ypos 第一個值是水平位置,第二個值是垂直位置。左上角是 0 0。單位是像素 (0px 0px) 或任何其他的 CSS 單位。

          如果您僅規(guī)定了一個值,另一個值將是50%。

          您可以混合使用 % 和 position 值。

          默認值:0% 0%

          i,朋友,您來啦。帶上小板凳,我們一起瞅一瞅今天的話題。

          基礎(chǔ)類型

          undefined、null、boolean、number、string、symbol和BigInt。

          BigInt:專治各種不服的大整數(shù),海納百川、超級無敵都不夠形容它。

          symbol:你我Ta可以共享一個名字,但就是不一樣,橫空出世時,就有全宇宙唯一標識。


          復(fù)雜類型/對象

          對象(普通對象、日期對象、錯誤對象等)、數(shù)組、函數(shù)、正則表達式、Promise、Map、Set、WeakMap、WeakSet、Generator、Proxy、……。

          掌握了復(fù)雜類型,就擁有了魔法,有了魔法就能駕馭編程的洪流。[呲牙]


          typeof 操作符 檢測類型

          typeof 返回一個字符串,表示變量或表達式的類型。需要注意的是,typeof 在大多數(shù)情況下,針對某些類型都會返回 "object",而不是具體的類型名稱。


          instanceof 運算符 檢查類型

          instanceof 運算符用于檢測構(gòu)造函數(shù)的 prototype 屬性是否出現(xiàn)在某個實例對象的原型鏈上。


          最可靠的檢測方法

          Object.prototype.toString.call()

          此方式返回一個表示該對象的字符串,其中包括了對象的類型信息。這種方法可以識別出更具體的類型。

          關(guān)注作者:關(guān)注有趣的前端編程。

          希望本文能夠?qū)δ兴鶐椭兄x您的閱讀!

          人人為我,我為人人,謝謝您的瀏覽,讓我們一起加油吧。


          上一篇:HTML代碼編輯工具
          下一篇:HTML表格制作
          主站蜘蛛池模板: 亚洲国产视频一区| 国产精品毛片VA一区二区三区| 亚洲一区二区三区在线观看精品中文 | 精品一区精品二区| 97久久精品无码一区二区 | 精品无码日韩一区二区三区不卡| 亚洲欧洲一区二区三区| AV怡红院一区二区三区| 亚洲免费一区二区| 国产成人一区二区三区在线观看| 国精产品一区二区三区糖心| 少妇一晚三次一区二区三区| 无码少妇一区二区性色AV| 伊人色综合一区二区三区| 免费无码一区二区三区| 色偷偷一区二区无码视频| 精品乱子伦一区二区三区| 在线播放偷拍一区精品| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 日本一区二区免费看| 无码中文人妻在线一区| 一区二区在线视频免费观看| 精品成人乱色一区二区| 国精产品一区一区三区有限在线| 日韩在线一区视频| 国产一区二区三区免费观看在线| 国产在线乱子伦一区二区| 精品中文字幕一区在线| 99久久精品日本一区二区免费| 视频一区二区三区人妻系列| 一区二区中文字幕| 中文字幕日韩人妻不卡一区| 亚洲国产成人久久一区二区三区| 国产高清一区二区三区四区| 色一情一乱一伦一区二区三欧美| 精品乱子伦一区二区三区| 成人在线观看一区| 亚洲乱码一区av春药高潮| 清纯唯美经典一区二区| 国产一区二区三区免费看| 91久久精品无码一区二区毛片|