有沒有人覺得web排版系統,設計得非常非常爛?

一個搞後端的人,由於加入創業公司,不得不搞搞前端。發現css設計得非常爛,看起來非常合理的排版需求,卻需要使用各種trick的方法來實現。是由於排版這項任務本身難度大?還是w3c這些標準太爛了。望專業人士分析一下CSS的設計後面的動機,或則從其它的角度對CSS的設計進行一下評價。


排版和布局是兩個不同的東西。

布局指的是,比如你有多個大塊的東西,想要按照指定方式排布。

排版指的是,比如你有一些段落,段落中有不同的字體,不同字型大小,按照不同基線對齊、折行、斷詞,並且合理處理溢出的部分。

瀏覽器中的排版可以算是非常強的,但是布局相對比較弱。

比方說,在Java桌面端開發的時候,有一個BorderLayout,東西南北中,很典型的應用布局,每一塊都貼邊,只有中間一塊工作區隨著窗口的大小而變化,在flex-box相關特性出來之前,是不太好辦的。

從Web之外的領域轉到Web,一般都會被界面排布搞得很頭疼,因為規則太多了,需要花點時間學習。傳統桌面開發中的布局,一般不需要學習就可以上手,但Web裡面不行,因為它要考慮的東西太多了。

比如說,桌面軟體的布局中,很少會出現回溯,也就是下級元素的排布又反過來會影響到上級的,但Web裡面這情況還是比較常見的。桌面軟體一般是從外往內定規則,而且很少會出現布局固定之後,還存在隨著內容自動增長的情況,所以不管是內部實現,還是開發人員用起來,都會簡單些。

推薦你看一下這個地址,大致能有一個感受,到底是怎麼樣用的:

Learn CSS Layout


實際上 HTML/CSS 基本上已經做到能做到的極致了,瀏覽器的排版引擎也非常強大(你能想像 indesign 至今不支持東亞文字和中東文字同行同段排版嗎?)。我個人感覺唯一缺的就是小尺度排版的一些特性。

布局的話你應該嘗試 flexbox。grid 其實解決的更徹底一點但是似乎支持的不多?


CSS display/layout 有很多種啊,如果你用錯誤的方法去做,當然覺得困難了。不如舉個例子?


要先自己弄懂了,再說爛,要是從這種邏輯我覺得php很爛,java很爛,我不懂得都很爛

再來說說css都問題,任何一種東西設計之初不可能就是完美的,今天來看,css在做今天的布局確實有不好用的地方,所以才會有css3及以上版本,css的問題不在於設計的多爛,而在於兼容性,css必須向後兼容,而且很多新東西也不能用,囧,


寫什麼後端這麼厲害,連個css都得上來批鬥一番。明明搞的後端,到最後為什麼又沒得搞後端要搞前端呢?多從自己身上找答案。


後端邏輯編程,和css是完全兩套東西。~~

後者是需要你去描述一個對象的信息,然後瀏覽器去讀取。

那麼問題來了,如果描述的語言過於簡單,那麼東西的多樣性就被限定。

說回布局,說真的很多後台同事所謂的布局,連自己需要什麼的基礎布局都搞不清,那麼後來的東西自然需要騙。

搭積木的事情,怎麼能說爛。

css設計的動機就是用人類已有的板式思維去描述一個頁面,但隨從頁面複雜度,現實版面的思維已經不足以描述更加多變和複雜的邏輯頁面,然後css2,css3出現。

這個時候複雜關係成幾何倍數增加,如果你不能理解清楚其中的任何一層關係,那麼頁面的雪崩在所難免。所以不聰明的做法就是去trick,當你trick了一層,那麼之後就會要補救其中的無數層~~~然後更大的雪崩出現了。。。。。

然後比如,知乎的發布回答按鈕,

也許在你眼中他就是藍色按鈕,然而他是……

寬76px,高31px,上下4px內邊距,左右10px內邊距,左邊有14px外邊據;

內部字體14px大小,23.8px字間距高度,白色字色,"Helvetica Neue", Helvetica, Arial, sans-serif『字體;

藍色從上rgb(29, 127, 226)至下rgb(8, 101, 194))漸變;

rgba(255, 255, 255, 0.2)0px 1px 0px 0px內陰影;

四邊有rgb(13, 110, 184)色,1px寬度,實線;

3px圓角的按鈕~;

然後這麼多描述設計師還覺得描述的有點差強人意,box的陰影表現不好~再加box-shadow:rgba(0, 0, 0, 0.2) 0px 1px 0px 0px;

然後,按鈕是 inline-block,內聯塊級元素,對於父級他是內聯元素,所以文本向右對齊可以感受到,然後又是塊級,那麼他內部的文字會被邊距撐開。

他和父級的關係,和文字的關係,自然構成了結構。

你說復不複雜,當然複雜的要死,你說有什麼辦法?你去用別人做好的框架呀~~~


首要要問的是不是你的技術太爛導致的


如果說css設計的爛,那樓主在同類框架中,能說出比css好的嗎?WPF的Style可以嗎?

&