響應(yīng)式網(wǎng)站設(shè)計(jì)

隨著設(shè)備種類的增多,網(wǎng)站設(shè)計(jì)是否能響應(yīng)式地根據(jù)頁(yè)面大小進(jìn)行適配變得越來(lái)越重要。下面是在進(jìn)行響應(yīng)式設(shè)計(jì)過(guò)程中需要注意的幾個(gè)點(diǎn):

設(shè)置viewport

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

圖片溢出問(wèn)題

假設(shè)設(shè)備的寬度為1000px, 而圖片的大小為1200px, 那么勢(shì)必會(huì)產(chǎn)生橫向滾動(dòng)條掠拳,這是很不友好的,解決方案是:

  # 為元素添加max-width=100%
  img, embed, object, video {
    max-width: 100%;
  }

從小屏幕設(shè)備適應(yīng)到大屏幕設(shè)備

一開始就從小屏幕設(shè)備適配起纸肉,有以下好處:

  • 將關(guān)鍵信息放在用戶容易看見的地方溺欧,從小屏幕做起
  • 可以知道主要風(fēng)格和布局是否能兼容任何設(shè)備
  • 小屏幕設(shè)備對(duì)性能要求很高,因此可以從一開始就關(guān)注性能問(wèn)題

確保點(diǎn)擊的區(qū)域夠大

用戶在手機(jī)等設(shè)備上操作時(shí)柏肪,如果按鈕大小太小姐刁,且按鈕之間的間距也很小的話,容易產(chǎn)生誤操作烦味,因此要確保點(diǎn)擊的區(qū)域至少在40px左右聂使,如加上:

padding: 1.5em;

合理使用min-width和max-width

min-width和max-width在媒體查詢中的作用巨大

根據(jù)網(wǎng)站內(nèi)容合理選擇斷點(diǎn)

即各個(gè)設(shè)備尺寸使用不同的布局方式

使用彈性布局flex

在響應(yīng)式設(shè)計(jì)中壁拉,常用的flex屬性為flex-wraporder

常見的響應(yīng)式布局

  1. column drop(掉落列模型)
column drop模型.png
  • 小屏幕設(shè)備布局核心代碼:
.container {
  display: flex;
  flex-wrap: wrap;
}
.box {
  width: 100%;
}
  • 中屏幕設(shè)備布局核心代碼
@media screen and (min-width: 600px) {
  .dark {
     width: 25%;
  }
  . blue {
    width: 75%;
  }
}
  • 大屏幕設(shè)備布局核心代碼
@media screen and (min-width: 601px) {
  .dark, .green {
     width: 20%;
  }
  . blue {
    width: 60%;
  }
}
  1. mostly fluid (大體流動(dòng)模型)
    mostly fluid 跟 column drop 很類似,只是在column drop的基礎(chǔ)上柏靶,在最大尺寸時(shí)兩邊增加margin


    mostly fluid模型.png
  • 大屏幕時(shí)的核心代碼如下:
.container {
  width: 700px;
  margin-left: auto;
  margin-right: auto;
}
  1. layout shifter(布局切換器)
    layout shifter跟column drop也很類似弃理,不同于column drop, layout shifter增加了order來(lái)調(diào)整div的順序


    layout shifter模型.png
  • 大屏幕時(shí)的核心代碼如下:
  @media sceen and (min-width: 600px) {
    .dark {
      width: 25%;
      order: 1;
    }
    .container 2 {
      width: 50%;
    }
    .red {
       width: 25%;
       order: -1;
    }
  }
  1. off canvas (畫布之外模型)
    off canvas模型較為常見,先在小屏幕中隱藏導(dǎo)航欄等使用頻率不高的組件屎蜓,然后通過(guò)點(diǎn)擊某個(gè)圖標(biāo)才顯示導(dǎo)航欄


    off canvas模型.png
  • 小屏幕中的核心實(shí)現(xiàn)代碼如下:
.nav {
  width: 300px;
  height: 100%;
  position: absolute;
  transform: translate(-300px, 0);
  transition: transform 0.3s ease;
}
.nav.open {
  transform: translate(0, 0);
}
  • 屏幕變大時(shí)顯示nav的操作:
@media screen and (min-width: 600px) {
  .nav {
    position: relative;
    transform: translate(0, 0);
  }
  body {
    display: flex;
    flex-flow: row nowrap;
  }
  .main {
    width: auto;
    flex-grow: 1;
  }
}
  • 切換的js代碼
menu.addEventListener('click', function(e) {
  drawer.classList.toggle('open');
  e.stopPropagation();
});

響應(yīng)式表格

