1. 程式人生 > >web前端佈局技巧經驗總結

web前端佈局技巧經驗總結

【HTML】

1、標籤語義化

    除了div和span,使用 header、footer、section、article、h1~h5、ul、li、a、i、b 等語義化標籤。

2、使用emmet外掛


3、當某些元素不需要繫結滑鼠事件,在文件流裡不是很重要的話,可以使用 :before/:after 等偽元素


想要實現上圖的效果,只需要一個div就能搞定:

【html】

<div class="item-wrap"></div>

【css/scss】

.item {
  &-wrap {
    position: relative;
    width: 150px;
    min-height: 20px;
    margin: 10px 0 0;
    padding: 10px 30px 10px 10px;
    border: 1px solid #1dbf6e;
    border-radius: 3px;
    line-height: 20px;
    color: #666;
    font-size: 14px;
    &:after {
      content: '';
      position: absolute;
      top: 50%;
      right: 15px;
      display: block;
      width: 6px;
      height: 12px;
      border: 2px solid #1dbf6e;
      border-left: 0 none;
      border-top: 0 none;
      margin: -8px 0 0 0;
      transform: rotate(45deg);
    }
  }
}

4、標籤上屬性注意羅列順序:事件繫結、id、class、others

<div onclick="handleClick()" id="id-name" class="class-name" disabled title="title content"></div>

5、結構儘量精簡,減少層級,降低html解析的DOM樹複雜度

【css】

1、選擇器權重

    1)如果兩個選擇器作用在同一元素上,則權重高者生效;

    2)權重的級別根據選擇器被劃分為四個分類:行內樣式,id,類與屬性,以及元素;

    3)如果兩個選擇器權重值相同,則後面定義的CSS規則權重要更大,會取代前面的CSS規則;

    4)權重:行內樣式(1000)、id(100)、類/屬性/偽類(10)、元素(1);

2、樣式屬性編輯順序

    定位(position)、佈局(display、float)、尺寸、內/外邊距(padding、margin)、邊框(border)、背景(background)、文字樣式(color、font、text-align等)、過渡效果、動畫效果等。

3、樣式簡寫、同屬性合併成一句

    margin、padding、backgrond、font

    如下:

background-image:url(test1.jpg);
background-repeat:no-repeat;
background-attachment:scroll;
background-position:10px 20px;
background-size:50px 60px;
background-origin:content-box;
background-clip:padding-box;
background-color:#aaa;

    可合併寫成:

background:url(test1.jpg) no-repeat scroll 10px 20px/50px 60px content-box padding-box;

4、不濫用包含選擇符

    例: E F ;

    減少樣式樹形關聯,降低複雜度、便於樣式覆蓋。

5、類名命名規則

    1)關鍵詞以“-”連線;

    2)最多三個層級為宜,如“first-second-third”;

    3)關鍵字以常用易理解為主: wrap、head、contain、foot、box、content、card、row、cell、text...

6、注重類名的名稱空間

    模組細分,同一個模組類名以同一名稱空間開頭。

7、使用 sass、less 等樣式編譯器,提高效率

@color-light: #d2dee2;
@color-primary: #3286ff;
@color-deep: #3ea4cc;
@color-dark: #317c9a;

.index-main-navcell {
	display: inline-block;
	height: 30px;
	padding: 0 15px;
	border-bottom: 2px solid #fff;
	line-height: 30px;
	text-align: center;
	font-weight: bold;
	font-size: 14px;
	cursor: pointer;
	&:hover,
	&.selected,
	&.selected:active {
		color: @color-primary;
	}
	&:active {
		color: @color-deep;
	}
	&.selected {
		border-bottom-color: @color-primary;
	}
}
.index-main-info {
	width: 500px;
	padding: 180px 0;
	margin: 0 auto;
	color: #999;
	& > p {
		font-size: 16px;
		line-height: 30px;
		color: #666;
		& > a {
			color: @color-orange;
		}
	}
}

8、在都能實現的情況下,margin優於position使用,padding優於margin使用

9、充分利用“+”選擇器

【html】

    <ul class="list-wrap">
      <li class="list-cell"></li>
      <li class="list-cell"></li>
      <li class="list-cell"></li>
      <li class="list-cell"></li>
      <li class="list-cell"></li>
      <li class="list-cell"></li>
    </ul>

【css/scss】

.list {
  &-wrap {
    width: 100px;
    margin-top: 20px;
  }
  &-cell {
    height: 30px;
    background: #ffae47;
    & + & {
      border-top: 3px solid #8b9a7e;
    }
  }
}

【效果】


10、行內元素存在間隙

    先看個例子:

    <div class="row-wrap">
      <span>#1</span>
      <span>#2</span>
      <span>#3</span>
      <span>#4</span>
      <span>#5</span>
    </div>
.row {
  &-wrap {
    width: 100px;
    margin: 20px 0 0;
    background: #666;
    & > span {
      background: #ffae47;
      color: #666;
    }
  }
}
【效果】


    效果圖中可以看到,不做任何處理的span間存在著一道小小的空隙,且無法通過設定margin: 0;消除。

    該情況可以設定元素浮動消除空隙,但是會使元素脫離文件流,下面是一種使元素保持在文件流中又能消除空隙的方法:

.row {
  &-wrap {
    width: 100px;
    margin: 20px 0 0;
    background: #666;
    font-size: 0;
    & > span {
      background: #ffae47;
      color: #666;
      font-size: 12px;
    }
  }
}

【效果】


    行內元素間的空格回車等會造成行內元素的空隙,除了可以利用 font-size: 0 消除,還可以如下處理:

    <div class="row-wrap">
      <span>#1</span><span>#2</span><span>#3</span><span>#4</span><span>#5</span>
    </div>
該方法如果遇到比較複雜的文件結構就不適合了,會看起來不夠友好。

【佈局】

1、雙欄佈局

    1)撐滿window,隨瀏覽器大小變化而變化

        <方案一>

    <div class="layout-wrap">
      <div class="layout-head">
        這是頂部的一段文字這是頂部的一段文字這是頂部的一段文字這是頂部的一段文字這是頂部的一段文字這是頂部的一段文字這是頂部的一段文字
      </div>
      <div class="layout-left">
        這是左側欄的一段文字這是左側欄的一段文字這是左側欄的一段文字這是左側欄的一段文字這是左側欄的一段文字這是左側欄的一段文字
      </div>
      <div class="layout-right">
        這是右側自適應的一段文字這是右側自適應的一段文字這是右側自適應的一段文字這是右側自適應的一段文字這是右側自適應的一段文字
      </div>
    </div>
.layout {
  &-wrap {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    color: #222;
    font-size: 30px;
  }
  &-head {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 100px;
    background: #666;
    overflow: auto;
  }
  &-left {
    position: absolute;
    top: 100px;
    left: 0;
    bottom: 0;
    width: 200px;
    background: #eee;
    overflow: auto;
  }
  &-right {
    position: absolute;
    top: 100px;
    left: 200px;
    right: 0;
    bottom: 0;
    background: #999;
    overflow: auto;
  }
}

        使用position佈局能夠簡單快速的達到我們想要的效果,相容性好,但是整個頁面脫離了文件流。

        <方案二>

    <div class="layout-wrap">
      <div class="layout-head">
        這是頂部的一段文字這是頂部的一段文字這是頂部的一段文字這是頂部的一段文字這是頂部的一段文字這是頂部的一段文字這是頂部的一段文字
      </div>
      <div class="layout-body">
        <div class="layout-left">
          這是左側欄的一段文字這是左側欄的一段文字這是左側欄的一段文字這是左側欄的一段文字這是左側欄的一段文字這是左側欄的一段文字
        </div>
        <div class="layout-right">
          這是右側自適應的一段文字這是右側自適應的一段文字這是右側自適應的一段文字這是右側自適應的一段文字這是右側自適應的一段文字
        </div>
      </div>
    </div>

.layout {
  &-wrap {
    height: 100%;
  }
  &-head {
    height: 100px;
    background: #666;
    font-size: 30px;
  }
  &-body {
    height: calc(100% - 100px);
    background: #eee;
    font-size: 0;
  }
  &-left {
    display: inline-block;
    width: 40%;
    height: 100%;
    background: #eee;
    font-size: 30px;
    overflow: auto;
  }
  &-right {
    display: inline-block;
    width: 60%;
    height: 100%;
    background: #999;
    font-size: 30px;
    overflow: auto;
  }
}

        使用行內元素佈局也同樣可以達到這樣的效果,不過需要在較高版本的瀏覽器執行。

        <方案三>

  &-left {
    float: left;
    width: 40%;
    height: 100%;
    background: #eee;
    font-size: 30px;
    overflow: auto;
  }
  &-right {
    width: 60%;
    height: 100%;
    margin-left: 40%;
    background: #999;
    font-size: 30px;
    overflow: auto;
  }

            通過float佈局同樣可以實現,在方案二的基礎上調整一下左右兩個div的樣式即可。

【效果】


    2)文件高度不定,頁面可滾動

.layout {
  &-wrap {
    min-width: 1200px;
  }
  &-head {
    height: 100px;
    background: #666;
  }
  &-body {
    width: 1200px;
    min-height: 500px;
    margin: 10px auto;
    background: #eee;
  }
}

        這種佈局比較常見,也較為簡單,就不作擴充套件了。

2、移動端頁面佈局

    1)常見佈局(導航欄+內容+選單欄)

        <方案一>

    <div class="layout-wrap">
      <div class="layout-head">
        這是頂部
      </div>
      <div class="layout-body">
        主體內容
      </div>
      <div class="layout-foot">
        底部
      </div>
    </div>
.layout {
  &-head {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4rem;
    background: #fa0;
  }
  &-body {
    position: absolute;
    top: 4rem;
    left: 0;
    right: 0;
    bottom: 50px;
    background: #eee;
  }
  &-foot {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 50px;
    background: #ffa319;
  }
}

        這是利用position絕對定位的方案。

        <方案二>

.layout {
  &-wrap {
    height: 100%;
  }
  &-head {
    height: 4rem;
    background: #fa0;
    z-index: 1;
  }
  &-body {
    box-sizing: border-box;
    height: 100%;
    margin-top: -4rem;
    padding: 4rem 0 50px;
    background: #eee;
  }
  &-foot {
    height: 50px;
    margin-top: -50px;
    background: #ffa319;
  }
}

        這是利用padding和margin做的佈局,不脫離文件流,瀏覽器相容性較好。

        <方案三>

.layout {
  &-wrap {
    height: 100%;
  }
  &-head {
    height: 4rem;
    background: #fa0;
  }
  &-body {
    height: calc(100% - 4rem - 50px);
    background: #eee;
  }
  &-foot {
    height: 50px;
    background: #ffa319;
  }
}
        這個也是不脫離文件流的佈局,利用了calc()屬性,寫起來較簡單。

    2)按比例展示圖片

.layout {
  &-img {
    &-wrap {
      position: relative;
      &:before {
        content: '';
        display: block;
        padding-top: 56%;
      }
      & > img {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
      }
    }
  }
}

相關推薦

web前端佈局技巧經驗總結

【HTML】1、標籤語義化    除了div和span,使用 header、footer、section、article、h1~h5、ul、li、a、i、b 等語義化標籤。2、使用emmet外掛3、當某些元素不需要繫結滑鼠事件,在文件流裡不是很重要的話,可以使用 :befor

前端面試官經驗總結 | 前端面試小技巧

原文連結:https://blog.csdn.net/fifteen718/article/details/84184343 歷

網頁web前端學習技巧

編程 yahoo 語言 http 背景 帶來 組織 需要 觸發 1. 寫js效果時一定要註意先分析好效果的行為,盡量用最簡單通用性的代碼。分析步驟可以是1.先把要實現的功能一步一步的寫在紙上(即自然語言)2.再根據自然語言翻譯成機器語言,用jquery寫的代碼一定要註意代碼

web前端性能優化總結

函數定義 network 繼承 執行 strong bigpipe view pan odin 1em=16px(但不完全是) em會繼承父元素的字體大小。ie 部分瀏覽器不支持em。 rem繼承根元素的字體大小html。 px和rem vue裏面用jq只能在mounte

Web API介面設計經驗總結

在Web API介面的開發過程中,我們可能會碰到各種各樣的問題,我在前面兩篇隨筆《Web API應用架構在Winform混合框架中的應用(1)》、《Web API應用架構在Winform混合框架中的應用(2)--自定義異常結果的處理》也進行了總的介紹,在經過我的大量模組實踐併成功執行後,總結了這篇隨

web前端工程師具備經驗和知識點(持續更新中)

web前端工程師必備 1、瞭解 DNS 解析,充分利用 CDN,使用多個域名來完成資源的請求以縮短載入時間; 2、設定 HTTP Headers(Expires, Cache-Control, If-Modified-Since); 3、遵循 Steve Souders 給出的全部規

2018最新的web前端開發框架排行總結

如果你是一個前端開發人員,當你在開發新專案時,想必一定被人問過“你用的是什麼框架?”進而開展各種前端技術話題。但是對於初入門的前端小白來說,遇到這樣的問題估計會產生一系列的疑問“前端框架是什麼意思?前端框架有什麼用?前端框架有哪些... ” 簡單來說,前端框架就是已經搭

