1. 程式人生 > >CSS中display對佈局的影響以及元素display的預設值

CSS中display對佈局的影響以及元素display的預設值

看到前端越來越多的mvc框架出現,之前偶爾還看到有OOCSS(面向物件的CSS程式設計)的文章。
所以可以這樣理解,前端HTML頁面的所有元素(tag),也都可以理解物件。


每個物件有自身的屬性,以及每個物件與其他物件的關係。關係中最重要也是本文討論的是顯示時候的位置關係。
每個HTML物件除了與其他HTML物件(標籤)有關係之外,還有物件在顯示時與瀏覽器或者windows物件的關係。
位置關係也就是頁面的佈局。如果能將合適的物件根據需要放在合適的位置,並與其他物件和睦相處,介面就可以按照設計者的想法實現了。

《下面內容摘自網路,幫助理解和記錄》

根據CSS規範的規定,每一個網頁元素都有一個display屬性,用於確定該元素的型別,每一個元素都有預設的display屬性值。

比如div元素,它的預設display屬性值為“block”,成為“塊級”元素(block-level);而span元素的預設display屬性值為“inline”,稱為“行內”元素。

div這樣的塊級元素,就會自動佔據一定矩形空間,可以通過設定高度、寬度、內外邊距等屬性,來調整的這個矩形的樣子;
與之相反,像“span”、“a”這樣的行內元素,則沒有自己的獨立空間,它是依附於其他塊級元素存在的,因此,對行內元素設定高度、寬度、內外邊距等屬性,都是無效的。



塊元素一般都從新行開始,它可以容納內聯元素和其他塊元素,常見塊元素是段落標籤'P"。“form"這個塊元素比較特殊,它只能用來容納其他塊元素。   
  
如果沒有css的作用,塊元素會順序以每次另起一行的方式一直往下排。而有了css以後,就可以改變這種html的預設佈局模式,把塊元素擺放到想要的位置上去。而不是每次都另起一行。


需要指出的是,table標籤也是塊元素的一種,table based layout和css based layout從一般使用者(不包括視力障礙者、盲人等)的角度來看這兩種佈局,除了頁面載入速度的差別外,沒有其他的差別。但是如果普通使用者不經意點了 檢視頁面原始碼按鈕後,兩者所表現出來的差異就非常大了。

基於良好重構理念設計的css佈局頁面原始碼,至少也能讓沒有web開發經驗的普通使用者把內容快速的讀懂。從這個角度來說,css layout code應該有更好的美學體驗吧。   

  
可以把塊容器元素div想象成一個個box,或者如果你玩過剪貼文載的話,那就更加容易理解了。我們先把需要的文章從各種報紙、雜誌總剪 下來。每塊剪下來的內容就是一個block。然後我們把這些紙塊按照自己的排版意圖,用膠水重新貼到一張空白的新紙上。這樣就形成了你自己獨特的文摘快報 了。作為一種技術的延伸,網頁佈局設計也遵循了同樣的模式。.   
  
內聯元素(inline element)一般都是基於語義級(semantic)的基本元素。內聯元素只能容納文字或者其他內聯元素,常見內聯元素 “a”。   
  
塊元素(block element)和內聯元素(inline element)都是html規範中的概念。塊元素和內聯元素的基本差異是塊元素一般都從新行開始。而當加入了css控制以後,塊元素和內聯元素的這種屬 性差異就不成為差異了。比如,我們完全可以把內聯元素cite加上display:block這樣的屬性,讓他也有每次都從新行開始的屬性。   
  
可變元素的基本概念就是他需要根據上下文關係確定該元素是塊元素或者內聯元素。可變元素還是屬於上述兩種元素類別,一旦上下文關係確定了他的類別,他就要遵循塊元素或者內聯元素的規則限制。大致的元素分類見全文。   
  
關於inline element的中文叫法,有多種內聯元素、內嵌元素、行內元素、直進式元素。基本上沒有統一的翻譯,愛怎麼叫怎麼叫吧。另外提到內聯元素,我們會想到有個display的屬性是display:inline;這個屬效能夠修復著名的IE雙倍浮動邊界問題。   
  

塊元素(block element)   

  
  * address - 地址   
  * blockquote - 塊引用   
  * center - 舉中對齊塊   
  * dir - 目錄列表   
  * div - 常用塊級容易,也是css layout的主要標籤   
  * dl - 定義列表   
  * fieldset - form控制組   
  * form - 互動表單   
  * h1 - 大標題   
  * h2 - 副標題   
  * h3 - 3級標題   
  * h4 - 4級標題   
  * h5 - 5級標題   
  * h6 - 6級標題   
  * hr - 水平分隔線   
  * isindex - input prompt   
  * menu - 選單列表   
  * noframes - frames可選內容,(對於不支援frame的瀏覽器顯示此區塊內容   
  * noscript - 可選指令碼內容(對於不支援script的瀏覽器顯示此內容)   
  * ol - 排序表單   
  * p - 段落   
  * pre - 格式化文字   
  * table - 表格   
  * ul - 非排序列表   
  
內聯元素(inline element)   
  
  * a - 錨點   
  * abbr - 縮寫   
  * acronym - 首字   
  * b - 粗體(不推薦)   
  * bdo - bidi override   
  * big - 大字型   
  * br - 換行   
  * cite - 引用   
  * code - 計算機程式碼(在引用原始碼的時候需要)   
  * dfn - 定義欄位   
  * em - 強調   
  * font - 字型設定(不推薦)   
  * i - 斜體   
  * img - 圖片   
  * input - 輸入框   
  * kbd - 定義鍵盤文字   
  * label - 表格標籤   
  * q - 短引用   
  * s - 中劃線(不推薦)   
  * samp - 定義範例計算機程式碼   
  * select - 專案選擇   
  * small - 小字型文字   
  * span - 常用內聯容器,定義文字內區塊   
  * strike - 中劃線   
  * strong - 粗體強調   
  * sub - 下標   
  * sup - 上標   
  * textarea - 多行文字輸入框   
  * tt - 電傳文字   
  * u - 下劃線   
  * var - 定義變數   
  
可變元素   
  
  可變元素為根據上下文語境決定該元素為塊元素或者內聯元素。   
  * applet - java applet   
  * button - 按鈕   
  * del - 刪除文字   
  * iframe - inline frame   
  * ins - 插入的文字   
  * map - 圖片區塊(map)   
  * object - object物件   

  * script - 客戶端指令碼