html5+css3+jquery完成響應式布局


響應式布局,流體布局,自適應布局,靜態布局等等,這是移動設備的飛速發展,前端人員不得不跟上潮流的一個方向。實際上各種設備尺寸,分辨率大都不同,真的適應各種設備依舊是不現實的,首先是瀏覽器差異化,讓我們去hack,現在是終端問題,讓我展現出不同的設備不同的樣式,折騰來折騰去,終於我們走進了熱火朝天的響應式布局,自適應只能算是響應式布局的一個子集吧,對於流體個柵格后面會再次提到,有興趣可以關注。

首先講講實現原理吧,css3的媒體查詢功能的確幫了我們很大一個忙,@media query,它的出現也帶出了響應式布局的一連串東西,經典的是來自國外偉人的布局這里就不多闡述,我待會兒會提出一個實際的例子,本人測試過有效。@media query它可以檢查我們的設備的分辨率,但是我們往往是設置一個區間,這樣一個區間一個區間的去布局代碼,讓我們在手機端打開是一個效果,pc端一個效果,平板一種樣式。

注意一點,手機網站不等於在手機端打開網頁,這是兩個不同的概念。手機網站我一直是使用jquery mobile 實現的前端設計,話不多說看代碼:

html:

<div class="navBox">
    <div class="nav">
        <ul>
        <li class="current"><a href="#" target="_blank">首頁<small>home</small></a></li>
        <li><a href="#" target="_blank">電影<small>movie</small></a></li>
        <li><a href="#" target="_blank">電視劇<small>tv play</small></a></li>
        <li><a href="#" target="_blank">動漫<small>comic</small></a></li>
        <li><a href="#" target="_blank">綜藝<small>variety</small></a></li>
        <li><a href="#" target="_blank">紀錄片<small>documentary</small></a></li>
        <li><a href="#" target="_blank">公開課<small>public resourse</small></a></li>
        </ul>
        <!--match IE9,IE10 or not ie-->
        <!--[if (get IE 8) | ! (IE)]><!-->
        <h1 class="title"><a href="#">騰訊視頻</a><span class="btn"><img src="image/btn.png" width="34" height="34" alt=""/></span></h1>
        <!--<![endif]-->
    </div>

這里識別了一次ie,但是我並沒有設置其IE6-8的樣式,就測試玩玩。

css:

@charset "utf-8";
/* CSS Document */
*{
    padding:0px;
    margin:0px;
    border:0px;
}
.navBox {
    width:100%;
    height:40px;
    background:#333;
}
.nav{
    margin:0 auto;
    border:0px solid #ccc;
}
.nav ul {
    list-style:none;
    width:auto;
}
.nav ul li {
    height:40px;
    text-align:center;
}
.nav ul li a {
    display:block;
    font-size:16px;
    text-decoration:none;
    line-height:39px;
    color:rgba(103,204,247,1.00);
}
@media screen and (min-width: 1000px) {
.nav{
    width:1000px;
    height:40px;
}
.nav ul li {
    float:left;
    width:auto;
    min-width:120px;
    margin-left:10px;    
}
.nav ul li.current {
    background:#f60;
}
.nav ul li:hover a {
    background-color:#f60;
}
.nav ul li.current:hover a {
    color:#fff;
}
.nav .title {
    display:none;
}    
}
@media screen and (min-width: 640px) and (max-width: 1000px) {
.nav {
    width:auto;
    height:40px;
}
.nav ul li {
    float:left;
    width:14%;
    min-width:80px;
    font-size:12px;
    line-height:20px;
}
.nav ul li.current {
    background-color:#f60;
}
.nav ul li:hover a {
    background-color:#f60;
}
.nav ul li.current:hover a {
    color:#fff;
}
small {
    display:none;
}
.nav .title {
    display:none;
}    
}
@media screen and (max-width: 640px) {
    .navBox {
        height:auto;
        background:#444;
    }
    .nav {
        width:auto;
        height:auto;
    }
    .nav ul {
        position:relative;
        display:none;
    }
    .nav ul li {
        width:100%;
        min-width:100px;
        background:#333;
    }
    .nav ul li a:active,
    .nav ul li a:hover {
        background-color:#f60;
        transition:all ease-in 0.3s;
    }
    .nav ul li.current{
        background-color:#f60;
    }
    .nav .title {
        position:relative;
        width:100%;
        height:40px;
        border-top:1px solid #444;
        background:#333;
        text-align:center;
        letter-spacing:1px;
        font-size:24px;
        line-height:40px;
    }
    .nav .title a {
        color:#f60;
        text-decoration:none;
    }
    .nav .title .btn {
        position:absolute;
        right:10px;
        top:0px;
        width:34px;
        cursor:pointer;
    }
    }

我把屏幕區間設置成三個不同的區間,@media screen and (min-width: 1000px){//放置像素1000+屏幕的css樣式渲染網頁,這里是做的導航菜單}

@media screen and (min-width: 640px) and (max-width: 1000px){//這里放置屏幕像素640到1000的css樣式}

@media screen and (max-width: 400px) {//這里放置小於等於640像素的樣式}

三個區間可以按照你的興趣或者要求設置成不同的樣式,不過大體樣式建議相同,不然用戶一打開了發現傻缺了,咋個不是這個網站了哇,於是果斷關閉那就尷尬了。

jquery代碼:

<script type="text/javascript">
$(document).ready(function (){
    $(".btn").on("click",function(){
        $(".nav").find("ul").slideToggle(400);
        });    
})
</script>

腳本代碼很簡單了,我就簡單不去分辨他在那個區間了,因為他只有在屏幕像素小於640像素的時候才會出現並且被看到,其他的情況我都將其display隱藏了,完成這一步就可以看到我點擊旁邊的縮放標簽彈出UL標簽,下滑上拉的效果,總體來說還是非常簡單的,下面附上三張對應不同尺寸的效果圖。

像素位於1000+的時候:

像素位於640到1000時:

像素小於640時:

點擊下拉收起:

就完成了這次的導航響應式布局操作,后面還會分享更多內容,在這里我個人覺得dwcc2015+版本的軟件對於前端來說有一定的好處,就是可以調整屏幕像素進行布局,當然了其中的bootstrap組件也可以完成相應的內容啦,而且還有精致的魔板提供給你,當然了純屬個人愛好,有興趣的朋友可以下載去玩玩。

后面我還會分享更多,包括html5的canvas動畫,和transform的關鍵幀動畫,以實際例子來分享吧,也是自己在用的比如什么點水動畫,地圖效果。

新人一枚希望和大家一起學習交流啦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM