CSS規則

CSS規則javascript

---------------------------------------------css

1 前言html

2 代碼風格html5

  2.1 文件java

  2.2 縮進jquery

  2.3 空格git

  2.4 行長度github

  2.5 選擇器web

  2.6 屬性express

3 通用

  3.1 選擇器

  3.2 屬性縮寫

  3.3 屬性書寫順序

  3.4 清除浮動

  3.5 !important

  3.6 z-index

4 值與單位

  4.1 文本

  4.2 數值

  4.3 url()

  4.4 長度

  4.5 顏色

  4.6 2D 位置

5 文本編排

  5.1 字體族

  5.2 字號

  5.3 字體風格

  5.4 字重

  5.5 行高

6 變換與動畫

7 響應式

8 兼容性

  8.1 屬性前綴

  8.2 Hack

  8.3 Expression

1 前言

CSS 做爲網頁樣式的描述語言,在百度一直有着普遍的應用。本文檔的目標是使 CSS 代碼風格保持一致,容易被理解和被維護。

2 代碼風格

2.1 文件

[建議] CSS 文件使用無 BOM 的 UTF-8 編碼。

解釋:

UTF-8 編碼具備更普遍的適應性。BOM 在使用程序或工具處理文件時可能形成沒必要要的干擾。

2.2 縮進

[強制] 使用 4 個空格作爲一個縮進層級,不容許使用 2 個空格 或 tab 字符。

示例:

.selector {
    margin: 0;
    padding: 0;
}

2.4 行長度

[強制] 每行不得超過 120 個字符,除非單行不可分割。

解釋:

常見不可分割的場景爲URL超長。

[建議] 對於超長的樣式,在樣式值的 空格 處或 , 後換行,建議按邏輯分組。

示例:

/* 不一樣屬性值按邏輯分組 */
background:
    transparent url(aVeryVeryVeryLongUrlIsPlacedHere)
    no-repeat 0 0;
/* 可重複屢次的屬性,每次重複一行 */background-image:
    url(aVeryVeryVeryLongUrlIsPlacedHere)
    url(anotherVeryVeryVeryLongUrlIsPlacedHere);
/* 相似函數的屬性值能夠根據函數調用的縮進進行 */background-image: -webkit-gradient(
    linear,
    left bottom,
    left top,
    color-stop(0.04, rgb(88,94,124)),
    color-stop(0.52, rgb(115,123,162))
);

2.5 選擇器

[強制] 當一個 rule 包含多個 selector 時,每一個選擇器聲明必須獨佔一行。

示例:

/* good */.post,.page,.comment {
    line-height: 1.5;
}
/* bad */.post, .page, .comment {
    line-height: 1.5;
}

[強制] >+~ 選擇器的兩邊各保留一個空格。

示例:

/* good */main > nav {
    padding: 10px;
}
label + input {
    margin-left: 5px;
}
input:checked ~ button {
    background-color: #69C;
}
/* bad */main>nav {
    padding: 10px;
}
label+input {
    margin-left: 5px;
}
input:checked~button {
    background-color: #69C;
}

[強制] 屬性選擇器中的值必須用雙引號包圍。

解釋:

不容許使用單引號,不容許不使用引號。

示例:

/* good */article[character="juliet"] {
    voice-family: "Vivien Leigh", victoria, female;
}
/* bad */article[character='juliet'] {
    voice-family: "Vivien Leigh", victoria, female;
}

2.6 屬性

[強制] 屬性定義必須另起一行。

示例:

/* good */.selector {
    margin: 0;
    padding: 0;
}
/* bad */.selector { margin: 0; padding: 0; }

[強制] 屬性定義後必須以分號結尾。

示例:

/* good */.selector {
    margin: 0;
}
/* bad */.selector {
    margin: 0
}

3 通用

3.1 選擇器

[強制] 如無必要,不得爲 idclass 選擇器添加類型選擇器進行限定。

解釋:

在性能和維護性上,都有必定的影響。

示例:

/* good */#error,.danger-message {
    font-color: #c00;
}
/* bad */dialog#error,p.danger-message {
    font-color: #c00;
}

[建議] 選擇器的嵌套層級應不大於 3 級,位置靠後的限定條件應儘量精確。

示例:

/* good */#username input {}.comment .avatar {}
/* bad */.page .header .login #username input {}.comment div * {}

