良好的注釋是非常重要的。請(qǐng)留出時(shí)間來(lái)描述組件(component)的工作方式、局限性和構(gòu)建它們的方法。不要讓你的團(tuán)隊(duì)其它成員 來(lái)猜測(cè)一段不通用或不明顯的代碼的目的。
提示:通過(guò)配置編輯器,可以提供快捷鍵來(lái)輸出一致認(rèn)可的注釋模式。
出于性能考量,在沒有必要的情況下避免元素選擇器疊加 Class、ID 使用。
元素選擇器和 ID、Class 混合使用也違反關(guān)注分離原則。如果HTML標(biāo)簽修改了,就要再去修改 CSS 代碼,不利于后期維護(hù)。
相關(guān)屬性應(yīng)為一組,推薦的樣式編寫順序
由于定位(positioning)可以從正常的文檔流中移除元素,并且還能覆蓋盒模型(box model)相關(guān)的樣式,因此排在首位。盒模型決定了組件的尺寸和位置,因此排在第二位。
其他屬性只是影響組件的內(nèi)部(inside)或者是不影響前兩組屬性,因此排在后面。
url() 、屬性選擇符、屬性值使用雙引號(hào)。
將媒體查詢放在盡可能相關(guān)規(guī)則的附近。不要將他們打包放在一個(gè)單一樣式文件中或者放在文檔底部。如果你把他們分開了,將來(lái)只會(huì)被大家遺忘。
與 <link> 相比,@import 要慢很多,不光增加額外的請(qǐng)求數(shù),還會(huì)導(dǎo)致不可預(yù)料的問題。
替代辦法:
a:link -> a:visited -> a:hover -> a:active(LoVeHAte)
選擇字體
在 Web 上應(yīng)用字體,是一門技術(shù),同時(shí)也是一門藝術(shù). 由于計(jì)算機(jī)歷史發(fā)展的原因,西文有大量?jī)?yōu)秀的字體可供選擇,可對(duì)于中文來(lái)說(shuō)就是一項(xiàng)挑戰(zhàn). 主流操作系統(tǒng)提供的本地中文字體極少,另一方面中文字體組成的特殊性,其體積過(guò)于龐大,無(wú)法良好地使用 webfont. 所以編寫健壯的 font-family 是一件需要深思熟慮的事情.
以下列出各種平臺(tái)下合適的中西文字體:
桌面端 Mac, Windows, Linux 上適合網(wǎng)頁(yè)顯示的優(yōu)秀中文字體
移動(dòng)端 iOS, Android 上適合網(wǎng)頁(yè)顯示的優(yōu)秀中文字體
主流操作系統(tǒng)上適合網(wǎng)頁(yè)顯示的優(yōu)秀西文字體
拋開宋/明體長(zhǎng)時(shí)間作為系統(tǒng)默認(rèn)字體,所產(chǎn)生的審美疲勞,宋/明體相比黑體是更合適作為內(nèi)文字體. 大多的宋/明體針對(duì)內(nèi)文設(shè)計(jì),橫細(xì)直粗,造型方正,筆畫在小字號(hào)的情況下,不會(huì)糊在一起,給人一種素雅的感覺. 而黑體筆畫粗壯有力,引人注目,更適合作為標(biāo)題使用.
但大部分人已經(jīng)習(xí)慣在網(wǎng)頁(yè)上閱讀黑體,以及宋/明體在字重過(guò)大的情況下,顯示效果還是不太理想. 所以內(nèi)文默認(rèn)提供黑體,可選擇性的切換宋/明體.
Robert Bringhurst 在《The Elements of Typographic Style》談到字號(hào)大小之間的比例,形似于音樂中的音階. 作曲時(shí)以某個(gè)特定的音階為基礎(chǔ),才會(huì)形成特定的風(fēng)格. 字號(hào)的排版同樣如此,有規(guī)律的字號(hào)變化,才會(huì)形成特定的排版風(fēng)格.
將內(nèi)文以 16px 作為字號(hào)
標(biāo)題 h1, h2, h3, h4, h5, h6 以 16px 作為字號(hào)基礎(chǔ),按同比例的遞減
此外,Robert Bringhurst 還談到版式中的空間就像音樂中的時(shí)間(Space in typography is like time in music),言下之意,把握間距(行高)就如把握節(jié)拍. 節(jié)拍是對(duì)時(shí)間的分割,倘若搶拍便失去節(jié)奏. 文字的間距(行高)亦是對(duì)空間的分割,不一致間距(行高)比例,便會(huì)失去「垂直的旋律」.
將內(nèi)文以 1.7em 作為行高
標(biāo)題 h1, h2, h3, h4, h5, h6 以 1.5em 作為行高.
段落分隔對(duì)于中文排版而言也是特別重要,主要以「段首縮進(jìn)」和「段落間距」兩種方式表現(xiàn),它們的唯一目的就是將段落分隔.
「段首縮進(jìn)」主要用于印刷書籍,節(jié)省縱向空間,保持文本連貫,但一般在網(wǎng)頁(yè)上的閱讀速度較快,會(huì)使文字過(guò)于密集產(chǎn)生壓力. 相反「段落間距」主要用于網(wǎng)頁(yè),充分利用網(wǎng)頁(yè)無(wú)限的縱向空間,保障文本塊的整潔,同時(shí)給予長(zhǎng)篇閱讀休息的間隙. 所以一般網(wǎng)頁(yè)排版,會(huì)考慮選擇「段落間距」,可以設(shè)置以下屬性實(shí)現(xiàn)「段落間距」.
漢字的方塊性質(zhì)構(gòu)成了漢字獨(dú)有的藝術(shù)美感,使其具有工整的特點(diǎn),從而顯現(xiàn)出中文排版的重要原則:所有元素都是正方體. 但從二十世紀(jì)開始使用標(biāo)點(diǎn)后,以及中西文混排的情況越來(lái)越多,為了保證「禁則處理」和「齊頭尾」實(shí)現(xiàn),可能需要在不同條件下進(jìn)行適當(dāng)?shù)臄嘣~處理.
「禁則」是來(lái)自日語(yǔ)的排版術(shù)語(yǔ),主要指的就是禁止一些標(biāo)點(diǎn)等字符出現(xiàn)在行首或行尾的規(guī)則,大致相當(dāng)于漢語(yǔ)常說(shuō)的「避頭尾」.
可以設(shè)置以下屬性實(shí)現(xiàn)「齊頭尾」,其中inter-ideographic意思是「通過(guò)調(diào)整單詞和字符之間的留白來(lái)實(shí)現(xiàn)兩端對(duì)齊」.
但這樣的「齊頭尾」并不是完美的,主要由于技術(shù)遺留原因,在 Windows 和 Linux 上的 webkit 瀏覽器并沒有實(shí)現(xiàn) inter-ideographic 導(dǎo)致中西文混排的時(shí)候,容易出現(xiàn)過(guò)度拉伸字間距的情況。
為此有一種不優(yōu)雅的解決方案,在極易出現(xiàn)字間距拉伸的小尺寸屏幕(手機(jī))上使用「斷詞處理」,避免字間距拉伸,可是這樣也帶來(lái)「無(wú)視避頭尾規(guī)則」和「西文單詞斷詞」的壞毛病. 這是用一種不優(yōu)雅解決另一種不優(yōu)雅,按需抉擇吧.
可以設(shè)置以下屬性進(jìn)行「斷詞處理」
src和href都是用來(lái)加載外部資源,區(qū)別如下
src當(dāng)瀏覽器解析到該元素時(shí),會(huì)暫停其他資源的加載和處理,直到該資源加載完成。 它會(huì)將資源內(nèi)容嵌入到當(dāng)前標(biāo)簽所在的位置,將其指向的資源下載應(yīng)用到文檔內(nèi),如js腳本等。常用在img、script、iframe等標(biāo)簽。
href指向外部資源所在的位置,和當(dāng)前元素位置建立鏈接,當(dāng)瀏覽器解識(shí)別到它指向的位置,將其下載的時(shí)候不會(huì)阻止其他資源的加載解析。常用在a 、 link標(biāo)簽。
根據(jù)內(nèi)容來(lái)選擇合適的標(biāo)簽
DOCTYPE是HTML5中一種標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的文檔類型聲明,是用來(lái)告訴瀏覽器的解析器,該用什么樣的方式去加載識(shí)別文檔。
iframe通常用來(lái)加載外部鏈接,不會(huì)影響網(wǎng)頁(yè)內(nèi)容的加載。
優(yōu)點(diǎn)
缺點(diǎn)
他倆都是表示異步加載外部JS腳本,不會(huì)阻礙頁(yè)面的加載解析。 區(qū)別
盒模型都是由四個(gè)部分組成的,分別是margin、border、padding和content。
標(biāo)準(zhǔn)盒模型和IE盒模型的區(qū)別在于設(shè)置width和height時(shí),對(duì)應(yīng)的范圍不同。
通過(guò)修改元素的box-sizing屬性來(lái)改變?cè)氐暮心P?/p>
選擇器
選擇器 | 權(quán)重 |
id選擇器 #id | 100 |
類選擇器 .classname | 10 |
屬性選擇器 div[class="foo"] | 10 |
偽類選擇器 div::last-child | 10 |
標(biāo)簽選擇器 div | 1 |
偽元素選擇器 div:after | 1 |
兄弟選擇器 div+span | 0 |
子選擇器 ui>li | 0 |
后代選擇器 div span | 0 |
通配符選擇器 | 0 |
優(yōu)先級(jí)
可繼承
不可繼承
屬性 | 作用 |
block | 塊類型。默認(rèn)寬度為父元素寬度,可設(shè)置寬高,換行顯示。 |
inline | 行內(nèi)元素類型。默認(rèn)寬度為內(nèi)容寬度,不可設(shè)置寬高,同行顯示。 |
inline-block | 行內(nèi)塊級(jí)元素,默認(rèn)寬度為內(nèi)容寬度,可以設(shè)置寬高,同行顯示 |
table | 塊級(jí)表格 |
flex | flex容器布局 |
none | 隱藏元素 |
inherit | 從父類繼承display屬性 |
單行
css
復(fù)制代碼
overflow: hidden; // 溢出隱藏 text-overflow: ellipsis; // 溢出用省略號(hào)顯示 whtie-space: nowrap; //規(guī)定段落中的文本不進(jìn)行換行
多行
CSS
復(fù)制代碼
overflow:hidden text-overflow: ellipsis; // 溢出用省略號(hào)顯示 display:-webkit-box; // 作為彈性伸縮盒子模型顯示。 -webkit-box-orient:vertical; // 設(shè)置伸縮盒子的子元素排列方式:從上到下垂直排列 -webkit-line-clamp:3; // 顯示的行數(shù)
他們都是 CSS 預(yù)處理器,是 CSS 上的一種抽象層。他們是一種特殊的語(yǔ)法/語(yǔ)言編譯成 CSS。 增加了 CSS代碼的復(fù)用性,層級(jí),mixin, 變量,循環(huán), 函數(shù)等對(duì)編寫以及開發(fā)UI組件都極為方便。 區(qū)別
CSS
復(fù)制代碼
.outer { height: 100px; } .left { float: left; width: 200px; background: tomato; } .right { margin-left: 200px; width: auto; background: gold; }
CSS
復(fù)制代碼
.left{ width: 100px; height: 200px; background: red; float: left; } .right{ height: 300px; background: blue; overflow: hidden; }
CSS
復(fù)制代碼
.outer { display: flex; height: 100px; } .left { width: 200px; background: tomato; } .right { flex: 1; background: gold; }
CSS
復(fù)制代碼
.outer { position: relative; height: 100px; } .left { position: absolute; width: 200px; height: 100px; background: tomato; } .right { margin-left: 200px; background: gold; }
CSS
復(fù)制代碼
.parent { position: relative; } .child { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); }
CSS
復(fù)制代碼
.parent { position: relative; } .child { position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; }
CSS
復(fù)制代碼
.parent { position: relative; } .child { position: absolute; top: 50%; left: 50%; margin-top: -50px; /* 自身 height 的一半 */ margin-left: -50px; /* 自身 width 的一半 */ }
CSS
復(fù)制代碼
.parent { display: flex; justify-content:center; align-items:center; }
flex布局是CSS3新增的一種布局方式,能夠根據(jù)不同屏幕尺寸的變化來(lái)自適應(yīng)大小。
常用的屬性:
flex: 1是flex-grow、flex-shrink、flex-basis的縮寫,默認(rèn)值是0 1 auto。flex:1也表示flex: 1 1 auto。
BFC是塊級(jí)格式上下文(Block Formatting Context,BFC),是CSS布局的一個(gè)概念,在BFC布局里面的元素不受外面元素影響。
創(chuàng)建BFC條件
BFC作用:
兩個(gè)塊級(jí)元素分別設(shè)置上下margin時(shí)可能會(huì)導(dǎo)致邊距合并為一個(gè)邊距,合并到邊距取最大的那個(gè)值。需要注意的是,浮動(dòng)的元素和絕對(duì)定位這種脫離文檔流的元素的外邊距不會(huì)折疊。重疊只會(huì)出現(xiàn)在垂直方向。
計(jì)算規(guī)則
解決方案 對(duì)于重疊的情況,主要有兩種:兄弟之間重疊(margin合并) 和 父子之間重疊(margin塌陷)
通過(guò)設(shè)置不同方向邊框來(lái)實(shí)現(xiàn)
CSS
復(fù)制代碼
div { width: 0; height: 0; border-top: 50px solid red; border-right: 50px solid transparent; border-left: 50px solid transparent; }
CSS
復(fù)制代碼
transform: scale(0.5,0.5);
1px 問題指的是:在一些 Retina屏幕 的機(jī)型上,移動(dòng)端頁(yè)面的 1px 會(huì)變得很粗,呈現(xiàn)出不止 1px 的效果。原因很簡(jiǎn)單——CSS 中的 1px 并不能和移動(dòng)設(shè)備上的 1px 劃等號(hào)。
原文章鏈接:https://juejin.cn/post/7269794410573512758
avaScript奇淫技巧:把JS編譯成exe
本文,介紹一種一般人不知道的技術(shù):把JS代碼編譯成exe,而且不使用第三方工具,僅用系統(tǒng)工具完成。
第一:工具準(zhǔn)備
編譯JS代碼,使用一個(gè)名為jsc.exe的工具,在系統(tǒng)windows目錄中搜索,可找到此文件。
使用jsc /help可獲得此工具的使用說(shuō)明:
第二:編譯js為命令行輸出exe
代碼如下:
var d = new Date();
var n = Math.random();
print('Hello, today is ' + d + 'nand this is random - ' + n);
編譯并執(zhí)行:
第三:編譯js為dll(動(dòng)態(tài)鏈接庫(kù))
代碼如下:
package LibHello {
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。