AD中PCB佈局技巧(經驗)

普通元器件的佈局原則 按照電路的流程安排各個電路單元的位置,使佈局便於訊號流通,並使訊號儘可能保持一致的流向。 這一條我體會很深,第一次做板子的時候,面對幾百個花花綠綠的元件,完全不知道該這麼去把它們組織都一起去,當時就奇怪憑什麼這個元件要這樣放,那個元件要那樣放。就是因為心裡沒有這條原則,原來自己佈局出來的

web前端開發技巧(HTML+CSS+Jquery)

HTML+CSS 1.css選擇器 1)偽元素:利用:after偽元素為標籤新增內容,比如:a:after{ content:“¥”}。 2)屬性選擇器,比如:input [ type=text ],用法和jquery的屬性選擇器類似。 3)組合選擇器,A,B 同時匹配兩

Web前端開發面試題總結

1、簡單介紹一下什麼是盒模型? 網頁上的每一個標籤都是一個盒子,每個盒子都有四個屬性: 內容(content):盒子裡面裝的東西,網頁中通常是指文字和圖片(盒子中間裝的東西); 填充(padding):內邊距,比如買東西時怕盒子裡面的東西損壞而新增的泡沫或者其它抗震的輔料(盒子裡裝的

2018年web前端經典面試題總結整理

對於很多同學來說,面試就是一個考驗,很多人技術上沒有任何問題,但是就是過補了面試那一關,那麼如何提升自己的面試機率呢?當然是瞭解一些面試題了,因為很多時候,一些我們忽略的小問題可能就是企業比較看重的,所以,今天給大家整理總結了一些面試題。希望可以對大家的面試有一定的幫助,可以讓大家更從容面對招聘者的考驗。

2018年web前端經典面試題總結,你能做對幾個?

對程式設計師小哥哥小姐姐來說,很多時候差的不是技術,卻過不了面試那一關。這時候我們就需要總結分析一下面試題目了,揣摩公司與hr的心理及需求,有時候我們忽略的小問題就是決定能不能拿到offer的重要因素,希望大家都可以找到自己心儀的工作,從容應對面試~ 1、webpack怎麼引入第三方的庫?

Web前端第一階段筆記總結(2018-8-14-2018-8-23)

【學習內容,目標】 理解什麼是web,什麼是前端,軟體架構分類,以及網站的分類 專案開發的流程(一個完整的專案,並不是一個人的頁面) 簡單使用PS中切片,裁剪,摳圖等功能 使用XMind梳理網站業務流程 使用Axure進行原型圖的設計,目的瞭解網頁的基本

前端project1-專案經驗總結

概覽專案簡介相關連結Part1-網頁框架+佈局Part2-Menu選單欄Part3-兩分欄佈局Part4-畫冊佈局+彈窗Part5-動畫按鈕Part6-總結專案簡介:做前端開發工作以來的第一個完整專案,用以總結記錄自己的學習過程,並整理出來,供自己和其它學習者一起學習、共同進

Web前端開發標準規範總結

Web前端作為開發團隊中不可或缺的一部分,需要按照相關規定進行合理編寫(一部分不良習慣可能給自己和他人造成不必要的麻煩)。不同公司不同團隊具有不同的規範和文件。下面是根據不同企業和團隊的要求進行全面詳細的整理結果。備註:實際開發請以本公司的規範為標準。 A.基本原則 符合web標準(UTF-

WEB前端開發技巧與注意事項

一、meta的使用 1、<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>   強制讓文

web前端佈局小練習

參考於 https://blog.csdn.net/liushaozhuanyong/article/details/57407175以下為自己寫的程式碼(與原著者有所不同,或許是黑科技吧):<!DOCTYPE html> <html> <h

web前端佈局練手專案

仿北大首頁佈局(只關心佈局) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt

2015 阿里校招 Web前端開發 線上筆試總結

一個小時,11道題,多選加程式設計,主要分成三大塊的部分 1. 考察github,一道多選是問github的命令,一道是讓你填寫自己的github的個人網址; 2. 考察node.js,一道多選是問官方模組有哪些,一道是是考察用request去呼叫模組的時候,是怎麼排序的,

web前端優化10點總結

實際上,我們通過前臺web端的梳理和邏輯的優化(哪怕是一個小的處理細節)都可以提高我們的頁面響應速度,從而不斷改善使用者體驗和提升使用者價值。這裡主要有下面幾點分享:: 1, 對頁面內容按照優先順序進行