3.2 屬性縮寫

[建議] 在可使用縮寫的狀況下,儘可能使用屬性縮寫。

示例:

/* good */.post {
    font: 12px/1.5 arial, sans-serif;
}
/* bad */.post {
    font-family: arial, sans-serif;
    font-size: 12px;
    line-height: 1.5;
}

[建議] 使用 border / margin / padding 等縮寫時,應注意隱含值對實際數值的影響,確實須要設置多個方向的值時才使用縮寫。

解釋:

border / margin / padding 等縮寫會同時設置多個屬性的值,容易覆蓋不須要覆蓋的設定。如某些方向須要繼承其餘聲明的值,則應該分開設置。

示例:

/* centering <article class="page"> horizontally and highlight featured ones */article {
    margin: 5px;
    border: 1px solid #999;
}
/* good */.page {
    margin-right: auto;
    margin-left: auto;
}
.featured {
    border-color: #69c;
}
/* bad */.page {
    margin: 5px auto; /* introducing redundancy */
}
.featured {
    border: 1px solid #69c; /* introducing redundancy */
}

3.3 屬性書寫順序

[建議] 同一 rule set 下的屬性在書寫時,應按功能進行分組,並以 Formatting Model(佈局方式、位置) > Box Model(尺寸) > Typographic(文本相關) > Visual(視覺效果) 的順序書寫,以提升代碼的可讀性。

解釋:

  • Formatting Model 相關屬性包括:position / top / right / bottom / left / float / display / overflow 等
  • Box Model 相關屬性包括:border / margin / padding / width / height 等
  • Typographic 相關屬性包括:font / line-height / text-align / word-wrap 等
  • Visual 相關屬性包括:background / color / transition / list-style 等

另外,若是包含 content 屬性,應放在最前面。

示例:

.sidebar {
    /* formatting model: positioning schemes / offsets / z-indexes / display / ...  */
    position: absolute;
    top: 50px;
    left: 0;
    overflow-x: hidden;
 
    /* box model: sizes / margins / paddings / borders / ...  */
    width: 200px;
    padding: 5px;
    border: 1px solid #ddd;
 
    /* typographic: font / aligns / text styles / ... */
    font-size: 14px;
    line-height: 20px;
 
    /* visual: colors / shadows / gradients / ... */
    background: #f5f5f5;
    color: #333;
    -webkit-transition: color 1s;
       -moz-transition: color 1s;
            transition: color 1s;
}

3.4 清除浮動

.clearfix:after{display:block;content:’’;clear:both;}

.clearfix{zoom:1;}

3.5 !important

[建議] 儘可能不使用 !important 聲明。

[建議] 當須要強制指定樣式且不容許任何場景覆蓋時,經過標籤內聯和 !important 定義樣式。

解釋:

必須注意的是,僅在設計上 確實不容許任何其它場景覆蓋樣式 時,才使用內聯的 !important 樣式。一般在第三方環境的應用中使用這種方案。下面的 z-index 章節是其中一個特殊場景的典型樣例。

3.6 z-index

[建議] 將 z-index 進行分層,對文檔流外絕對定位元素的視覺層級關係進行管理。

解釋:

同層的多個元素,如多個由用戶輸入觸發的 Dialog,在該層級內使用相同的 z-index 或遞增 z-index

建議每層包含100個 z-index 來容納足夠的元素,若是每層元素較多,能夠調整這個數值。

[建議] 在可控環境下,指望顯示在最上層的元素,z-index 指定爲 999

4 值與單位

4.1 文本

4.2 數值

[強制] 當數值爲 0 - 1 之間的小數時,省略整數部分的 0

示例:

/* good */
panel {
    opacity: .8;
}
/* bad */
panel {
    opacity: 0.8;
}

4.3 url()

[強制] url() 函數中的路徑不加引號。

示例:

body {
    background: url(bg.png);
}

[建議] url() 函數中的絕對路徑可省去協議名。

示例:

