知識點整理

行級元素、塊級元素有哪些,區別是什麼

1.行級元素/行內元素

display:inline;javascript

多個元素佔一行css

不能夠設置寬高html

常見行級元素java

<a> <span> <i> <strong> <em>
複製代碼

行級元素 只能嵌套行級元素正則表達式

2.塊級元素

display:block;數組

本身佔一行瀏覽器

能夠設置寬高函數

不設置width的時候 width 默認是100%spa

不設置height的時候 高被裏面內容撐開指針

塊級元素能夠嵌套 行級元素、行級塊元素、塊級元素

特例:h1~h6 p 不能夠嵌套塊級元素

常見塊級元素

<div> <p> <ul> <li> <ol> <h1~h6> <table>
複製代碼

常見css選擇器

id選擇器

#id{
    
}
複製代碼

class選擇器

.class{
    
}
複製代碼

標籤選擇器

標籤{
    
}
複製代碼

後代選擇器

a b{
    
}
複製代碼

⼦代選擇器

a>b{
    
}
複製代碼

僞類選擇器

:
複製代碼

僞元素選擇器

::
複製代碼

優先級總結排序:

!important > 行內樣式 > ID選擇器 > 類選擇器 > 元素 > 通配符 > 繼承 > 瀏覽器默認屬性

標準盒模型&怪異盒模型

標準盒模型

在標準模式下,一個塊的總寬度= width + margin(左右) + padding(左右) + border(左右)
怪異盒模型(IE盒模型)
一個塊的總寬度= width + margin(左右)(即width已經包含了padding和border值)

js基本數據類型有哪些

Number類型

Number類型包含整數和浮點數(浮點數數值必須包含一個小數點,且小數點後面至少有一位數字)兩種值。

NaN:非數字類型。特色:① 涉及到的 任何關於NaN的操做,都會返回NaN ② NaN不等於自身。

isNaN() 函數用於檢查其參數是不是非數字值。

isNaN(123) //false isNaN("hello") //true

String類型

字符串有length屬性。

字符串轉換:轉型函數String(),適用於任何數據類型(null,undefined 轉換後爲null和undefined);toString()方法(null,defined沒有toString()方法)。

Boolean類型

該類型只有兩個值,true和false

Undefined類型

只有一個值,即undefined值。使用var聲明瞭變量,但未給變量初始化值,那麼這個變量的值就是undefined。

Null類型

null類型被看作空對象指針,前文說到null類型也是空的對象引用。

外邊距合併怎麼解決

嵌套關係

1.給父元素設置邊框(透明的transparent),若是有外邊距的大小要求,要把加上的邊框減去

2.給父元素設置 overflow:hidden(溢出隱藏)

3.給父元素或子元素設置 絕對定位(position:absolute)

4.給父元素或子元素設置 浮動

並列關係

1.把兩個元素的外邊距所有設置在一個元素上

2.當元素沒有邊框或背景色等影響因素存在時,能夠給元素加內邊距,也能達到效果。

元素浮動會形成什麼,如何解決?

元素浮動會形成塌陷問題

1.父元素溢出隱藏 overflow:hidden;

2.新增一個空的子元素 (id="clear") 而後設置樣式 (清除浮動)clear:both/right/left

#clear{
    clear:both
}
複製代碼

3.把全部浮動的元素加入一個相同的類:clearfix 而後把該類設置爲僞元素(::)並設置樣式

.clearfix::after{
    content:'';
    display:block;
    clear:both;
}
複製代碼

僞元素有兩種:after(在容器的最後面) before(在容器的最前面)

4.給父元素設置高度

常見的position及特色

常規取值: 1.static(靜態) 2.Relative(相對) 3.Absolute(絕對) 4.fixed(固定)

position: relative;相對定位

1> 不影響元素自己特性(不管區塊元素仍是內聯元素會保留其本來特性)

2> 不會使元素脫離文檔流(元素本來位置會被保留,即改變位置也不會佔用新位置)

3> 沒有定位偏移量時對元素無影響(相對於自身本來位置進行偏移)

4>提高層級(用z-index樣式的值能夠改變一個定位元素的層級關係,從而改變元素的覆蓋關係,值越大越在上面,z-index只能在position屬性值爲relative或absolute或fixed的元素上有效。)(兩個都爲定位元素,後面的會覆蓋前面的定位)

position: absolute;絕對定位

1> 使元素徹底脫離文檔流(在文檔流中再也不佔位)

2> 使內聯元素在設置寬高的時候支持寬高(改變內聯元素的特性)

