溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2021-05-14 10:27:36 來(lái)源:億速云 閱讀:293 作者:小新 欄目:web開(kāi)發(fā)

這篇文章將為大家詳細(xì)講解有關(guān)HTML怎么利用九宮格原理進(jìn)行網(wǎng)頁(yè)布局,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

前言

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

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

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

原理(小白也能看懂)

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

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

具體流程如下:

我們先獲取到藍(lán)盒子以及其周?chē)w的大小,假設(shè)上圖紅框的大小是200px * 200px

這些盒子就要牽扯到絕對(duì)定位和相對(duì)定位:綠色的盒子是相對(duì)定位,里面的藍(lán)盒子是絕對(duì)定位(即子絕父相)如果不明白那么請(qǐng)?jiān)L問(wèn)CSS定位子絕父相

我們想象把上面的九宮格放進(jìn) [3][3] 的二維數(shù)組中。此時(shí)第一個(gè)方框位于數(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。以此類(lèi)推就可以都得到所有子級(jí)元素的位置了。

代碼實(shí)現(xiàn)

先看效果截圖
 

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

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

window.onload = function () {
//    實(shí)現(xiàn)九宮格
    var btns  = $('.btnall button');//獲取所有的按鈕
    var photos = $('.photoall div.photo');//獲取所有的子塊
    //實(shí)現(xiàn)九宮格具體帶參方法,allcols代表想要的列數(shù)。
    function Event(allcols){
        //盒子的寬長(zhǎng)和外邊距
        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);
            //具體位置的運(yùn)行
            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;
        }
    }
    //為各個(gè)按鈕設(shè)置監(jiān)聽(tīng)事件
    btns[0].onclick = function (){
      	Event(3);
    };
    btns[1].onclick = function (){
        Event(4);
    };
    btns[2].onclick = function (){
        Event(5);
    };
}

html是什么

html的全稱(chēng)為超文本標(biāo)記語(yǔ)言,它是一種標(biāo)記語(yǔ)言,包含了一系列標(biāo)簽.通過(guò)這些標(biāo)簽可以將網(wǎng)絡(luò)上的文檔格式統(tǒng)一,使分散的Internet資源連接為一個(gè)邏輯整體,html文本是由html命令組成的描述性文本,html命令可以說(shuō)明文字,圖形、動(dòng)畫(huà)、聲音、表格、鏈接等,主要和css+js配合使用并構(gòu)建優(yōu)雅的前端網(wǎng)頁(yè)。

關(guān)于“HTML怎么利用九宮格原理進(jìn)行網(wǎng)頁(yè)布局”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI