1. 程式人生 > >小結在前端頁面佈局開發容易遇到的幾個CSS問題

小結在前端頁面佈局開發容易遇到的幾個CSS問題

本文僅僅是針對於專案經驗不足,在實際進行前端頁面開發的時候,特別容易遇到的幾個問題。

問題一、box-sizing屬性

這是關於盒模型的問題,因為在某些情況下,需要對某些元素進行box-sizing的設定,剛開始我並沒有想到是這個問題,直到在後續需要根據視覺設計稿調樣式的時候,才發現意識可以用border-sizing佈局。

我們知道,通常在計算一個元素的寬高的時候:值 = width/height + padding+margin+border的,這是正常的盒模型情況下,還有一種情況是:值 = width/height ,該元素設定的padding\margin\border都是已經是在設定的寬高裡面包含了,這就是另一種所謂的IE盒模型,之所以有這些區別就是通過box-sizing這個屬性進行設定的。

box-sizing: border-box | content-box | inherit

說明:

content-box:標準盒模型,CSS定義的寬高只包含content的寬高。

border-box:IE盒模型,CSS定義的寬高包括了content,padding和border。

inherit:繼承 父元素 box-sizing屬性的值

問題二、z-index屬性

在進行一個專案頁面樣式的時候,關於層疊的展示用到時非常多的,有時候程式碼並沒有報錯,但是有些功能可能就是實現不了,最常見的可能就是由於元素的層疊問題,導致一個點選事件被覆蓋了從而不能正常實現點選事件。如果是專案經驗不足的話,找bug是還是蠻痛苦的,所以我覺得有必要重視z-index這個屬性。

含義: z-index 屬性指定了一個具有定位屬性的元素及其子代元素的層疊順序。當元素之間重疊的時候,z-order 決定哪一個元素覆蓋在其餘元素的上方顯示。

值 : 是數字,可以是正數或者負數,通常來說 z-index 值較大的元素會覆蓋較小的一個。

實現: 對於一個已經定位的元素(即position屬性值是非static的元素),z-index 屬性才能指定數值。

問題三、塊級元素和內聯元素

塊級元素和內聯元素也是在實際專案中遇到非常多的,也比較容易就遇到一些坑,比如如果不注意的話,對一個內聯元素設定了寬或者高,但是你發現並沒有起作用,這就需要深入理解一下塊級元素和行內元素了。

1、常見的內聯元素和塊級元素

行內元素:a, img, span, button, input, label, select, textarea等

塊級元素:div, p, h1-h6, table, ul, ol, pre等

2、塊元素的特點:

  • 總是在新行上開始;
  • 高度、行高以及外邊距和內邊距都可控制;
  • 寬度預設是它容器的100%,除非設定一個寬度;
  • 可以容納內聯元素和其他塊元素。

3、內聯元素的特點:

  • 和其他元素都在同一行;
  • 高,行高及外邊距和內邊距不可改變;
  • 寬度就是它的文字和圖片的寬度,不可改變;
  • 內聯元素只能容納文字或者其他內聯元素。

4、塊級元素和內聯元素之間的轉換:

方法1、 display

塊元素預設display:block;行內非替換元素預設為display:inline;行內替換元素預設為display:inline-block;

  • display:none; 不顯示該元素,也不會保留該元素原先佔有的文件流位置。
  • display:block; 轉換為塊級元素。
  • display:inline; 轉換為行內元素。
  • display:inline-block; 轉換為行內塊級元素。

方法2、 float

當把行內元素設定完float:left/right後,該行內元素的display屬性會被賦予block值,且擁有浮動特性。行內元素去除了之間的莫名空白。

方法3、 position

當為行內元素進行定位時,position:absolute; 與 position:fixed; 都會使得原先的行內元素變為塊級元素。

問題還有很多,只是說了這3個遇到比較頻繁和有特點的,後續再慢慢補充吧。

每天總結一點點,每天學習一點點,每天進步一點多 (〃’▽’〃)