1、在網頁設計中,margin值和padding為負數是否合理?
margin使用負數比較常見,使用負數是為了讓標簽向某個方位縮進,這樣就不用加position屬性來定位了,例如多個div使用負數可以達到層疊的效果,有點類似多張白紙疊在一起的感覺
而padding使用負數的話,一般頁面效果會更差,至少我還沒想到怎樣的頁面布局需要用到padding的負數值
2、CSS屬性含義。網頁設計問題
word-spacing 單詞的間距
letter-spacing 字體間距
backround-attachment 固定背景
margin-top 上外邊距
boder-right-style 右邊框樣式
table{margin:20px 10 px}
text-indent 段落縮進,一般是專文章開頭的空格
font-variant 字體變數小屬寫變大寫
background-repeat 背景重復屬性
border-bottom-width 下邊框的寬度
visibility 設置是否可見
padding-left 左內邊距
list-style 小點的樣式,比如li前面的那個點,使用list-style:none,就取消那個點了
list-style-image 說白了就是上面那個類似,只是那個點這里可以用圖片代替
3、為什麼網頁設計要使用柵格化
研究網頁柵格系統前,來看一組數據:
網站 首頁頁面寬度 px
Yahoo! 950
淘寶 950
MySpace 960
新浪 950
網易 960
Live Search 958
搜狐 950
優酷 960
AOL 960
上面列舉的都是Alexa全球排名前100的站點,它們的首頁寬度為950px/960px. 除了微軟的Live Search, 這些站點有個共同特點:頁面結構較復雜,都可以認為是門戶型網站。
再來看看Google, YouTube, Facebook, Flickr!, eBay等知名站點,它們的首頁寬度沒什麼固定規律,共同的特點是:功能專一,頁面結構相對簡單。
根據上面的簡單分析可以認為:當搭建頁面結構復雜的門戶型網站時,開發工程師們不約而同地都選擇將頁面寬度定為950px/960px.
這是一件很有趣的事情,為什麼要選擇這個寬度呢?這個寬度值究竟有什麼魔力?
神奇的960
設計師們對蘋果情有獨衷。在 1024 x 768 的解析度下,打開Firefox:
自然狀態下,Firefox窗體的大小約為 974 x 650. 減掉左右兩邊7px的邊框,網頁的實際大小為上圖中的紅色部分,高寬為 960 x 650.
有趣的960就這樣出現了。是的,可以認為一切就這么簡單。柵格系統最早出現在平面設計領域,設計師們愛用蘋果,蘋果下瀏覽器的默認寬度為960px, 於是960就這么「自然」地出現了。
數字背後的奧妙
上面的「自然」出現,細究自然是不讓人信服的。蘋果系統的設計者們在沒有喝醉酒的情況下選擇了960,而不是其它什麼1000之類的整數,自然另有奧妙。
科學界有很多問題都可以歸結到數學問題上,我們也從數學著手:
960可以分解為2的6次方乘以3和5, 這使得960可以分割成以下寬度的整數倍:
2, 3, 4, 5, 6, 8, 10, 12, 15, 16, 20, 24, 30, 32, 40,
48, 60, 64, 80, 96, 120, 160, 192, 240, 320, 480
共26種(26 = 7 * 2 * 2 - 2, 減去2是去掉1和960自身),我們標記為:
N(960) = N(2^6 * 3 * 5) = 26
根據上面的演算法,可以得到:
N(360) = N(2^3 * 3^2 * 5) = 22
N(480) = N(2^5 * 3 * 5) = 22
N(720) = N(2^4 * 3^2 * 5) = 28
N(750) = N(2 * 3 * 5^3) = 14
N(800) = N(2^5 * 5^2) = 16
N(960) = N(2^6 * 3 * 5) = 26
N(1000) = N(2^3 * 5^3) = 14
N(1024) = N(2^10) = 9
N(1440) = N(2^6 * 3^2 * 5) = 34
N(1920) = N(2^7 * 3 * 5) = 30
根據直覺(嚴格證明也不難,不過還是留給數學系的學生去證明吧),我們得到一個有趣的結論:
要使得N(width)最大,width的取值有兩個系列:
A系列: …, 320, 720, 1440, …
B系列: …, 480, 960, 1920, …
N越大,可組合的寬度值就越多。對柵格系統來說,這意味著越靈活!
目前絕大多數顯示器都支持 1024 x 768 及其以上解析度。為了有效的利用屏幕寬度同時保證柵格的靈活度,可以看出960是非常合適的。這樣,在目前主流顯示器下,960就成為網頁柵格系統中的最佳寬度了。(也許不久的將來,將會流行1440)首先澄清一個應用場景問題。研究(1)中指出,對於結構復雜的網站,不少設計師們喜歡採用960固定寬度布局。但要注意的是,960並不是萬能鑰匙,大部分網站沒有也不需要柵格系統。Amazon採用的是寬度自適應布局,最大限度的呈現信息。Google更是簡簡單單,主題部分就一個列表。eBay的頁面非常簡潔,商品頁面寬度自適應,信息自然流暢,噪音少,購物很踏實。類似的站點還有很多,對於這些站點來說,寬度自適應布局更受青睞。
有個很有意思的網站是Yahoo!, 看起來是固定寬度布局,實際上在CSS中只要去掉一行,就能搖身一變自適應寬度了:
以下為引用的內容:
#page { width: 70em;}
為什麼Yahoo!最後選擇了定寬布局呢?這很可能是因為定寬布局比寬度自適應布局更容易控制。對於結構復雜的網站來說,可維護性和可擴展性非常重要。Yahoo!是以信息展示為主的門戶型網站,960的寬度對於信息的閱讀比較友善(Joe Clark寫了一篇屏幕閱讀時有關行長的有趣文章)。種種因素使得Yahoo!最後採用了定寬布局(Tommy Olsson總結了每種布局設計的優缺點)。
這里將只關註定寬布局,適用的場景是搭建復雜的門戶型網站。對於寬度自適應布局和相應的柵格系統,暫不討論(根據實現的技術手段不同,寬度自適應布局又分為流體布局和彈性布局。我個人蠻喜歡彈性布局,以後有時間再研究)。
好了,已經將范圍縮小到定寬布局的網頁柵格系統,那我們開始吧。
並不遙遠的750
還記得800×600的顯示器不?雖然才時隔幾年,感覺卻好像是上個世紀的事了。Mark Boulton做了最早的探索:
將750分割成均等的6份,這就形成了柵格系統,稍加組合劃分就形成了兩欄布局和三欄布局。Mark Boulton還研究了Gutter(垂直欄之間的間隙)對柵格的影響,有興趣的可以閱讀原文,或者跟著我往下看吧,下面將詳細闡述。
幾個術語和一個公式
一個標準的柵格系統,包括以下部分:
將Flowline的總寬度標記為W, Column的寬度標記為c, Gutter寬度標記為g, Margin的寬度標記為m, Column的個數標記為N, 我們可以得到以下公式:
W = c * N + g * (N - 1) + 2 * m
一般來說,Gutter的寬度是Margin的兩倍,上面的公式可以簡化為:
W = c * N + g * (N - 1) + g = (c + g) * N
將c+g標記為C, 公式變得非常簡單:
W = C * N
上面的公式就是柵格系統的基礎,很簡單吧。
950的來歷
具體應用時,Margin其實是一個空白邊,從視覺上看並不屬於總寬度。不少柵格設計里習慣性地設定Gutter為10px, 這樣Margin就是5px. 當W為960,分割成6列時,柵格如下圖:
上圖的處理是左右Margin各為5px. 也可以將Margin集中放在一邊,比如右邊:
無論Margin放在何處(這隻影響技術實現,不影響設計),我們真正要關注的是去除Margin之後的部分:
這就是我們要真正關注的950!將W的含義變為去除Margin的總寬度,公式變化為:
W = N * C - g
將上面的公式實例化一下:
950 = 12 * 80 - 10
950 = 16 * 60 - 10
950 = 24 * 40 - 10
這就形成了960蛋糕的三種常見切法。
12 x 80
16 x 60
24 x 40
上面三種切法,N越大,靈活度越高。可以根據網頁的實際復雜度來選用對應的切法。在960 Grid System首頁中,展示了12 x 80的應用:
我們來看下 研究(1)中開頭列舉的網站的柵格應用情況。
Yahoo!是很標準的 24 x 40 柵格:
淘寶網目前只有商城上部分使用了柵格系統(大的兩欄布局遵守了 24 x 40 的柵格化,主體部分使用的另一套740的柵格劃分):
網易很不錯,採用的是 16 x 60 的柵格系統:
研究(1)中的其它站點都沒有真正嚴格地採用柵格系統。
柵格系統的優勢
上面的「發現」是讓人有點沮喪的。目前嚴格採用柵格系統的站點非常少,為什麼我們還要努力的讓網頁柵格化呢?
柵格系統具有以下優勢:
能大大提高網頁的規范性。在柵格系統下,頁面中所有組件的尺寸都是有規律的。這對於大型網站的開發和維護來說,能節約不少成本。
基於柵格進行設計,可以讓整個網站各個頁面的布局保持一致。這能增加頁面的相似度,提升用戶體驗。
對於設計師們來說,靈活地運用柵格系統,能做出很多優秀和獨特的設計。(詳見《超越CSS》一書)
對於大型網站來說,我相信柵格化將是一種潮流和趨勢。
下面討論柵格系統中的黃金分割。
黃金分割
黃金分割可以歸結為數學問題:對於長度為1的線段,將其分成兩部分 x 和 1 - x, 使得:
x / 1 = (1 - x) / x
化為簡單的二次方程:
x^2 + x - 1 = 0
正數解為:
x = (sqrt(5) - 1) / 2 ~= 0.618
這就是黃金分割。這個比例不僅僅出現在諸如繪畫、雕塑、音樂、建築等藝術領域,在管理、工程設計等方面也有著不可忽視的作用。 (這是個自然界的魔數,類似的還有真空光速、普朗克常數、精細結構等等,感興趣的Google吧)
在平面設計領域,黃金分割點被廣泛採用。比如下面這種圖:
數一數上面有多少黃金分割?
對於960柵格,實際寬度是950. 兩欄布局時,黃金分割為:
對於 24 x 40 的情景,最接近黃金分割的兩欄布局是 350 : 590, 欄數比例為 9 : 15. 但實際使用時,因為窄欄經常用來做導航或放輔助信息,並不需要350px這么寬。因此實際情況下經常被採用的布局是:
上面講的都是寬度方向上的柵格化,下面我們看看高度方向上如何應用。
高度方向上的柵格
還記得研究(1)中那張紅紅的很刺眼的圖嗎?注意高度值560也是很神奇的。
N(560) = N(2^4 * 5 * 7) = 18
560 / 960 ~= 0.583
N(560)比較大,同時可以讓高寬比接近黃金分割。針對560, 我們採用 14 x 40 柵格:
這樣,我們就在寬度和高度兩個方向上都實現了柵格化。
淘寶的首頁目前尚未嚴格遵守柵格系統,如果重構的話,寬度方向可以考慮採用下面的柵格布局(只考慮頁面主體部分,忽略高度的比例):
(圖1)
紛亂的高度世界我們來看下圖1左上角。左上角部分目前的寬度為256px, 重構的話可以將寬度縮小到230px以符合柵格(不可避免的要調整內容,比如人氣寶貝中將只能放下3張圖片)。來仔細看下高度方向:
(圖2)
高度方向的布局是:90 : 117 : 100, 第一個間隔是8, 總高度為325. 很明顯,高度方向沒有任何柵格化的跡象。實際上,即便是嚴格遵守柵格系統的Yahoo!首頁,高度方向上也沒有嚴格柵格化。
這究竟是為何?
一切皆有可能我們縮小關注點:
(圖3)
上圖中,圖像的大小是70 x 70, 剛好是24列960柵格系統兩列的寬度。對於右邊的文字,採取了如下樣式:font-size: 12px;line-height: 150%; /* 12 x 150% = 18px */
中文字體是宋體,line-height的計算值是18px. 注意圖3中文字部分可視區域的高度為65, 上下各有4px和1px的間隙。為什麼會產生這么奇怪的間隙呢?我們來看下圖:
(圖4)
從上圖中我們可以得知,12px的宋體中文字,實際高度只有11px. line-height減去11多出來的高度,則「均勻」分布在上下間隙中(如果多出來的高度為偶數,則上下均分;為奇數時,上面比下面多1px)。這樣,對於70px的高度來說,要布局4行文字時,假設行高多出來的上半部分為x, 下半部分為y, 在最理想的情況下,應該滿足以下公式:11 * 4 + 4 * x + 3 * y = 70x = y 或 x = y + 1
不難推出,x最理想的整數解為4. 從而line-height為 4 + 11 + 3 = 18. 因此:
對於24列960柵格系統來說,如果要在高度方向上實現柵格,font-size為12px時,line-height的最佳取值是18px(150%).
追求完美點話,還可以將文字部分margin-top: -1px, 使得65上下的間隙為3和2.
至此,我們可以初步判斷:
高度方向上是有可能嚴格柵格化的。一切皆有可能!
然而,現實總那麼殘酷
(圖5)
上圖中的標題高度為22, 這在24列960柵格系統中是無法對齊的。而且總高度為100, 在24列960柵格系統中也不存在(110才可以)。或許高度方向上我們可以細化行寬為20, 但依舊沒法解決上面兩個問題(22是明顯不能解決的,而對於100px的高度,也無法通過細化行寬來解決。可選高度永遠是10的奇數倍,如果進一步細化,小於10後,會變得非常繁瑣,沒什麼實際應用價值)寬度世界裡會好些嗎
(圖6)
上面是Yahoo!首頁上的兩個小模塊,我都不想去標注模塊裡面的布局寬度了(因為一點都不符合24列960柵格系統)。寬度世界裡,和高度世界一樣充滿希望但現實卻殘酷無比。銀彈是不存在的柵格系統是美好的。但如果我們一味地追求將所有設計都柵格化(必須承認我曾有這個幻想),則立刻會陷入地獄一般的黑暗中。這篇文章中的艱難嘗試(我分析了20多個小模塊),讓我突然醒悟到一個粒度問題:任何設計都有適用范圍,超出最佳適用范圍,強行使用只會帶來無盡的煩惱。對於柵格系統(這里指所有柵格系統,包括多種柵格系統混合使用的情景)來說,我覺得以下場景非常適合:
頁面的總體寬度布局,比如兩欄、三欄等布局
一些固定區塊的尺寸,比如廣告圖片的尺寸
區塊之間的間距,可以參考柵格系統的槽寬(Gutter)
一些可以柵格化的小區域,比如圖3中的例子,暗合柵格往往能簡化布局上的考慮
除了上面這些應用場景,強行使用柵格系統,往往會束手束腳,適得其反。這篇文章的目的,就是嘗試用最啰嗦最費神貌似很科學實際很無聊的分析來指出柵格系統應用時的粒度問題。在粒度問題上達成一致後,下一篇中我們將討論柵格系統的技術實現,最後一篇則討論柵格系統的壓軸好戲:模塊化開發。
前三篇文章中,明確了柵格系統的設計細節和適用范圍。這一篇將集中討論960柵格系統的技術實現。
Blueprint的實現Blueprint是一個完整的CSS框架,柵格系統是它的一部分功能。我們來看demo頁面:
以上三欄布局的代碼為:<style type="text/css"> .container { margin: 0 auto; width: 950px } .span-8 { float: left; margin-right: 10px } div.last { margin-right: 0 } hr { clear: both; height: 0; border: none }</style><div class="container"> <div class="span-8"></div> <div class="span-8"></div> <div class="span-8 last"></div> <hr /></div>
上面是基本功能,Blueprint還支持append-n, prepend-m, border等「高級」功能,這些就不細說了
4、網頁設計CSS解釋
光說解釋,但不來知道解釋哪些部源分?我就將我覺得該解釋的說說吧。
以"#"開頭的成為id選擇器,在程序中用id="id名稱"調用;以"."開頭的成為類別選擇器,在程序中使用class="類別名稱"調用;二者實現效果一樣,只是在不同情況下按需選擇。此外還有標記選擇器和行內樣式兩種css樣式。
常用選項解釋:padding表示內邊距;margin表示外邊距;float表示浮動屬性(設置該屬性後可實現圖文混排);background-image表示背景圖片;background-repeat表示是否允許背景重復;border表示邊框;text-align表示文本水平居中顯示。
padding:10px 0px 0px 0px;從上開始表示順時針內邊距分別為10px,0px,0px,0px。margin和border的用法與padding類似,可以類推;
border-bottom:1px solid #CAEFC4表示下邊框為1px實線顏色為#CAEFC4。其他各邊以此類推。
差不多了吧,呵呵,祝你好運!
5、html css 網頁製作 給一個div設置了margin:0 auto 之後再設置一個 margin-bottom:10px 10px會生效嗎
會,css的運行順序是從上到下,所以先寫:
margin: 0 auto;然後再設置其
margin-bottom:10px;10px是會生效的
6、網頁設計中CSS樣式里設定margin:0 20px 30% 0;其中30%是相對於什麼?是個什麼概念?
margin是用來設定該元素與相鄰元素直接的距離。
margin:0
20px
30%
0對應的是與上,右,下,左四邊相鄰元素的距離。
30%指下邊距為其父元素的寬度的30%
補充:
1.如果margin只有三個值,按照值的順序為margin:top
right
bottom;
缺少了left,根據原則,則left的值有right來代替。
margin:10px
20px
30px;就等於margin:10px
20px
30px
20px;
2.如果margin只有兩個值,按照值的順序為margin:top
right;
缺少了bottom和left,根據原則left的值由right來代替,bottm的值由top來代替。
margin:10px
20px;就等於margin:10px
20px
10px
20px;
3.如果margin只有一個值,按照值的順序為margin:top;
缺少了bottom、left和right,根據原則left的值由right來代替,bottom的值由top來代替,right的值右top來代替,也就是說left的值也由top來代替。
margin:10px;就等於margin:10px
10px
10px
10px;
7、網頁設計布局中為什麼實用margin:0px auto; 在IE下會不居中?都有哪些原因會造成這個問題???
如果 谷歌 火狐 可以居中 那麼 你的IE 版本 是IE5 才沒辦法居中 現在 誰還用IE5 - -
如果不是 請上代碼 幫你看看
8、製作微信網頁時 還能用margin定義邊距嗎
可以用margin,但是不能用絕對的像素,要用百分比
9、網頁設計 改變盒子的外補白用margin屬性,改變盒子的內補白用__屬性
padding屬性。