前端开发的技术栈是架构师吗 |
前端web开发技术 |
web前端开发技术试题 |
####【代码实例在文章底部】
瀑布流是什么这里就不多介绍了,就简单说一下原理。
瀑布流布局规则:
<1>每个瀑布流元素宽度相等;
<2>以第一行为准,哪个高度最小,就将下一个元素放在该元素下面,然后以此类推,无限循环下去。
接下来就是撸码过程。
一、首先我们先将图片资源导入项目中,简单的搭建好界面。将所有元素左浮动,并且每个元素宽相等。其中元素间距是每个元素的padding,视觉错误。这个是为了更好的计算每个元素的offsetWidth。
二、接下来就是要设置父元素宽度了,并让他居中。这个主要是为了让元素动态展示在居中部位。
获取到所有瀑布流元素allBoxs
获取其中一个元素的宽度boxWidth
获取浏览器的宽度对boxWidth相除取整,n = parseInt(),页面一行最多显示n个
然后父元素的宽度等于=n*boxWidth
设置父元素居中margin:0 auto
结果就是第一张图展示后的结果。
三、这个就是最主要的瀑布流过程:
1.首先我们要获得所有页面上的瀑布流元素allBoxs
2.然后将第一行每个元素的高度存入一个数组boxHeightArray地[n]
3.然后从第n+1个开始获取这个boxHeightArray的最小高度的值minValue,和这个值所对应的下标index
4.然后设置第n+1个元素为绝对定位absolute,第r+1个元素top=minValue 和 left=index*boxWidth(元素的宽度)
5.更新boxHeightArray中的boxHeightArray[index] +=(n+1)元素的offsetHeight
瀑布流主要代码
//获取数据
function scorllPullBox(id) {
var parentBox = $(id) //首先获取父div
var allBoxs = parentBox.children //获取到所有瀑布流元素
var boxWidth = allBoxs[0].offsetWidth //获取其中一个元素宽度
var colsNumber = parseInt(document.body.clientWidth / boxWidth) //取得屏最宽显示几个元素
parentBox.style.width = boxWidth * colsNumber + ‘px’ //父div宽度
parentBox.style.margin = ‘0 auto’ //居中</p>
var boxHeightArray = [] //创建高度数组
var boxHeight = 0 //初始高度变量为0
for (var i = 0; i < allBoxs.length; ++i) {
boxHeight = allBoxs[i].offsetHeight //取得每个元素高度
if (i < colsNumber) {
boxHeightArray.push(boxHeight) //将colsNumber个元素存入高度数组
} else {
var minHeight = Math.min.apply(null, boxHeightArray) //获得最小高度
var minIndex = arrayMinIndex(boxHeightArray, minHeight) //获得最小高度下标
allBoxs[i].style.position = ‘absolute’ //将第i个元素改为绝对定位
allBoxs[i].style.left = minIndex * boxWidth + ‘px’ //设置left
allBoxs[i].style.top = minHeight + ‘px’ //设置top
boxHeightArray[minIndex] += allBoxs[i].offsetHeight //更新数组高度注意+号
}
}
}
(1)首先前n个元素是浮动的在页面上面的,并存入数组的(步骤2)
(2)其次第n+1个元素是要找到第一行最矮的元素,并定位在它的后面(黄色图片为第n+1)(步骤3,4)
(3)然后更新数组中高度,拼接后的元素高度+原来元素的高度(步骤5)
四、添加滑动加载更多(假数据)
思想步骤
1.获取最后一个元素lastBox,当他显示出一半(随意)的时候加载更多数据
2.lastBox的一半的高度 + lastBox.offsetTop与获得整个滑动区域的高度 + 当前网页高度作比较
滑动刷新判断条件
//检测刷新状态,判断当最后一个盒子显示出来1/2
function checkRerechData() {
var parentBox = $(‘main’)
var allBoxs = parentBox.children
var lastBox = allBoxs[allBoxs.length – 1]
var lastBoxHeight = lastBox.offsetHeight * 0.5 //获得最后一个盒子一半的高度
var winScrollTopHeight = document.documentElement.clientHeight + scroll().top //获得整个滑动区域的高度+当前网页高度
var lastBoxDistance = lastBoxHeight + lastBox.offsetTop //获得最后一个元素的offsetHeight+自身高度的一半</p>
if (winScrollTopHeight > lastBoxDistance) {
//是否最后一个元素已经显示出来1/2.
return true
}
return false
}
web前端开发技术认识 |
web前端开发技术—html |
web前端开发技术期末考试 |
评论前必须登录!
注册