基于HTML九宫格原理如何做网页布局,方法是什么
Admin 2022-07-12 群英技术资讯 298 次浏览
前言
说到九宫格是不是想到了九宫格火锅那(O(∩_∩)O哈哈~)。其实九宫格布局在各大网站基本都有应用,当然这里的九宫格是泛指(O(∩_∩)O哈哈)。比如小米商城局部布局如下:
不难发现,一些电商平台的布局基本上大同小异,最普遍的还是这种九宫格布局。当然通过CSS也可以对其单独设置定位,但是数据量小还好说,如果数据量多起来,计算麻烦不说,还有可能影响布局。下面我们来说一下九宫格布局的原理。
原理(小白也能看懂)
上图是一个九宫格示意图,现在我们把它想象到一个网页中(想象不到就看上图图片~~),在网页中这个布局由最外层绿色的大的div标签包裹,在绿色的div标签中有许多蓝色的小的div标签作为绿色div标签的子级元素组成,这样简单的嵌套就完成了。由于我们的目标元素是蓝色的小div,那么我们无可避免的要对其设置盒子大小,以及外边距等等。但是我们操作的对象就是盒子的大小+外边距(也就是上图中红色框选的区域)。
具体流程如下:
我们先获取到蓝盒子以及其周围整体的大小,假设上图红框的大小是200px * 200px
这些盒子就要牵扯到绝对定位和相对定位:绿色的盒子是相对定位,里面的蓝盒子是绝对定位(即子绝父相)如果不明白那么请访问CSS定位子绝父相
我们想象把上面的九宫格放进 [3][3] 的二维数组中。此时第一个方框位于数组的 [0] [0] 位置,他的位置在绿色的div中就是(0×200px,0×200px),即top = 0px,left = 0px;其右面方框在二维数组的位置是 [0][1](0×200px,1×200px)即top = 0px;,left = 200px;其下面方框在二维数组的位置是 [1][0](1×200px,0×200px)即top = 200px,left = 0px。以此类推就可以都得到所有子级元素的位置了。
代码实现
先看效果截图
在我点击上方按钮时可以实现不同列数的展现。
以下是JS代码
window.onload = function () { // 实现九宫格 var btns = $('.btnall button');//获取所有的按钮 var photos = $('.photoall div.photo');//获取所有的子块 //实现九宫格具体带参方法,allcols代表想要的列数。 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'; //设置位置 photos[i].style.position = 'absolute'; photos[i].style.left = left; photos[i].style.top = top; } } //为各个按钮设置监听事件 btns[0].onclick = function (){ Event(3); }; btns[1].onclick = function (){ Event(4); }; btns[2].onclick = function (){ Event(5); }; }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
css中,可利用“clip-path”属性实现不是直角的菱形效果,该属性可裁剪元素的显示区域,只需将元素的显示区域裁剪为菱形即可,语法为“clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);”。
今天给大家分享的是用css3实现霓虹灯按钮的效果,实现效果如下,是不是非常的酷炫,那么这种类似霓虹灯的效果是怎样做的呢?接下来我们一起来了解看看实现代码。
这篇文章主要介绍了简洁自适应404页面HTML好看的404源码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
css中,可利用transform属性实现垂直翻转效果,该属性可以对元素进行旋转、缩放、移动或倾斜操作,当该属性与rotateX()函数配合使用时,可设置元素垂直翻转样式,语法为“元素{transform:rotateX(翻转角度);}”。
这篇文章主要介绍了div或img图片高度随宽度自适应的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008