- 链接的伪类顺序(:link :visited :hover :active)
- 瀑布流布局的实现方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>瀑布流首页</title>
<link href="css/index.css" rel="stylesheet">
</head>
<body>
<!--父盒子-->
<div id="main">
<!--单个盒子-->
<div class="box">
<!--图片盒子-->
<div class="pic">

</div>
</div>
<!--单个盒子标签复制20次...图片名字改改...-->
</div>
<!--引入JS,CSS方式注释掉-->
<script src="js/index.js" type="text/javascript"></script>
</body>
</html>
*{
margin:0;
padding: 0;
}
#main{
position: relative;
}
.box{
padding:15px 0 0 15px ;
float: left;
}
.pic{
border:1px solid #dddddd;
}
.pic img{
width: 165px;
}
function $(id) {
return typeof id === 'string'?document.getElementById(id):id;
}
window.onload = function () {
waterFall('main','box');
window.onscroll = function ()
{
if (checkWillLoad())
{
var data = {'dataImg':[{'img':'23.jpg'},{'img':'24.jpg'},{'img':'25.jpg'},{'img':'26.jpg'},{'img':'27.jpg'},{'img':'28.jpg'}]};
for(var i=0; i<data.dataImg.length; i++)
{
var newBox = document.createElement('div');
newBox.className = 'box';
$('main').appendChild(newBox);
var newPic = document.createElement('div');
newPic.className = 'pic';
newBox.appendChild(newPic);
var newImg = document.createElement('img');
newImg.src = 'images/' + data.dataImg[i].img;
newPic.appendChild(newImg);
}
waterFall('main','box');
}
}
}
function waterFall(parent,box) {
var allBox = $(parent).getElementsByClassName(box);
var boxWidth = allBox[0].offsetWidth;
var screenWidtn = document.body.offsetWidth;
var cols = Math.floor( screenWidtn/boxWidth);
$(parent).style.width = boxWidth * cols + 'px';
$(parent).style.margin = '0 auto';
var heightArr = [];
for(var i = 0; i < allBox.length ;i++)
{
var boxHeight = allBox[i].offsetHeight;
if(i<cols)
{
heightArr.push(boxHeight);
}
else
{
var minBoxHeight = Math.min.apply(this,heightArr);
var minBoxIndex = getMinBoxIndex(minBoxHeight,heightArr);
allBox[i].style.position = 'absolute';
allBox[i].style.top = minBoxHeight + 'px';
allBox[i].style.left = minBoxIndex * boxWidth +'px';
heightArr[minBoxIndex] += boxHeight;
}
}
}
function getMinBoxIndex(val,arr) {
for(var i in arr)
{
if(val == arr[i])
{
return i;
}
}
}
function checkWillLoad() {
var allBox = $('main').getElementsByClassName('box');
var lastBox = allBox[allBox.length - 1];
var lastBoxDis = lastBox.offsetHeight * 0.5 + lastBox.offsetTop;
var screenHeight = document.documentElement.clientHeight;
var scrollTopHeight = document.body.scrollTop;
return lastBoxDis <= screenHeight + scrollTopHeight;
}
- 列出几种CSS预编译语言,并举例其中一种
- 列举移动端适配方案,并简单写明原理
- 不借助第三个变量交换两个整数的值
- a=a-b, b=a+b, a=2b
- a=a^b, b=a^b, a=a^b
- [a,b]=[b,a]
- js深拷贝的实现方法