body {
    background: url(//baidu.com/img/bg.png) no-repeat 0 0;
}

4.4 長度

[強制] 長度爲 0 時須省略單位。 (也只有長度單位可省)

示例:

/* good */body {
    padding: 0 5px;
}
/* bad */body {
    padding: 0px 5px;
}

4.5 顏色

[強制] 顏色值能夠縮寫時,必須使用縮寫形式。

示例:

/* good */.success {
    background-color: #aca;
}
/* bad */.success {
    background-color: #aaccaa;
}

[強制] 顏色值不容許使用命名色值。

示例:

/* good */.success {
    color: #90ee90;
}
/* bad */.success {
    color: lightgreen;
}

[建議] 顏色值中的英文字符采用小寫。如不用小寫也須要保證同一項目內保持大小寫一致。

示例:

/* good */.success {
    background-color: #aca;
    color: #90ee90;
}
/* good */.success {
    background-color: #ACA;
    color: #90EE90;
}
/* bad */.success {
    background-color: #ACA;
    color: #90ee90;
}

4.6 2D 位置

[強制] 必須同時給出水平和垂直方向的位置。

解釋:

2D 位置初始值爲 0% 0%,但在只有一個方向的值時,另外一個方向的值會被解析爲 center。爲避免理解上的困擾,應同時給出兩個方向的值。background-position屬性值的定義

示例:

/* good */body {
    background-position: center top; /* 50% 0% */
}
/* bad */body {
    background-position: top; /* 50% 0% */
}

5 文本編排

5.1 字體族

[強制] font-family 屬性中的字體族名稱應使用字體的英文 Family Name,其中若有空格,須放置在引號中。

解釋:

所謂英文 Family Name,爲字體文件的一個元數據,常見名稱以下:

字體

操做系統

Family Name

宋體 (中易宋體)

Windows

SimSun

黑體 (中易黑體)

Windows

SimHei

微軟雅黑

Windows

Microsoft YaHei

微軟正黑

Windows

Microsoft JhengHei

華文黑體

Mac/iOS

STHeiti

冬青黑體

Mac/iOS

Hiragino Sans GB

文泉驛正黑

Linux

WenQuanYi Zen Hei

文泉驛微米黑

Linux

WenQuanYi Micro Hei

示例:

h1 {
    font-family: "Microsoft YaHei";
}

[強制] font-family 按「西文字體在前、中文字體在後」、「效果佳 (質量高/更能知足需求) 的字體在前、效果通常的字體在後」的順序編寫,最後必須指定一個通用字體族( serif / sans-serif )。

解釋:

更詳細說明可參考本文

示例:

/* Display according to platform */.article {
    font-family: Arial, sans-serif;
}
/* Specific for most platforms */h1 {
    font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", "WenQuanYi Micro Hei", "Microsoft YaHei", sans-serif;
}

[強制] font-family 不區分大小寫,但在同一個項目中,一樣的 Family Name 大小寫必須統一。

示例:

/* good */body {
    font-family: Arial, sans-serif;
}
h1 {
    font-family: Arial, "Microsoft YaHei", sans-serif;
}
/* bad */body {
    font-family: arial, sans-serif;
}
h1 {
    font-family: Arial, "Microsoft YaHei", sans-serif;
}

5.2 字號

[強制] 須要在 Windows 平臺顯示的中文內容,其字號應不小於 12px

解釋:

因爲 Windows 的字體渲染機制,小於 12px 的文字顯示效果極差、難以辨認。

5.3 字體風格

[建議] 須要在 Windows 平臺顯示的中文內容,不要使用除 normal 外的 font-style。其餘平臺也應慎用。

解釋:

因爲中文字體沒有 italic 風格的實現,全部瀏覽器下都會 fallback 到 obilique 實現 (自動擬合爲斜體),小字號下 (特別是 Windows 下會在小字號下使用點陣字體的狀況下) 顯示效果差,形成閱讀困難。

5.5 行高

[建議] line-height 在定義文本段落時,應使用數值。

解釋:

將 line-height 設置爲數值,瀏覽器會基於當前元素設置的 font-size 進行再次計算。在不一樣字號的文本段落組合中,能達到較爲溫馨的行間間隔效果,避免在每一個設置了 font-size 都須要設置 line-height

當 line-height 用於控制垂直居中時,仍是應該設置成與容器高度一致。

示例:

.container {
    line-height: 1.5;
}

6 變換與動畫

[強制] 使用 transition 時應指定 transition-property

示例:

/* good */.box {
    transition: color 1s, border-color 1s;
}
/* bad */.box {
    transition: all 1s;
}

[建議] 儘量在瀏覽器能高效實現的屬性上添加過渡和動畫。

解釋:

本文,在可能的狀況下應選擇這樣四種變換:

  • transform: translate(npx, npx);
  • transform: scale(n);
  • transform: rotate(ndeg);
  • opacity: 0..1;

典型的,可使用 translate 來代替 left 做爲動畫屬性。

示例:

/* good */.box {
    transition: transform 1s;
}.box:hover {
    transform: translate(20px); /* move right for 20px */
}
/* bad */.box {
    left: 0;
    transition: left 1s;
}.box:hover {
    left: 20px; /* move right for 20px */
}

7 響應式

8.1 屬性前綴

[強制] 帶私有前綴的屬性由長到短排列,按冒號位置對齊。

解釋:

標準屬性放在最後,按冒號對齊方便閱讀,也便於在編輯器內進行多行編輯。

示例:

.box {
    -webkit-box-sizing: border-box;
       -moz-box-sizing: border-box;
            box-sizing: border-box;
}

8.2 Hack

[建議] 須要添加 hack 時應儘量考慮是否能夠採用其餘方式解決。

解釋:

若是能經過合理的 HTML 結構或使用其餘的 CSS 定義達到理想的樣式,則不該該使用 hack 手段解決問題。一般 hack 會致使維護成本的增長。

[建議] 儘可能使用 選擇器 hack 處理兼容性,而非 屬性 hack

解釋:

儘可能使用符合 CSS 語法的 selector hack,能夠避免一些第三方庫沒法識別 hack 語法的問題。

示例:

/* IE 7 */*:first-child + html #header {
    margin-top: 3px;
    padding: 5px;
}
/* IE 6 */* html #header {
    margin-top: 5px;
    padding: 4px;
}