3> 使區塊元素在未設置寬度時由內容撐開寬度(改變區塊元素的特性)

4> 相對於最近一個有定位的父元素偏移(若其父元素沒有定位則逐層上找,直到document——頁面文檔對象)

5> 相對定位通常配合絕對定位使用(將父元素設置相對定位,使其相對於父元素偏移)

6> 提高層級(同相對定位)

position: fixed;固定定位

fixed生成固定定位的元素,相對於瀏覽器窗口進行定位。

static(靜態)

HTML元素的默認值,不受top、bottom、left、right屬性影響,元素出如今正常的文檔 流中

js基本數據類型有哪些

js中有5種數據類型:Undefined、Null、Boolean、Number和String

Undefined

Undefined類型只有一個值,即undefined。在使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined。 但使人困惑的是,對未初始化的變量執行typeof會返回undefined。

Null

Null類型只有一個值,即null。從邏輯角度來看,null值表示一個空對象指針,而這也正是使用typeof操做符檢測null值時會返回「object」的緣由。 若是定義的變量準備在未來用於保存對象,那麼最好將該變量初始化爲null而不是其餘值。這樣一來,只要直接檢查null值就能夠知道相應的變量是否已經保存了一個對象的引用。 實際上,undefined值是派生自null值,所以ECMA-262規定對它們的相等性檢測要返回true。

Boolean

boolean值有兩個字面值:true和false。這兩個值和數字值不是一回事,ture不必定等於1,而false也不必定等於0

Number

最基本的數值字面量格式是十進制整數,十進制整數能夠直接輸入。 整數能夠經過八進制或十六進制的字面值來表示。 其中八進制字面值的第一位必須是0,而後是八進制數字序列(0-7)。若是字面值中的數值超出了範圍,那麼前導零將被忽略,後面的數值將被看成十進制數值解析。 八進制字面量在嚴格模式是無效的,會致使支持該模式的JavaScript引擎拋出錯誤。 十六進制的前兩位必須是0x,後跟任何十六進制數字,其中A-F能夠大寫也能夠小寫。 進行算術計算時,全部以八進制和十六進制表示的數值最終都將被轉換爲十進制數值。

String

String類型用於標識由零活多個16位Unicode字符組成的字符序列,即字符串。

基本數據類型和引用數據類型的區別是什麼

一、棧(stack)和堆(heap)

  stack爲自動分配的內存空間,它由系統自動釋放;而heap則是動態分配的內存,大小也不必定會自動釋放

二、數據類型

  JS分兩種數據類型:

    基本數據類型:Number、String、Boolean、Null、 Undefined、Symbol(ES6),這些類型能夠直接操做保存在變量中的實際值。

    引用數據類型:Object(在JS中除了基本數據類型之外的都是對象,數據是對象,函數是對象,正則表達式是對象)

三、基本數據類型(存放在棧中)

基本數據類型是指存放在棧中的簡單數據段,數據大小肯定,內存空間大小能夠分配,它們是直接按值存放的,因此能夠直接按值訪問
複製代碼

四、引用數據類型(存放在堆內存中的對象,每一個空間大小不同,要根據狀況進行特定的配置)

引用類型是存放在堆內存中的對象,變量實際上是保存的在棧內存中的一個指針(保存的是堆內存中的引用地址),這個指針指向堆內存。

引用類型數據在棧內存中保存的其實是對象在堆內存中的引用地址。經過這個引用地址能夠快速查找到保存中堆內存中的對象
複製代碼

var a = [1,2,3,4,5];
var b = a;//傳址 ,對象中傳給變量的數據是引用類型的,會存儲在堆中;
var c = a[0];//傳值,把對象中的屬性/數組中的數組項賦值給變量,這時變量C是基本數據類型,存儲在棧內存中;改變棧中的數據不會影響堆中的數據
alert(b);//1,2,3,4,5
alert(c);//1
//改變數值 
b[4] = 6;
c = 7;
alert(a[4]);//6
alert(a[0]);//1
複製代碼

從上面咱們能夠得知,當我改變b中的數據時,a中數據也發生了變化;可是當我改變c的數據值時,a卻沒有發生改變。

這就是傳值與傳址的區別。由於a是數組,屬於引用類型,因此它賦予給b的時候傳的是棧中的地址(至關於新建了一個不一樣名「指針」),而不是堆內存中的對象。而c僅僅是從a堆內存中獲取的一個數據值,並保存在棧中。因此b修改的時候,會根據地址回到a堆中修改,c則直接在棧中修改,而且不能指向a堆內存中。
複製代碼

相關文章
相關標籤/搜索