佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > HTML利用九宮格原理進(jìn)行網(wǎng)頁布局

HTML利用九宮格原理進(jìn)行網(wǎng)頁布局

熱門標(biāo)簽:百度競價點擊價格的計算公式 智能手機(jī) 使用U盤裝系統(tǒng) 檢查注冊表項 阿里云 硅谷的囚徒呼叫中心 美圖手機(jī) 網(wǎng)站建設(shè)

前言

說到九宮格是不是想到了九宮格火鍋那(O(∩_∩)O哈哈~)。其實九宮格布局在各大網(wǎng)站基本都有應(yīng)用,當(dāng)然這里的九宮格是泛指(O(∩_∩)O哈哈)。比如小米商城局部布局如下:


 

不難發(fā)現(xiàn),一些電商平臺的布局基本上大同小異,最普遍的還是這種九宮格布局。當(dāng)然通過CSS也可以對其單獨設(shè)置定位,但是數(shù)據(jù)量小還好說,如果數(shù)據(jù)量多起來,計算麻煩不說,還有可能影響布局。下面我們來說一下九宮格布局的原理。

原理(小白也能看懂)


 

上圖是一個九宮格示意圖,現(xiàn)在我們把它想象到一個網(wǎng)頁中(想象不到就看上圖圖片~~),在網(wǎng)頁中這個布局由最外層綠色的大的div標(biāo)簽包裹,在綠色的div標(biāo)簽中有許多藍(lán)色的小的div標(biāo)簽作為綠色div標(biāo)簽的子級元素組成,這樣簡單的嵌套就完成了。由于我們的目標(biāo)元素是藍(lán)色的小div,那么我們無可避免的要對其設(shè)置盒子大小,以及外邊距等等。但是我們操作的對象就是盒子的大小+外邊距(也就是上圖中紅色框選的區(qū)域)。
 

具體流程如下:

我們先獲取到藍(lán)盒子以及其周圍整體的大小,假設(shè)上圖紅框的大小是200px * 200px

這些盒子就要牽扯到絕對定位和相對定位:綠色的盒子是相對定位,里面的藍(lán)盒子是絕對定位(即子絕父相)如果不明白那么請訪問CSS定位子絕父相

我們想象把上面的九宮格放進(jìn) [3][3] 的二維數(shù)組中。此時第一個方框位于數(shù)組的 [0] [0] 位置,他的位置在綠色的div中就是(0×200px,0×200px),即top = 0px,left = 0px;其右面方框在二維數(shù)組的位置是 [0][1](0×200px,1×200px)即top = 0px;,left = 200px;其下面方框在二維數(shù)組的位置是 [1][0](1×200px,0×200px)即top = 200px,left = 0px。以此類推就可以都得到所有子級元素的位置了。

代碼實現(xiàn)

先看效果截圖
 


 

在我點擊上方按鈕時可以實現(xiàn)不同列數(shù)的展現(xiàn)。
以下是JS代碼

 

window.onload = function () {
//    實現(xiàn)九宮格
    var btns  = $('.btnall button');//獲取所有的按鈕
    var photos = $('.photoall div.photo');//獲取所有的子塊
    //實現(xiàn)九宮格具體帶參方法,allcols代表想要的列數(shù)。
    function Event(allcols){
        //盒子的寬長和外邊距
        var w = 250, h = 390, margin = 10;
        for(var i = 0; i < photos.length; i++){
        	//方法的核心
            var row = parseInt(i / allcols);
            var col = parseInt(i % allcols);
            //具體位置的運行
            var top = row * (h + margin) + 'px';
            var left = col * (w + margin) + 'px';
            //設(shè)置位置
            photos[i].style.position = 'absolute';
            photos[i].style.left = left;
            photos[i].style.top = top;
        }
    }
    //為各個按鈕設(shè)置監(jiān)聽事件
    btns[0].onclick = function (){
      	Event(3);
    };
    btns[1].onclick = function (){
        Event(4);
    };
    btns[2].onclick = function (){
        Event(5);
    };
}

到此這篇關(guān)于HTML利用九宮格原理進(jìn)行網(wǎng)頁布局的文章就介紹到這了,更多相關(guān)HTML九宮格布局內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

標(biāo)簽:煙臺 山南 湘潭 通遼 黃山 湖北 懷化 賀州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML利用九宮格原理進(jìn)行網(wǎng)頁布局》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    旌德县| 晋城| 莱州市| 郎溪县| 孟州市| 甘洛县| 仙桃市| 武安市| 靖安县| 库伦旗| 扶风县| 中西区| 静宁县| 陵水| 宁波市| 当阳市| 日土县| 曲水县| 灵石县| 鸡泽县| 柏乡县| 修武县| 涿鹿县| 平湖市| 芮城县| 内丘县| 乐都县| 平谷区| 海丰县| 中西区| 秀山| 漾濞| 昌都县| 丹巴县| 云阳县| 武隆县| 南充市| 雷山县| 且末县| 武平县| 海兴县|