CSS 那麼多屬性,而且每個屬性都有多個值怎麼記?
新手表示很苦惱
/**2016.2.19更新,CSS書寫順序推薦(全部)**/
Nicholas C.Zakas (《JavaScript高級程序設計》的作者,NCZOnline - The official website of Nicholas C. Zakas)說過,要想全面理解和掌握JavaScript,關鍵在於弄清楚它的歷史、本質和局限性。對CSS同樣適用。
歷史
混沌未分天地亂,CSS的誕生就是為了終結當時由推動Web世界繁榮的首功之臣HTML引發的混亂局面。在1990~1993年Web世界還處於一片荒蕪的時候,HTML這個勤勞而艱難生存的族群帶著描述段落、標題、超鏈接等結構性內容(後來這些成員榮升HTML國的貴族,經過幾次戰亂並一直生活到現在)的技能給Web世界帶來了生機。而後 Mosaic(早期的一款瀏覽器)的出現讓文字和圖片可以一起顯示出來,也一夜之間讓Web威名遠揚,這裡充滿魔力與神奇。無數的站點冒了出來,無數的站點吸引無數的人,無數的人帶來無數的新功能,我要字體能變色,我要字體能加粗,各種樣式要求不斷增加。HTML為了滿足人們不斷膨脹的慾望和要求努力擴充技能樹,最後弄得自己苦不堪言,一大堆描述樣式的標籤(現在還有的&&等)搞得開發亂七八糟。
結構化標記語言就這樣變成了一坨一坨的字元串。
剛成立的Web世界聯合國W3C並沒有坐視不管,而是在積極的尋找與焦急的等待。終於他們找到了CSS。CSS在現在Web開發中可謂平淡無奇,寫CSS是很自然的事情因為它就屬於開發的一部分,但在當時卻是絕無僅有的。它最初由H?¥kon Wium Lie
於1994.10.10(他當時是Tim Berners-Lee在CERN的同事,Lee發明了萬維網)提出來,由Bert Bos建議,經過W3C的公開和內部討論最終在1996年底推出CSS1,並使之成為標準被推薦,很快瀏覽器廠商也爭相在自家產品中實現以佔領市場。這中間也並非一帆風順,比如網景公司就提交了一種新語言JSSS來實現樣式,但最終並沒有被接受(這種開發標準之爭一直存在,包括後來的JavaScript,以及現在開發中的很多新技術都是這樣)。
CSS接過了HTML手中的樣式表現接力棒,也開始了自己的傳奇之旅。
本質
CSS的本質可以分為宏觀與微觀兩方面。
宏觀上它的存在就是為了控制頁面的顯示樣式。包括布局,顏色,字體等。微觀上則是實現這種控制功能的各種屬性的定義和工作原理。
了解定義就能幹活,知道原理才能把活干好。
題主說屬性太多,其實CSS就是去控制樣式而已,網頁樣式是借鑒於傳統的報紙等印刷品的排版。你隨便在身邊找一份報紙或者雜誌的一頁,用CSS儘可能的還原出來。整體布局還原出來問題應該不大,但是具體到細節的時候可能會有很多問題,比如出來的效果總是跟想的不一樣。這個時候就該去看看單個屬性的工作原理,比如margin是用來控制外邊距的但是用%的時候它是怎麼計算的最終值呢?當發現出乎意料的時候就去Index查一下屬性的定義和值的計算方法。
常用基礎樣式:
Tips:
- 常用CSS屬性margin和padding的%取值是基於包含塊(離元素最近的塊級祖先元素)的寬,注意是寬。
- 行內元素相關的內容區、行內框、基線這幾個概念很重要。
- inline-block是,內部被解析為塊級元素,自身被解析為行內元素。
- background-image可以同時為一個元素設置多個背景圖配合background-position可以組合出神奇的效果。
- 浮動的元素會消除外邊距重合,浮動的元素會被解析為塊級元素。
- top,right,bottom,left,z-index這些屬性只有用在定位元素(除了position為static值)上才有效。
- overflow的值設置為scroll,在移動端可以做橫向滑動效果。
- 除了做表格不要用table布局。
- 選擇器都很簡單,只說一類。結構偽類選擇器,原理可以理解為先找到符合條件的元素後,向上找到其父元素然後驗證規則。
局限性
更新中...
番外篇
- CSS推薦書寫順序(完整版)
CSS屬性推薦書寫順序
無他, 但手熟爾。
【css常用屬性】
前面說了一點css基礎,相信看完後對CSS本身有一定的理解,這篇文章大概羅列出常用的CSS屬性,跟HTML常用的標籤差不多,基本是對這些屬性有一定的了解基本上CSS也算是入門了,本身CSS就是使用這些屬性對網頁內容的美化,所以認識CSS常用屬性是必要的!
我們也可以試著看一些css的基礎視頻,dw教程從基礎到入門這些資源你們自己可以利用一下
CSS字體屬性
字體大小:font-size: px/em/pt;(值使用數值即可)
字體樣式:font-style: oblique;(偏斜體) italic;(斜體) normal;(正常)
字體行高:line-height: normal;(正常) 單位:PX、PD、EM
字體粗細:font-weight: bold;(粗體) lighter;(細體) normal;(正常)
字體變體:font-variant: small-caps;(小型大寫字母) normal;(正常)
文字間距:letter-spacing: normal; 數值 pt/em/pt
文字對齊:text-align: justify;(兩端對齊) left;(左對齊) right;(右對齊) center;(居中)
文字縮進:text-indent: 數值 px;
詞間距:word-spacing: normal; 數值 px;
字體大小寫:text-transform: capitalize;(首字母大寫) uppercase;(大寫) lowercase;(小寫) none;(無)
字體修飾:text-decoration: underline;(下劃線) overline;(上劃線) line-through;(刪除線) blink;(閃爍)
字體:font-family:」Courier New」, Courier, monospace, 「Times New Roman」, Times, serif, Arial, Helvetica, sans-serif, Verdana
&
&
&
&
&
&
測試文字效果&
&
&
CSS背景屬性
背景顏色:background-color: #FFFFFF;
背景圖片:background-image: url();
背景圖片重複:background-repeat: no-repeat;
背景圖片滾動:background-attachment: fixed;(固定) scroll;(滾動)
背景圖片位置:background-position: left(水平) top(垂直);
簡寫方法: background:#000 url(..) repeat fixed left top;
&
&
&
&
&
&
&
例如上面這些的編寫的方法,是可以自己用最常用的軟體dw可以編寫的我們亦可以跟著Dw小入門照著葫蘆畫瓢自己好好練練,從而增強自己的認識區塊屬性
垂直對齊:vertical-align: baseline;(基線) sub;(下標) super;(下標) top; text-top; middle; bottom; text-bottom;
元素空格:white-space: pre;(保留) nowrap;(不換行)
顯示:display:block;(塊) inline;(內嵌) list-item;(列表項) run-in;(追加部分) compact;(緊湊) marker;(標記) table; inline-table; table-raw-group; table-header-group; table-footer-group; table-raw; table-column-group; table-column; table-cell; table-caption;(表格標題)
&
&
&
&
&
&
本例中的樣式表把段落元素設置為內聯元素。&
&
而 div 元素不會顯示出來!&
&div 元素的內容不會顯示出來!&
&
&
方框屬性
寬度:width: 數值 px;
高度:height: 數值 px;
外邊距:margin: 1px 1px 1px 1px; 上右下左 簡寫:marign: 1px;
內邊距:padding: 1px 1px 1px 1px; 上右下左 簡寫:padding:1px;
清除浮動:clear:left(左側不運行浮動)/right(右側不允許浮動)/both(左右不允許浮動)/inherit(繼承父元素)
&
&
&
&
&
&
本例中的樣式表把段落元素設置為內聯元素。&
&
而 div 元素不會顯示出來!&
&div 元素的內容不會顯示出來!&
&
&
邊框屬性
邊框樣式:border-style: dotted;(點線) dashed;(虛線) solid; double;(雙線) groove;(槽線) ridge;(脊狀) inset;(凹陷) outset;
邊框寬度:border-width: 數值 px;
邊框顏色:border-color:#fffff;
簡寫方法:border:width style color;
正文模板11,可在這輸入內容, - 96微信圖文排版,微信圖文編輯器,微信公眾號編輯器,微信編輯首選。
列表屬性
列表類型:list-style-type: disc;(圓點) circle;(圓圈) square;(方塊) decimal;(數字) lower-roman;(小羅碼數字) upper-roman; lower-alpha; upper-alpha;
列表位置:list-style-position: outside;(外) inside(內);
列表圖像:list-style-image: url(..);
&
&
&
&
&
&&
我是邊框內的內容&
&&
&
定位屬性
定位位置:Position: absolute; relative; static;
元素是否可見:visibility: inherit; visible; hidden;
內容溢出:overflow: visible; hidden; scroll; auto;
裁剪:clip: rect(12px,auto,12px,auto)
&
&
&
&
&
&
這是帶有絕對定位的標題&
&
通過絕對定位,元素可以放置到頁面上的任何位置。下面的標題距離頁面左側 100px,距離頁面頂部 150px。&
&
&
最後
屬性一般分為:背景屬性、邊框屬性、文本屬性、內外邊距屬性、內容生成屬性、尺寸屬性、定位屬性、表格屬性、列印屬性等,具體可以參考下面的手冊
更多資源;
http://weixin.qq.com/r/azrB2YbE6NuXrcK69295 (二維碼自動識別)
不用記呀,寫多了自然就記住了。就算記不住,有兩種方式幫你,第一是手冊,第二是瀏覽器開發者工具。
沒有什麼捷徑,就是記單詞,CSS 的屬性基本都是語義化的,單詞什麼意思,這個屬性就是用來做什麼的。
大多數屬性用著用著就記住了;稍微複雜一點的加一點刻意,也不難記住。重要的是使用。
有一個能幫你探索的工具也很有用,比如
一個熟練的前端,大部分屬性名和屬性值都是需要記住的。雖然可以藉助編輯器的提示,但你得先輸入一兩個字母才行。
CSS 也是基於英語的,其屬性名和大部分屬性值都有其含義。在系統的了解這些知識之後,應該會找到適合自己的記憶方式。舉個例子:border* 屬性。
屬性名有:
border
border-[上右下左] 或 border-[寬度 顏色 樣式]
border-[寬度 顏色 樣式]-[上右下左]
[上右下左] 又是一個常用的方向規則。
Emmit 之類的工具,雖然能夠減少輸入較長單詞的痛苦,但又是另一套需要記住的縮寫語法。學用bootstrap
學會之後
看bootstrap源碼
學會之後
自己寫適合自己的bootstrap
最後
用less把上面的都重做一邊。。
。
。
。
。
。
其實你一開始就上less也行
想起了CSS領域那個臭名昭著的垂直居中問題。
其實難記的不是單個的CSS屬性,而是多個屬性的組合。CSS每個屬性單獨拎出來都很好理解,難的是多個屬性,多個element之間的相互影響。
舉個例子,某個element的style是:float: left;
position: absolute;
display: block;
vertical-align: center;
那它最終的顯示效果到底是啥樣的呢,它對parent element, sibling element到底有啥影響呢,這些對新手來說不太容易搞明白。
我覺得,產生這些不必要複雜性的根本原因,是CSS屬性設計得太不『正交』了。記住常用的屬性和對應的值,像下邊這些(簡單舉些栗子):
position、display、font、background、border、animation、transform、transition
這些屬性和屬性值的常用寫法需要記住吧(其實多用幾遍就記住了,不用刻意去背)
然後就是多看幾遍手冊對所有屬性的用處有個印象,
只要你在想實現一種效果的時候記得「哎?這個好像在手冊里有說過」
然後就去翻手冊吧,經常用的話多翻幾遍就記住了
其他不常用的就讓IDE自動補全幫你吧
-小明如是說:)
菜比新手強答。
首先,有個好的IDE,WebStrom自動補齊好用到哭啊。。
其次用到哪搜到哪,多看別人的代碼。
全部去背誦的話好蠢啊,編程是理科不是文科
從來不記,用的時候網上查。如果你非要說上不了網怎麼辦,但是如果網都上不了了,那還要css幹啥?
高中數學渣渣,問老師怎麼看出解題思路的。
他說,做題多了,解題就成了本能。
開始不要依賴於任何帶自動提示的編輯器,虐自己幾次就記住了,其實歸一下類也不難記,比如盒模型的margin,padding,border等,定位的position常用的無非那幾種static,relative,absolute,很多都是表意很明確的了。
熟悉了之後你會發現有些屬性可以不用強制記住,關鍵問題在於你能掌握什麼時候該用什麼樣的屬性定義,記住這些屬性只是很小一方面,合適的運用才是關鍵。這些零碎的東西需要慢慢的總結
常用,就熟悉了~
下載一個sublime,然後都有自動提示插件的,實在不行用dw,可視化窗口編輯和創建css層疊樣式表
所以我才覺得CSS更接近於自然語言,可以借鑒背英語單詞的方法來學CSS,當然我指的是真學,不是應試,單純的死記硬背沒有意義,主要是語義要弄清楚,不能只追求語法的正確。
內容雖多,但是論功用是可以劃分出類別的,列個表格也就找到規律了。不過我要說的是,樓主問出這樣的問題,肯定是沒有通學css。你如果在學習的過程中,把書上的內容都動手來一遍,規律就體會到了,發現也就那麼回事,想用什麼的時候自然就知道了。再加上好用的編輯器做輔助,特殊的東西再查一查,知識本身並沒有那麼多的記憶量。
絕知此事要躬行。
感覺沒必要死記硬背,初學的時候多看多寫就能記住了。
有個簡單又好玩的方法,平常刷網站的時候,看見頁面里某個樣式很好看就打開瀏覽器的控制台,把裡面的樣式一個個選中 / 取消,次數多了就能記住哪些樣式是控制什麼的了,而且無形之中也能學會書寫規範。
(我才不會告訴你我以前就是這樣刷 b 站頁面的沒捷徑 實在記不住就改行 編程一個基本功就是記憶
一共才300多個http://meiert.com/en/indices/css-properties/
推薦閱讀:
※Google+ 相冊中的圖片自動無縫對齊是怎麼做到的?
※響應式設計怎麼讓圖片自適應?
※如何看待 CSS 中 BEM 的命名方式?