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