■position

・要素の配置を指定するプロパティで、初期値はstatic
■種類-----------------------------------
【1】static(初期値)…positionプロパティを解除するのに利用

   位置指定不可・重なり順指定不可・要素の高さ保持 

【2】absolute

   親要素を基準に、絶対配置を指定
【3】relative

   現在位置を基準に、相対位置を指定
   単体で使用せず、position: absolute; とセットで使うことが多い
【4】fixed

   要素は浮いたような状態になり画面を基準に要素位置を固定
【5】sticky

   親要素を用意して、追従する範囲を指定

   (スクロールした際に要素を粘着させ、固定表示)

-----------------------------------

■z-indexプロパティ

 数字が大きいほど前、小さいほど後ろに配置

 

【2】position: absolute;
 要素の絶対配置を指定

 親要素にposition: relative;子要素にposition: absolute; をセットで適用すると、その子要素は、浮いたような状態になる

 親要素にposition: relative;に適用しないと画面左上が起点になる

【3】position:relative;
 相対位置を基準に位置を指定

 この場合の相対位置とは、本来その要素が表示される位置を基準とした位置
①要素の高さを維持したまま配置される。ゆえに下にある要素が詰まることはない
③position: absolute; とセットで使うことが多い
②z-indexを使用して要素の重なり順を指定 

 

■基準位置

鉛筆absolute単体       鳥親要素にposition: relative; を適用

 鉛筆top: 基準の上からの距離    鳥親要素基準の上からの距離
 鉛筆bottom: 基準の下からの距離  鳥親要素基準の下からの距離
 鉛筆left: 基準の左からの距離    鳥親要素基準の左からの距離
 鉛筆right: 基準の右からの距離親  鳥親要素基準の右からの距離 


■position のrelativeとabsoluteが効かない原因でよくあるケース

①親要素にposition: relative; を適用していない
②top, left, bottom, rightなど位置の指定を間違えている
③親要素にoverflow: hidden; を適用している

 親要素にposition: relative;  とoverflow: hidden; をいっしょに適用している場合、その子要素が親要素の範囲外に配置されていると、overflow: hidden;によって子要素が非表示になる
④z-indexが負けている
⑤要素に高さやpaddingを指定していない
relativeを適用した要素にheightやpaddingを適用していない状態で、配置したい要素にabsoluteを適用すると、親要素は高さがなくなります。
これは、親要素の高さが子要素の高さに依存していて、absoluteを適用することで子要素が親要素から独立してしまうためです。