WY-頁面架構(gòu)

CSS reset


** 1允耿、placeholder 顏色重置 **

:-moz-placeholder { color:#ccc !important; }
::-moz-placeholder { color:#ccc !important; }
:-ms-input-placeholder { color:#ccc !important; }
:-webkit-input-placeholder { color:#ccc !important; }

2借笙、 input 右測 小叉刪除

input::-ms-clear{ display:none; }    
Paste_Image.png

** 3、 按鈕按下后高亮暗色**

html{ -webkit-tap-highlight-color: rgba(0,0,0,0); }
按鈕

居中布局-水平居中


1较锡、inline-block + text-align

demo

兼容IE6业稼,7 加 *zoom:1;

** 2、table + margin **

demo

** 3蚂蕴、absolute + transform **

demo

transform IE6,7,8 兼容性問題低散,高級瀏覽器也要加私有前綴

** 4、 flex + justify-content**

demo

或者不用justify-content,用margin骡楼。設(shè)置 .child{ margin: 0 auto; }

IE6,7,8 flex兼容問題

居中布局-垂直居中


**1熔号、table-cell + vertical-align **

 <div class="parent">
    <div class="child">DEMO</div>
</div>

CSS:

.parent{ display: table-cell; vertical-align: middle; }

vertical-align可以作用于inline,inline-block 以及 table-cell元素。
這種做法兼容IE8+

**2鸟整、absolute + transform **
CSS:

.parent{ position:relative; }
.child{  
     position: absolute; 
     top: 50%; 
     transform: translateY(-50%);
}

兼容性

**3引镊、flex + align-items **

.parent{
       display:flex;
       align-items: center;
 }

居中布局-水平、垂直同時居中


**1篮条、inline-block + text-align + table-cell + vertical-align **

demo

兼容IE8+

**2弟头、absolute + transform **

demo

**3、flex + justify-content + align-items **

demo

多列布局


HTML結(jié)構(gòu)

**1涉茧、float + margin **

 .left {  float:left;  width: 100px; }
 .right { margin-left: 120px;  }
demo
  • 優(yōu)點: 容易理解
  • 缺點:IE6 不兼容赴恨,3像素; right是沒有浮動的降瞳,如果right內(nèi)容中有清楚浮動就會產(chǎn)生 bug
bug

修改版:float + margin + (fix)

float + margin + (fix)
  • 優(yōu)點: 兼容性好
  • 缺點:層級多

.left 里面設(shè)置position: relative嘱支; 是為了提高left div的層級。

**2挣饥、float + overflow **

 .left{ 
       float: left;
       width: 100px;
       margin-right: 20px;
  }
  .right{ overflow: hidden; //觸發(fā)BFC }

 缺點:IE6不支持

3除师、table

 .parent{ 
      display:table; 
      width: 100%;
      table-layout:fixed; //好處加速table的渲染,實現(xiàn)布局優(yōu)先
  }
 .left, .right { 
       display: table-cell;
  }
  .left{ width:100px; padding-right:20px; }

**4扔枫、flex **

flex:<'flex-grow'>||<'flex-shirink'> || <'flex-basis'>

 .parent{ 
      display: flex ; 
  }
 .left { 
       width: 100px;
       margin-right: 20px;
  }
  .right{ flex: 1 ; } //等價于=flex:1 1 0; 增長因子和收縮因子都為1汛聚,基礎(chǔ)寬度為0,那么剩余寬度都分配給right

缺點: CSS3 兼容性。根據(jù)內(nèi)容判斷短荐,性能會有問題倚舀,做小范圍布局叹哭,不適合大范圍布局。

布局 - 不定寬 + 自適應(yīng)


不定寬+自適應(yīng)

**1痕貌、float + overflow **

  .left{ 
       float: left;
       width: 200px;
       margin-right: 20px;
  }
  .right{ overflow: hidden; //觸發(fā)BFC }
效果

**2风罩、table **

 .parent{ 
      display:table; 
      width: 100%;
  }
 .left, .right { 
       display: table-cell;
  }
  .left{ 
       width:0.1%;  //寫的夠小就行,不寫1px的原因是IE8會有問題
       padding-right:20px; 
   }
  .left p{ width : 200px;}  //用內(nèi)部元素撐開舵稠,寬度可以不定

兼容性:IE8+

3超升、flex 同上,強大哺徊,主要問題是兼容性問題

繼續(xù)延生:
三列不定寬 + 自適應(yīng) 與兩列的做法一樣

等分布局


HTML結(jié)構(gòu)

1室琢、float

 .parent{  margin-left :-20px; //為父元素增加20px寬度 }
 .column{
       float : left;
       width: 25%;
       padding-left : 20px;
       box-sizing : border-box;
  }
效果圖

缺點:結(jié)構(gòu)和樣式稍微有點耦合性

2、table

結(jié)構(gòu)
 .parent-fix{  margin-left :-20px; //為父元素增加20px寬度 }
 .parent{ 
      display : table;
      width : 100%;
      table-layout : fixed;
  }     
  .column{
       float : left;
       width: 25%;
       padding-left : 20px;
       box-sizing : border-box;
  }

3落追、fix

 .parent{ 
      display : flex;
  }     
  .column{
      flex: 1;
  }
  .column+.column{  margin-left: 20px;  } //選擇2盈滴,3,4 

等高需求


1轿钠、table

上面自適應(yīng)的table布局就具有登高的布局

2巢钓、flex
如上面自適應(yīng)的例子,flex 天然等高

3疗垛、float

float
 .parent{  overflow : hidden; }
 .left, .right{
       padding-bottom : 9999px;
       margin-bottom : -9999px;
  }

優(yōu)點是兼容性比較好
缺點是偽等高 不是正真意義上的登高

全屏布局


基本結(jié)構(gòu)

實現(xiàn)方案

  • position
  • flex

1竿报、 position

<style>
  html,body,.parent{
    height: 100%; 
    overflow: hidden;
  }
  .top, .left, .right, .bottom{
    position: absolute;
    border: 1px solid red;
  }
  .top{
    top: 0; left: 0; right: 0;
    height: 100px;
  }
  .left{ 
    top: 100px; left: 0; bottom: 50px;
    width: 200px;
  }
  .right{
    overflow: auto;
    top: 100px; left: 200px; bottom: 50px; right: 0;
  }
  .bottom{
    bottom: 0; left: 0; right: 0;
    height: 50px;
  }
  .right .inner{ min-height: 1000px; }

</style>

HTML:

<div class="parent">
    <div class="top">top</div>
    <div class="left">left</div>
    <div class="right">right
        <!-- 讓右側(cè)滾動起來 -->
        <div class="inner"></div>
    </div>
    <div class="bottom">bottom</div>
</div>
position全屏布局

2、 flex

<style>

  html,body,.parent{
    height: 100%;
    overflow: hidden;
  }
  div{ border: 1px solid blue;}
  .parent{display: flex; flex-direction:column;}
  .top{ height: 100px;}
  .bottom{height: 50px;}

  .middle{flex:1; display: flex;}
  .middle .left{ width: 200px;}
  .middle .right{ flex: 1; overflow: auto; }
  .middle .right .inner{ min-height: 1000px; }

</style>

HTML:

<div class="parent">
    <div class="top">top</div>
    <div class="middle">
        <div class="left">left</div>
        <div class="right">right
            <!-- 讓右側(cè)滾動起來 -->
            <div class="inner"></div>
        </div>
    </div>
    
    <div class="bottom">bottom</div>
</div>

flex IE9以下不支持

***Conclusion 總結(jié) ***

方案總結(jié)

響應(yīng)式布局


**1继谚、viewport **

<meta name="viewport" content="width=device-width
   , initial-scale=1.0      //縮放比
   , user-scalable=no "/>  //防止用戶手動縮放

**2烈菌、@media 媒體查詢 **

 @media screen and (max-width:320px){
      // 視窗寬度 <= 320px 
      .className{.....}
 }

 @media screen and (min-width:769px){
      // 視窗寬度 >= 769px 
      .className{.....}
 }

 @media screen and (min-width:769px) and (max-width:1000px)  {
      // 769px  <= 視窗寬度 <= 1000px
      .className{.....}
 }

頁面優(yōu)化


1、為什么要優(yōu)化花履?

  • 提升網(wǎng)頁響應(yīng)速度
  • 對搜索引擎芽世、屏幕閱讀器友好
  • 提高可讀性,可維護性

2诡壁、如何優(yōu)化济瓢?

  • 減少請求
  • 減少文件大小
  • 頁面性能
  • 可讀性,可維護性

3妹卿、減少請求

  • 圖片合并

  • CSS文件合并

    • 多個CSS文件合并為一個
    • 少量css樣式內(nèi)聯(lián)
    • 避免使用import的方式引入css 文件

4旺矾、減少文件大小

  • 減少圖片大小

    • 選擇合適的圖片格式
      -png
      -jpg
    • 壓縮圖片
      -ImageOptim
      -ImageAlpha
      -JPEGmini
      -...
  • CSS 值縮寫
    -margin
    -padding
    -border
    -border-radius
    -font
    -background

  • 省略值為0的單位及小數(shù)點前面的0

  • 顏色值最短表示
    -red
    -rgb(255,0,0)
    -rgba(0,0,0,.5)
    -#333

  • CSS選擇器合并

    .a,.b{ background:red ;}

  • 文件壓縮

    • YUI Compressor
    • cssmin
    • ....
  • 減少標簽的數(shù)量

  • 選擇器的長度

      <div class="m-nav">
      <ul>
          <li><a href="">導(dǎo)航一</a></li>
          <li><a href="">導(dǎo)航二</a></li>
          ...
      </ul>
      <div>...</div>
    

    </div>

     .m-nav ul li a:hover{ color : red; }
     應(yīng)該修改為:.m-nav a:hover{ color : red; }
    
  • 避免秏性能的屬性

    • expression

      .class{ width: expression(this.width>100? '100px' : 'auto');  }
      
    • filter

      .class{ filter: alpha(opacity=50); }
      
    • border-radius

    • box-shadow

    • gradients

  • 給圖片設(shè)置寬高, 盡量不要縮放

    <img src="xx.jpg" alt="alt" width="400px" height = "300px" >

頁面渲染時,圖片沒有下載完成夺克,如果不設(shè)置寬高或有縮放箕宙,當圖片下載完成,頁面就會有回流重繪铺纽,損耗時間柬帕。

  • 所有表現(xiàn)用css實現(xiàn)
范例
  • 可讀性,可維護性

    • 規(guī)范
    • 語義化
    • 盡量避免Hack
    • 模塊化頁面
    • 注釋

規(guī)范與模塊


規(guī)范

1、文件規(guī)范

文件規(guī)范
  • 文件分類

    • 通用類
    • 業(yè)務(wù)類
  • 文件的引入

    • 行內(nèi)樣式 不推薦并不表示不能用(表現(xiàn)與結(jié)構(gòu)分離)
    • 外聯(lián)引入
    • 內(nèi)聯(lián)引入
    • 避免在CSS中使用@import
  • 文件本身

    • 文件本身 如: 由 小寫字母陷寝、數(shù)字锅很、中劃線 組成
    • 編碼 UTF-8

2、注釋規(guī)范

注釋規(guī)范
  • 塊狀注釋
  • 單行注釋
  • 行內(nèi)注釋

3凤跑、命名規(guī)范

命名規(guī)范
  • 分類命名
demo

例如:
布局樣式用 g-
模塊樣式用 m-

改進demo
  • 命名格式
    -大小寫 建議:小寫
    -長度 權(quán)衡長度和可

  • 語義化命名

    • 以內(nèi)容語義命名
以內(nèi)容命名

建議用內(nèi)容語義命名

4爆安、書寫規(guī)范

  • 單行與多行
各有利弊

二選一 遵守之

  • 空格與分號

    • 縮進 2or4個
    • 規(guī)則內(nèi)空格
  • 分號

    • 保留最后一個屬性值的分號(建議保留,避免后面樣式添加帶來的問題)
  • Hack方式

    • 同意各瀏覽器的Hack方式
      IE6 : _property : value
      IE6/7 : *property : value

      /* IE7顯示#888仔引,IE6顯示#fff鹏控,其他瀏覽器顯示#000 */
      .m-list{ color:#000; *color:#888; _color:#fff; } //注意書寫順序

    • 不要濫用Hack

  • 值格式

    • color
    • url()

5、其他規(guī)范

  • 文檔聲明
  • 閉合
  • 屬性
  • 層級
  • 注釋
  • 大小寫

模塊化


** 1肤寝、什么是模塊化 **

  • 一系列相關(guān)聯(lián)的結(jié)構(gòu)組成的整體
  • 帶有一定語義而非表現(xiàn)

** 2、怎么做抖僵? **

  • 為模塊分類命名(如 .m-, .md-)
  • 以一個主選擇器開頭 ( 模塊根節(jié)點 )
  • 使用以主選擇器開頭的后代選擇器( 模塊子節(jié)點 )
模塊結(jié)構(gòu)
 /* 模塊1樣式 */
 模塊1{....}
 模塊1 子元素1{....}
 模塊1 子元素2{....}

 /* 模塊2樣式 */
 模塊2{....}
 模塊2 子元素2{....}
 模塊2 子元素2{....}

** 3鲤看、怎么做?- case **

<!-- NAV MODULE -->
<div class="m-nav">
    <ul>
        <li class="z-crt"><a href="">index</a></li>
        <li><a href="#">link1</a></li>
        ...
    </ul>
</div>
<!-- /NAV MODULE -->

// 樣式

/* 導(dǎo)航模塊 */
.m-nav{} /* 模塊容器 */
.m-nav li, .m-nav a{}
.m-nav li{}
.m-nav a{}
.m-nav .z-crt a{} /* 交互狀態(tài)變化 */

模塊的擴展:

<!-- NAV-1 MODULE -->
<div class="m-nav m-nav-1">
    <ul>
        <li class="z-crt"><a href="">index</a></li>
        <li><a href="#">link1</a></li>
        ...
    </ul>
</div>
<!-- /NAV-1 MODULE -->
樣式擴展

** 4耍群、為什么要模塊化义桂? **

  • 利于多人協(xié)同開發(fā)
  • 便于擴展和重用
  • 可讀性、可維護性好
模塊化
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蹈垢,一起剝皮案震驚了整個濱河市慷吊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌曹抬,老刑警劉巖溉瓶,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谤民,居然都是意外死亡堰酿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門张足,熙熙樓的掌柜王于貴愁眉苦臉地迎上來触创,“玉大人,你說我怎么就攤上這事为牍『甙螅” “怎么了?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵碉咆,是天一觀的道長抖韩。 經(jīng)常有香客問我,道長疫铜,這世上最難降的妖魔是什么帽蝶? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上励稳,老公的妹妹穿的比我還像新娘佃乘。我一直安慰自己,他們只是感情好驹尼,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布趣避。 她就那樣靜靜地躺著,像睡著了一般新翎。 火紅的嫁衣襯著肌膚如雪程帕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天地啰,我揣著相機與錄音愁拭,去河邊找鬼。 笑死亏吝,一個胖子當著我的面吹牛岭埠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蔚鸥,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼惜论,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了止喷?” 一聲冷哼從身側(cè)響起馆类,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弹谁,沒想到半個月后乾巧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡预愤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年卧抗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鳖粟。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡社裆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出向图,到底是詐尸還是另有隱情泳秀,我是刑警寧澤,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布榄攀,位于F島的核電站嗜傅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏檩赢。R本人自食惡果不足惜吕嘀,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧偶房,春花似錦趁曼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掰盘,卻和暖如春摄悯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背愧捕。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工奢驯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人次绘。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓瘪阁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親断盛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案愉舔? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽?zāi)J的外補...
    _Yfling閱讀 13,762評論 1 92
  • 1. CSS Reset 瀏覽器對標簽進行樣式設(shè)置钢猛,不同瀏覽器默認樣式有差異 CSS Reset 全局定義樣式,通...
    hyt222閱讀 367評論 0 0
  • 007 29班 第6組 9月第3次 作業(yè)雨匯總: 總?cè)藬?shù):11 人 文章:11人 實交:10人 點評:11人 ...
    清晨光陰閱讀 271評論 0 0
  • 臨摹作品轩缤,來自《水彩自學(xué)記·花兒滿》命迈。畫了兩幅罌粟花,感覺本書非常適合毫無基礎(chǔ)的新手小白火的。 本人雙子座女生壶愤,興趣愛...
    米何閱讀 795評論 17 13
  • 星期天的上午,風(fēng)和日麗馏鹤,天空中飄著幾朵白云征椒。河面上波光粼粼,岸邊有一棵古老的柳樹湃累,在陽光下英姿煥發(fā)勃救。長滿綠葉的...
    淺淺的童話閱讀 300評論 0 0