1. 經常使用解決方案javascript
所謂響應式開發,就是指在不一樣的系統,設備環境,不一樣的分辨率下,界面進行不一樣的響應和調整適配html5
咱們簡單理解爲,在不一樣的瀏覽器上,不一樣分辨率的顯示器上,咱們的網頁能進行自適應響應調整,使得最後的界面仍是能達到設計師高保真圖的效果。 在PC端開發中,常常會出現系統得兼容IE8的要求,這次咱們討論的是在這種需求下,如何達到所謂的響應式開發的要求。 經常使用的響應式開發解決方案(針對兼容IE8的大前提下)有:java
1600 * 900下的天貓登陸頁截圖 jquery
// 此方法兼容IE8
// 分辨率大於等於1680,大部分爲1920的狀況下,調用此css
<script>
if(window.screen.width >= 1680) {
document.write('<link rel="stylesheet" href="../../css/oc_login_1920.css">');
}
// 分辨率小於等於1600的狀況下,調用此css
else {
document.write('<link rel="stylesheet" href="../../css/oc_login_1600.css">');
}
</script>
複製代碼
1920 * 1080下的登錄頁截圖 git
@media screen and (max-width: 1600px) {
html {
color: brown;
font-size: 100%;
}
}
@media screen and (min-width: 1601px) {
html {
color: blueviolet;
font-size: 200%;
}
}
//rem
.box {
margin: 2rem;
}
//em
.box {
margin: 2em;
}
複製代碼
1920 * 1080下的巨醜Demo頁截圖 github
所謂媒體查詢,就是針對不一樣的屏幕尺寸設置不一樣的樣式,在響應式設計中,是很是有用的。web
使用@media,在重置瀏覽器大小的過程當中,頁面會根據瀏覽器的寬度和高度從新渲染頁面。 一般,咱們只用到它的min-width和max-width屬性,這裏,咱們也是。 可是惋惜的是IE9纔開始支持@media,其餘主流瀏覽器早已支持,如何在IE8中也能使用@media呢?
hack科技之respond.js 下載地址:github.com/scottjehl/R… respond.js使IE6-8可以支持@media的min-width和max-width屬性 使用需知:
工做原理:
測試Demo:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5-響應式佈局--respond.js-Sakura</title>
<link rel="stylesheet" href="test.css" charset="utf-8">
<script src="js/respond.min.js"></script>
</head>
<body>
<div>
使IE6~8支持響應式佈局——Sakura
</div>
</body>
</html>
複製代碼
CSS文件:
html,
body {
height: 100%;
}
@media only screen and (min-width: 480px) {
body {
background: blanchedalmond;
}
}
@media only screen and (min-width: 640px) and (max-width: 1024px) {
body {
background: gray;
}
}
@media screen and (min-width: 1024px) {
body {
background: coral;
}
}
複製代碼
舊瓶新酒的window.screen.width 直接經過判斷window.screen.width的大小,來執行不一樣的樣式代碼。此方法也兼容IE8
//此方法兼容IE8
// 分辨率大於等於1680,大部分爲1920的狀況下,調用此css
if(window.screen.width >= 1680) {
document.write('<link rel="stylesheet" href="../../css/oc_login_1920.css">');
}
// 分辨率小於等於1600的狀況下,調用此css
else {
document.write('<link rel="stylesheet" href="../../css/oc_login_1600.css">');
}
複製代碼
在前端開發中,咱們經常使用的長度單位有px,em,rem等,雖然都是相對單位,但因爲參照物不一樣,各自特性也不一樣。
既然rem這麼美好,IE8卻不能使用,這很難受啊!別慌,接下來咱們就來讓IE8也能兼容rem。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="remDemo.css">
<!--如下的css文件在IE8瀏覽器中會被rem.js忽略-->
<!--其餘瀏覽器中依舊會顯示,由於其餘瀏覽器支持rem!-->
<link rel="stylesheet" type="text/css" href="test.css" data-norem />
<script src="js/html5shiv.min.js"></script>
<script src="js/respond.min.js"></script>
<!-- <script src="js/jquery-1.8.3.min.js"></script>-->
</head>
<body>
<div class="box">
<p class="title">歡迎來到主界面
<p class="content">這裏是叮叮咚咚</p>
</p>
<ul>
<li>
<label>姓名</label>
<input type="text" class="name" />
</li>
<li>
<label>姓名</label>
<input type="text" class="password" />
</li>
</ul>
</div>
<script src="js/rem.min.js" type="text/javascript"></script>
</body>
</html>
複製代碼
test.css文件
html,
body {
height: 100%;
}
@media only screen and (min-width: 480px) {
body {
background: blanchedalmond;
}
}
@media only screen and (min-width: 640px) and (max-width: 1024px) {
body {
background: gray;
}
}
@media screen and (min-width: 1024px) {
body {
background: coral;
}
}
li label {
font-size: 2rem;
margin-left: 4rem;
}
複製代碼
remDemo.css文件
@media screen and (max-width: 1600px) {
html {
color: brown;
font-size: 200%;
}
}
@media screen and (min-width: 1601px) {
html {
color: blueviolet;
font-size: 400%;
}
}
.box {
margin: 2rem;
}
.title {
margin: 2rem;
font-size: 4rem;
}
.content {
//margin-top: 8rem;
font-size: 2rem;
}
input {
margin-top: 1rem;
}
複製代碼
19201080&&IE8下截圖
至此,關於兼容IE8的響應式開發已經所有結束了!撒花撒花撒花~
如圖小夥伴有疑問或者不知道那些js文件去哪裏下載(去github上!!!按名字搜索!),emmmm,實在沒辦法能夠留言或郵箱M我,(應該)第一時間將這些文件發回給小夥伴的!
【個人郵箱->】sakura_p@qq.com
技術開源,碼文不易,請尊重原創