雖然表格布局已經(jīng)幾乎被我們摒棄掉了痘昌,但是還是有一些需求需要用到表格來(lái)展示數(shù)據(jù),比如籃球比賽的分?jǐn)?shù)等炬转,那么響應(yīng)式表格要怎么實(shí)現(xiàn)呢辆苔?

  1. 隱藏某些不重要的列,也就是設(shè)置為display: none(so easy, right?)
  2. 將縱向排列轉(zhuǎn)為橫向排列
    舉個(gè)例子:


    縱向排列表格.png
橫向排列表格.png

實(shí)現(xiàn)的核心代碼如下:

  • html結(jié)構(gòu):
<table>
      <thead>
        <tr>
          <th>Team</th>
          <th>1st</th>
          <th>2nd</th>
          <th>3rd</th>
          <th>4th</th>
          <th>5th</th>
          <th>6th</th>
          <th>7th</th>
          <th>8th</th>
          <th>9th</th>
          <th>Final</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td data-th="Team">Toronto</td>
          <td data-th="1st">0</td>
          <td data-th="2nd">0</td>
          <td data-th="3rd">0</td>
          <td data-th="4th">4</td>
          <td data-th="5th">0</td>
          <td data-th="6th">1</td>
          <td data-th="7th">0</td>
          <td data-th="8th">0</td>
          <td data-th="9th">0</td>
          <td data-th="Final">5</td>
        </tr>
        <tr>
          <td data-th="Team">San Francisco</td>
          <td data-th="1st">0</td>
          <td data-th="2nd">0</td>
          <td data-th="3rd">0</td>
          <td data-th="4th">4</td>
          <td data-th="5th">0</td>
          <td data-th="6th">0</td>
          <td data-th="7th">0</td>
          <td data-th="8th">0</td>
          <td data-th="9th">0</td>
          <td data-th="Final">4</td>
        </tr>
      </tbody>
  • css代碼:
 table {
        border: 1px solid #ddd;
      }
      tr:nth-child(odd) {
        background-color: #f9f9f9;
      }
      @media screen and (max-width: 500px) {
        # 在一行顯示
        table, thead, tbody, th, td, tr {
          display: block;
        }
        # 隱藏縱向表格的table header
        thead tr {
          position: absolute;
          top: -9999px;
          left: -9999px;
        }
        # 給橫向表格的table header騰空間
        td { 
          position: relative;
          padding-left: 50%; 
        }
        # 通過(guò)content添加橫向表格的內(nèi)容
        td:before { 
          position: absolute;
          left: 6px;
          content: attr(data-th);
          font-weight: bold;
        }
        td:first-of-type {
          font-weight: bold;
        }
      }
  1. 滾動(dòng)表格
    將表格放在一個(gè)div中扼劈,并設(shè)置div為
width: 100%;
overflow-x: auto;

字體

每行顯示45~90個(gè)字體字符驻啤,常見為65個(gè)字符

增加次要斷點(diǎn)

通過(guò)次要斷點(diǎn),對(duì)字體大小荐吵,圖標(biāo)大小等進(jìn)行優(yōu)化街佑,達(dá)到更好的顯示效果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捍靠,隨后出現(xiàn)的幾起案子沐旨,更是在濱河造成了極大的恐慌,老刑警劉巖榨婆,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磁携,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡良风,警方通過(guò)查閱死者的電腦和手機(jī)谊迄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)烟央,“玉大人统诺,你說(shuō)我怎么就攤上這事∫杉螅” “怎么了粮呢?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)钞艇。 經(jīng)常有香客問(wèn)我啄寡,道長(zhǎng),這世上最難降的妖魔是什么哩照? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任挺物,我火速辦了婚禮,結(jié)果婚禮上飘弧,老公的妹妹穿的比我還像新娘识藤。我一直安慰自己砚著,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布痴昧。 她就那樣靜靜地躺著赖草,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剪个。 梳的紋絲不亂的頭發(fā)上秧骑,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音扣囊,去河邊找鬼乎折。 笑死,一個(gè)胖子當(dāng)著我的面吹牛侵歇,可吹牛的內(nèi)容都是我干的骂澄。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼惕虑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼坟冲!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隐砸,沒(méi)想到半個(gè)月后照瘾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寻拂,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片紊遵。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖侥蒙,靈堂內(nèi)的尸體忽然破棺而出暗膜,到底是詐尸還是另有隱情,我是刑警寧澤鞭衩,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布学搜,位于F島的核電站,受9級(jí)特大地震影響醋旦,放射性物質(zhì)發(fā)生泄漏恒水。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一饲齐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咧最,春花似錦捂人、人聲如沸御雕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)酸纲。三九已至,卻和暖如春瑟匆,著一層夾襖步出監(jiān)牢的瞬間闽坡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工愁溜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疾嗅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓冕象,卻偏偏與公主長(zhǎng)得像代承,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子渐扮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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