[建議] 儘可能使用簡單的 屬性 hack

示例:

.box {
    _display: inline; /* fix double margin */
    float: left;
    margin-left: 20px;
}
.container {
    overflow: hidden;
    *zoom: 1; /* triggering hasLayout */
}

8.3 Expression

[強制] 禁止使用 Expression

 

 

 

 

 

 

 

 

 

 

 

 

1 前言

2 代碼風格

  2.1 縮進與換行

  2.2 命名

  2.3 標籤

  2.4 屬性

3 通用

  3.1 DOCTYPE

  3.2 編碼

  3.3 CSS 和 JavaScript 引入

4 head

  4.1 title

  4.2 favicon

  4.3 viewport

5 圖片

6 表單

  6.1 控件標題

  6.2 按鈕

  6.3 可訪問性 (A11Y)

7 多媒體

8 模板中的 HTML

1 前言

HTML 做爲描述網頁結構的超文本標記語言,在百度一直有着普遍的應用。本文檔的目標是使 HTML 代碼風格保持一致,容易被理解和被維護。

2 代碼風格

2.1 縮進與換行

[強制] 使用 4 個空格作爲一個縮進層級,不容許使用 2 個空格 或 tab 字符。

解釋: 對於非 HTML 標籤之間的縮進,好比 script 或 style 標籤內容縮進,與 script 或 style 標籤的縮進同級。

示例:

<style>/* 樣式內容的第一級縮進與所屬的 style 標籤對齊 */ul {    padding: 0;}</style>
<ul>
    <li>first</li>
    <li>second</li>
</ul><script>// 腳本代碼的第一級縮進與所屬的 script 標籤對齊require(['app'], function (app) {    app.init();});</script>

[建議] 每行不得超過 120 個字符。

解釋:

過長的代碼不容易閱讀與維護。可是考慮到 HTML 的特殊性,不作硬性要求。

2.2 命名

[強制] class 必須單詞全字母小寫,單詞間以 - 分隔。

[強制] class 必須表明相應模塊或部件的內容或功能,不得以樣式信息進行命名。

示例:

<!-- good -->
<div class="sidebar"></div>
<!-- bad -->
<div class="left"></div>
<!-- good -->
foo').tagName);</script>

2.3 標籤

[強制] 標籤名必須使用小寫字母。

示例:

<!-- good -->
<p>Hello StyleGuide!</p>
<!-- bad -->
<P>Hello StyleGuide!</P>

[強制] 對於無需自閉合的標籤,不容許自閉合。

解釋:

常見無需自閉合標籤有 inputbrimghr 等。

