有沒有人覺得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可以嗎?
&
對於自己不熟悉的領域,不僅不謙虛,還妄加評論,真是夠可以了。
我跟題主一樣都是擅長後端。我也不熟悉css那一套,寫css的時候總覺得思路要擰一下,於是需要用了就套個bootstrap。但是,我知道有人會用css這套東西,有人能夠用css做出非常漂亮的頁面,雖然我不行。我也知道css多少有一些不便,於是有人發明了sass和less。這就說明雖然這種東西和命令式語言不一樣,但是還是符合某種思想的。不是這東西不可用,只是題主不會用。其實如果你只需做些東西,而要求又不那麼高,那麼類似這樣LayoutIt! - Bootstrap可視化布局系 樣的東西會比較有意義。既然自己不擅長,那為什麼不交給擅長的人去做呢,嚴肅臉。
你覺得爛可以直接拿ps排版啊,頁面掛張jpg完事兒
沒有。
大家的意見有幾種,有一種共同的觀點是:你不會用。雖然這條難以接受,但是事實確實如此。
有這麼幾點我想說的:- 我做Web開發,同時也做移動應用,也會擺弄一些遊戲引擎和PS、AI之類的軟體。在這一系列軟體和框架中,我的感受是CSS是最為靈活和省心的;
- 關於所謂的trick:最常見的也許就是clearfix了,但是其他的,我真想不出來有什麼trick。如果你覺得有大量trick的話,可以具體舉幾個例子,讓諸位高手給解答一下;
- CSS也在進化,如display: flex,已經被越來越多的產品和框架所應用;
- CSS所要解決的問題,是極度複雜的。它可以讓你一套代碼適應從手持設備到大屏幕,適應拉丁字母和CJK,適應從右至左的阿拉伯語系,甚至適應在你動態的改變瀏覽器窗口大小的時候,界面還能自適應。除此之外,它還支持動畫。另一方面在如上靈活性的基礎上還必須兼顧性能,比如有不少人開始用Web技術寫桌面應用,那麼在性能上,最終用戶的要求會更為嚴格。
用瀏覽器實現排版非常困難,簡直不是人乾的活。
用瀏覽器實現排版非常困難,簡直不是人乾的活。用瀏覽器實現排版非常困難,簡直不是人乾的活。重要的事情說三遍。如果真是這樣的話,為何很多所謂「排版」複雜的東西,寫native的都丟給我寫
╮(╯_╰)╭我來的時候 @徐飛 的答案正好在頂頭然後也順手點贊了。
排版和布局其實可以分開兩件事,css在布局方面已經做到了他該做、能做的;在西文排版中也有相當不錯的可控性。
但是 ,中文排版 是css所缺失的。w3c聯盟也在著手這方面的排版標準。
另外,心情不好也不能隨便對一個領域開噴。正如後端任何一種編程語言都有一個發展過程,css作為一種標記語言在保證後向兼容的情況下發展到如今已實屬不易。有空的話就去協助建立標準而不是噴。因為別人寫得爛,所以你說這是系統爛。就好比軟體出問題了,在安卓就是系統爛,在iphone就是軟體寫得爛。
我從設計師的角度談論一下CSS在排版上的我的一些看法.
首先CSS排版到底是什麼概念,
我覺得應該先清楚一個事實, 絕大部分的網頁, 都是由平面稿開始的.即是先從PS或者AI什麼的先有視覺圖稿開始決定排版的視覺外觀. 可能有的人會說, 我用軟體做出來的排版, CSS是未必可以做的. 沒錯, 是會有這種情況, 單並不是很多. 而且對設計來說, 還有做成圖片這種最低級的手段可以使用, 所以實際上, 是什麼都能排出來的.排版的核心功能是什麼
就是定位. 我給出2個圖, 希望可以理解到, 用軟體排版跟用CSS排版實際不一樣的是什麼地方.這個是AI裡面, 網頁界面的排版, 我網頁設計都會先做平面稿, 審核通過再寫HTML. 常規流程都是這樣.
這是在FF裡面的3D視圖, 觀察元素的子父元素的層次關係如果對HTML有認識, 就會知道, 拋開CSS, HTML的內容是根據文本流從上到下排列, 並且需要根據文章的結構, 把文章歸類好. 並嵌套好, 一層套一層.
圖中的網站網址Meter Accounting System (MAS) , 第一次寫的靜態, 我知道代碼很爛, 批就算了.
用CSS跟用軟體排版的區別.最大的區別就是這個 position: absolute;
軟體的排版, 可以理解成, 所有元素都是以絕對定位的!
而HTML排版就不是,為什麼HTML不可以全部絕對定位
其實技術上, 全部元素絕對定位是可行的. 但是, 只有腦門夾了或者像WIX那種建站平台才會這樣做.
HTML排版不推薦使用絕對定位, 拋開兼容性原因, 主要我認為就是web的內容時效性. 必須要考慮日後修改, 更新. 還有顯示容器的尺寸不是統一的.最適合的方法就是像俄羅斯方塊那樣, 堆嵌而成. 如果中間有一塊內容增減,. 周邊的內容會自動適應位置變化.
CSS排版舒服的部分對於我這種平面轉web的設計師來說, CSS排版最舒服方便的就是margin , padding , class
軟體排版, 所有的元素間距, 都只可以手工調整, 對於業內經常修改內容經常 更變內容的設計工作來講, 這種間距的調整工作量佔用大量的稿件製作時間.
雖然設計軟體都有一些文本式樣段落式樣自定義的功能, 但是比起class這種可以設定任何式樣, 並且可以子父嵌套並且設定區別式樣的功能, 在排版來講, 真的非常非常有用.對於沒有平面設計工作過的前端來講, margin , padding應該是他們最煩的東西.
負數的margin很常用.另外還有這個大殺器:after , :before
可以在不用修改HTML的情況下, 添加元素在指定的位置, 任意內容.
要知道, 在設計軟體裡面, 比如, 要對整本冊子裡面, 指定的某些段落裡面插入一些圖標或者什麼的. 都是要一個個手工加入的, 而且位置要統一的話, 甚至要肉眼定位.
......諸如此類
CSS排版不舒服的部分
最煩的就是其中3個float , display , 各種對齊
麻煩的清除浮動才能獲取父元素高度.
還有一大堆的display屬性要在適合的地方用適合的屬性, 什麼會換行什麼不會換行.為了垂直居中對齊, 搜遍大江南北.還有超不友好的中文顯示,
------------------------
暫時寫這麼多. 如果題主其實是想針對中文排版方面談論CSS我就不大發表意見了. 中文排版能顯示就行 我要求不高. 設計師還是那樣, 實在不行放個圖片. 能放圖片就沒有排不了的版.推薦閱讀:
※學計算機的,總是有人叫我幫考他計算機一級。我該怎麼拒絕? ?
※第三方評論系統(如多說和友言)的實現原理?
※視差滾動效果設計的網頁跟傳統的點擊樣式對比有何優勢?
※Web 前端分為哪幾個大方向,工資待遇如何,辛苦嗎?
※CSS 定位體系中的 Normal flow 應該如何翻譯比較好?