響應式網站設計三方面的代碼編寫方法
如今,PC、平板、智能手機等多種屏幕的適配是網站必須做到的,讓你的網站變成響應式就非常有必要,這里向你展示如何通過3個簡單的步驟輕松地使網站變成響應式。
1 – 布局
當創建一個響應式網站,或讓現有的網站變成響應式的,首先要關注的元素的布局。我在建立響應式的網站,總是先創建一個非響應的布局,頁面寬度固定大小。如果非響應版本完成得非常不錯,我再添加媒體查詢(Media Queries)和響應式代碼。這種操作方式更容易實現響應式特性,在同一時間專注于一個任務。
當你已經完成了無響應的網站,做的第一件事是在你的 HTML 頁面,粘貼下面的代碼到<head>和</head>標簽之間。這將設置屏幕按1:1的尺寸顯示,在 iPhone 和其他智能手機的瀏覽器提供網站全視圖瀏覽,并禁止用戶縮放頁面。
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="HandheldFriendly" content="true">
現在是時候添加一些媒體查詢了。根據 W3C 網站,媒體查詢由媒體類型和零個或多個媒體查詢的條件表達式組成。通過使用媒體查詢,外觀呈現可以針對特定范圍內的輸出設備,而不需要改變內容本身。換句話說,媒體查詢讓您的網站在各種各種顯示器上看起來都很好,從小的智能手機到大的電腦屏幕等等。
媒體查詢取決于你的網站布局,所以對我來說為您提供一個現成可以使用的代碼片段有點困難。但是,下面的代碼對于大多數網站都是一個很好的起點。在這個例子中,#primary 是主要內容區域,#secondary 是側欄。
從代碼中你可以看到,我定義了兩種規格:首先有一個最大寬度為1060px,為平板電腦優化的橫向顯示。#primary 占在其父容器寬度的67%,#senondary 占30%,再加上3%的左外邊距。第二個規格是用于平板電腦和更小的屏幕尺寸。
由于智能手機的屏幕尺寸小,我決定給 #primary 設置100%的寬度,#secondary 也設置100%的寬度,他將在 #primary 下面。 正如我已經說過的,你可能必須要對這段代碼位進行修改才能適應您的網站的具體需求。
/* Tablet Landscape */
@media screen and (max-width: 1060px) {
#primary { width:67%; }
#secondary { width:30%; margin-left:3%;}
}
/* Tabled Portrait */
@media screen and (max-width: 768px) {
#primary { width:100%; }
#secondary { width:100%; margin:0; border:none; }
}
完成以后,讓我們看看你的布局是如何響應的。
2 、媒體
一個響應式的布局是實現響應網站的第一步。現在,讓我們把注意力集中在另外一個現代化網站非常重要的方面:媒體,如視頻或圖像。下面的CSS代碼將確保您的圖像將永遠不會大于他們的父容器,代碼非常簡單,適用于大多數網站。請注意,IE6等舊的瀏覽器不支持 max-width 指令。
img { max-width: 100%; }
雖然上述技術是有效的,有時你可能需要有更多的圖像控制權,例如根據客戶端的顯示大小,顯示不同的圖像。
這是由Nicolas Gallagher發明的好方法。讓我們看看HTML:
<img src="image.jpg" data-src-600px="image-600px.jpg" data-src-800px="image-800px.jpg" alt="">
正如你可以看到,我們使用 data-*屬性來存儲替換圖像的URL。現在,讓我們使用強大的CSS3來為匹配min-device-width條件的媒體指定替換圖像:
@media (min-device-width:600px) {
img[data-src-600px] {
content: attr(data-src-600px, url);
}
}
@media (min-device-width:800px) {
img[data-src-800px] {
content: attr(data-src-800px, url);
}
}
令人印象深刻,是不是?現在,讓我們來看看另一個在今天的網站中非常重要的媒體——視頻。由于大多數網站使用的視頻來自第三方網站,我決定把重點放在Nick La的彈性視頻技術,這種技術可讓您嵌入的響應式的視頻。
HTML:
<div class="video-container">
<iframe src="http://player.vimeo.com/video/6284199?title=0&byline=0&portrait=0" width="800" height="450" frameborder="0"></iframe>
</div>
CSS:
.video-container {
position: relative;
padding-bottom: 56.25%;
padding-top: 30px;
height: 0;
overflow: hidden;
}
.video-container iframe,
.video-container object,
.video-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
在 你的網站上應用了這些代碼后,嵌入的視頻也是響應式的了。