示例:

<!-- good -->
<input type="text" name="title">
<!-- bad -->
<input type="text" name="title" />

[強制] 對 HTML5 中規定容許省略的閉合標籤,不容許省略閉合標籤。

解釋:

對代碼體積要求很是嚴苛的場景,能夠例外。好比:第三方頁面使用的投放系統。

示例:

<!-- good -->
<ul>
    <li>first</li>
    <li>second</li>
</ul>
<!-- bad -->
<ul>
    <li>first
    <li>second
</ul>

[強制] 標籤使用必須符合標籤嵌套規則。

解釋:

好比 div 不得置於 p 中,tbody 必須置於 table 中。

詳細的標籤嵌套規則參見HTML DTD中的 Elements 定義部分。

[建議] HTML 標籤的使用應該遵循標籤的語義。

解釋:

下面是常見標籤語義

  • p - 段落
  • h1,h2,h3,h4,h5,h6 - 層級標題
  • strong,em - 強調
  • ins - 插入
  • del - 刪除
  • abbr - 縮寫
  • code - 代碼標識
  • cite - 引述來源做品的標題
  • q - 引用
  • blockquote - 一段或長篇引用
  • ul - 無序列表
  • ol - 有序列表
  • dl,dt,dd - 定義列表

示例:

<!-- good -->
<p>Esprima serves as an important <strong>building block</strong> for some JavaScript language tools.</p>
<!-- bad -->
<div>Esprima serves as an important <span class="strong">building block</span> for some JavaScript language tools.</div>

[建議] 在 CSS 能夠實現相同需求的狀況下不得使用表格進行佈局。

解釋:

在兼容性容許的狀況下應儘可能保持語義正確性。對網格對齊和拉伸性有嚴格要求的場景容許例外,如多列複雜表單。

[建議] 標籤的使用應儘可能簡潔,減小沒必要要的標籤。

示例:

<!-- good -->
<img class="avatar" src="image.png">
<!-- bad -->
<span class="avatar">
    <img src="image.png">
</span>

3 通用

3.1 DOCTYPE

[強制] 使用 HTML5 的 doctype 來啓用標準模式,建議使用大寫的 DOCTYPE

示例:

<!DOCTYPE html>

[建議] 在 html 標籤上設置正確的 lang 屬性。

解釋:

有助於提升頁面的可訪問性,如:讓語音合成工具肯定其所應該採用的發音,令翻譯工具肯定其翻譯語言等。

示例:

<html lang="zh-CN">

3.2 編碼

[強制] 頁面必須使用精簡形式,明確指定字符編碼。指定字符編碼的 meta 必須是 head 的第一個直接子元素。

解釋:

見 HTML5 Charset能用嗎 一文。

示例:

<html>
    <head>
        <meta charset="UTF-8">
        ......
    </head>
    <body>
        ......
    </body>
</html>

[建議] HTML 文件使用無 BOM 的 UTF-8 編碼。

解釋:

UTF-8 編碼具備更普遍的適應性。BOM 在使用程序或工具處理文件時可能形成沒必要要的干擾。

3.3 CSS 和 JavaScript 引入

[強制] 引入 CSS 時必須指明 rel="stylesheet"

示例:

<link rel="stylesheet" href="page.css">

[建議] 引入 CSS 和 JavaScript 時無須指明 type 屬性。

解釋:

text/css 和 text/javascript 是 type 的默認值。

[建議] 展示定義放置於外部 CSS 中,行爲定義放置於外部 JavaScript 中。

解釋:

結構-樣式-行爲的代碼分離,對於提升代碼的可閱讀性和維護性都有好處。

[建議] 在 head 中引入頁面須要的全部 CSS 資源。

解釋:

在頁面渲染的過程當中,新的CSS可能致使元素的樣式從新計算和繪製,頁面閃爍。

[建議] JavaScript 應當放在頁面末尾,或採用異步加載。

解釋:

將 script 放在頁面中間將阻斷頁面的渲染。出於性能方面的考慮,如非必要,請遵照此條建議。

示例:

<body>
    <!-- a lot of elements -->    <script src="init-behavior.js"></script>
</body>

[建議] 移動環境或只針對現代瀏覽器設計的 Web 應用,若是引用外部資源的 URL 協議部分與頁面相同,建議省略協議前綴。

解釋:

使用 protocol-relative URL 引入 CSS,在 IE7/8 下,會發兩次請求。是否使用 protocol-relative URL 應充分考慮頁面針對的環境。

示例:

<script src="//s1.bdstatic.com/cache/static/jquery-1.10.2.min_f2fb5194.js"></script>

4 head

4.1 title

[強制] 頁面必須包含 title 標籤聲明標題。

[強制] title 必須做爲 head 的直接子元素,並緊隨 charset 聲明以後。

解釋:

title 中若是包含 ASCII 以外的字符,瀏覽器須要知道字符編碼類型才能進行解碼,不然可能致使亂碼。

示例:

<head>
    <meta charset="UTF-8">
    <title>頁面標題</title>
</head>

4.2 favicon

[強制] 保證 favicon 可訪問。

解釋:

在未指定 favicon 時,大多數瀏覽器會請求 Web Server 根目錄下的 favicon.ico 。爲了保證 favicon 可訪問,避免 404,必須遵循如下兩種方法之一:

  1. 在 Web Server 根目錄放置 favicon.ico 文件。
  2. 使用 link 指定 favicon。

示例:

<link rel="shortcut icon" href="path/to/favicon.ico">

4.3 viewport

[建議] 若頁面欲對移動設備友好,需指定頁面的 viewport

解釋:

viewport meta tag 能夠設置可視區域的寬度和初始縮放大小,避免在移動設備上出現頁面展現不正常。

好比,在頁面寬度小於 980px 時,若需 iOS 設備友好,應當設置 viewport 的 width 值來適應你的頁面寬度。同時由於不一樣移動設備分辨率不一樣,在設置時,應當使用 device-width 和 device-height 變量。

另外,爲了使 viewport 正常工做,在頁面內容樣式佈局設計上也要作相應調整,如避免絕對定位等。關於 viewport 的更多介紹,能夠參見 Safari Web Content Guide的介紹

5 圖片

[強制] 禁止 img 的 src 取值爲空。延遲加載的圖片也要增長默認的 src

解釋:

src 取值爲空,會致使部分瀏覽器從新加載一次當前頁面,參考:https://developer.yahoo.com/performance/rules.html#emptysrc

[建議] 避免爲 img 添加沒必要要的 title 屬性。

解釋:

多餘的 title 影響看圖體驗,而且增長了頁面尺寸。

[建議] 爲重要圖片添加 alt 屬性。

解釋:

能夠提升圖片加載失敗時的用戶體驗。

[建議] 添加 width 和 height 屬性,以免頁面抖動。

[建議] 有下載需求的圖片採用 img 標籤實現,無下載需求的圖片採用 CSS 背景圖實現。

解釋:

  1. 產品 logo、用戶頭像、用戶產生的圖片等有潛在下載需求的圖片,以 img 形式實現,能方便用戶下載。
  2. 無下載需求的圖片,好比:icon、背景、代碼使用的圖片等,儘量採用 CSS 背景圖實現。

6 表單

6.1 控件標題

[強制] 有文本標題的控件必須使用 label 標籤將其與其標題相關聯。

解釋:

有兩種方式:

  1. 將控件置於 label 內。
  2. label 的 for 屬性指向控件的 id

推薦使用第一種,減小沒必要要的 id。若是 DOM 結構不容許直接嵌套,則應使用第二種。

示例:

<label><input type="checkbox" name="confirm" value="on"> 我已確認上述條款</label>
 
<label for="username">用戶名:</label> <input type="textbox" name="username" id="username">

6.2 按鈕

[強制] 使用 button 元素時必須指明 type 屬性值。

解釋:

button 元素的默認 type 爲 submit,若是被置於 form 元素中,點擊後將致使表單提交。爲顯示區分其做用方便理解,必須給出 type 屬性。

示例:

<button type="submit">提交</button>
<button type="button">取消</button>

7 多媒體

[建議] 在支持 HTML5 的瀏覽器中優先使用 audio 和 video 標籤來定義音視頻元素。

[建議] 只在必要的時候開啓音視頻的自動播放。

[建議] 在 object 標籤內部提供指示瀏覽器不支持該標籤的說明。

示例:

<object width="100" height="50" data="something.swf">DO NOT SUPPORT THIS TAG</object>
相關文章
相關標籤/搜索