目录

1.下拉列表

1.1 简单下拉菜单

1.2 输入框的下拉列表

1.2 响应式 JavaScript 侧边栏下拉菜单 可折叠隐藏

2.定位导航

3.选项卡切换

3.1 简单选项卡切换-自动

3.2 简单选项卡切换+延时

4.轮播图

4.1 渐变轮播

4.2 滚动轮播(走马)

4.2.3 简单展示框

4.3 滑动轮播(走马)

5.页面布局

5.1 瀑布流布局



1.下拉列表

1.1 简单下拉菜单

效果图:

说明:使用css中的hover属性就可以实现,关键代码在

.downorder:hover a{

display: block;/*鼠标移入菜单盒子时显示a标签内容*/

}

.downtext a {

display: none;/*隐藏a标签内容*/

}

源码:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>简单下拉菜单</title><style type="text/css">.downorder {width: 100px;height: auto;position: relative;}.downorder:hover a{display: block;/*鼠标移入菜单显示a标签内容*/}.order {position: relative;text-align: center;display: inline-block;font-size: 16px;padding: 15px;background-color: dodgerblue;}.order:hover {background-color: aqua;color: #FFFF00;}.downtext {position: relative;text-align: center;display: inline-block;font-size: 16px;background-color: #7FFF00;}.downtext a {display: none;/*隐藏a标签内容*/text-decoration: none;color: red;padding: 15px;}.downtext a:hover {background-color: aqua;color: #FFFF00;}</style></head><body><div class="downorder"><button class="order">下拉菜单</button><div class="downtext"><a href="javascript:;">内容1</a><a href="javascript:;">内容2</a><a href="javascript:;">内容3</a><a href="javascript:;">内容4</a></div></div></body>
</html>

1.2 输入框的下拉列表

效果图:

说明:用datalist标签就可以实现,

源码:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>数据列表</title></head><body><form action="" method="get"><label for="item">选择你想要的内容:</label><input type="text" list="items" name="item" id="item"/><datalist id="items"><option value="会玩手机的猫"></option><option value="最爱鱼的!猫"></option><option value="来自星星的猫"></option><option value="天猫国际会玩猫"></option><option value="咪了个猫"></option></datalist><input type="submit" value="提交"/></form></body>
</html>

1.2 响应式 JavaScript 侧边栏下拉菜单 可折叠隐藏

这是一款基于纯JavaScript实现的侧边栏菜单,因为整个菜单并没有使用jQuery等第三方插件,因此菜单比较轻量级的。这款JS侧边栏菜单的特点是点击按钮可以展开和隐藏,并且在隐藏时自动显示提示文字,展开后又隐藏提示文字,很好地做到了自适应效果。

效果:

HTML代码

非常简单,用一个<ul>元素构建了一个景点列表,同时用二级标题显示城市名称。

<div id="menu"><!--隐藏菜单--><div id="ensconce"><h2><img src="data:images/show.png" alt="">国内各地景点</h2></div><!--显示菜单--><div id="open"><div class="navH">国内各地景点<span><img class="obscure" src="data:images/obscure.png" alt=""></span></div><div class="navBox"><ul><li><h2 class="obtain">北京景点<i></i></h2><div class="secondary"><h3>故宫</h3><h3>十三陵</h3><h3>圆明园</h3><h3>长城</h3><h3>雍和宫</h3><h3>天坛公园</h3></div></li><li><h2 class="obtain">南京景点<i></i></h2><div class="secondary"><h3>栖霞寺</h3><h3>夫子庙</h3><h3>海底世界</h3><h3>中山陵</h3><h3>乌衣巷</h3><h3>音乐台</h3></div></li><li><h2 class="obtain">上海景点<i></i></h2><div class="secondary"><h3>东方明珠</h3><h3>外滩</h3><h3>豫园</h3><h3>文庙</h3><h3>世博园</h3><h3>田子坊</h3></div></li><li><h2 class="obtain">深圳景点<i></i></h2><div class="secondary"><h3>华侨城</h3><h3>观澜湖</h3><h3>世界之窗</h3><h3>东门老街</h3><h3>七娘山</h3><h3>光明农场</h3></div></li><li><h2 class="obtain">广州景点<i></i></h2><div class="secondary"><h3>白云山</h3><h3>长隆</h3><h3>黄花岗公园</h3><h3>中山纪念堂</h3><h3>华南植物园</h3><h3>南沙湿地公园</h3></div></li></ul></div></div>
</div>

CSS代码

CSS代码也并不复杂,主要渲染了鼠标滑过菜单项时的背景颜色渐变动画,同时定义了菜单展开时的折叠动画效果。

#menu {overflow: hidden;height: 100%;float: left;-webkit-touch-callout: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;
}
#menu #ensconce {/*éšè—èœå•æ ·å¼*/width: 0.35rem;height: 100%;background-color: #20343c;float: left;text-align: center;position: relative;display: none;
}
#menu #ensconce h2 {cursor: pointer;color: #fff;font-size: 0.24rem;line-height: 0.5rem;width: 100%;position: absolute;top: 35%;-webkit-transform: translate(-50%, -50%);-moz-transform: translate(-50%, -50%);-ms-transform: translate(-50%, -50%);-o-transform: translate(-50%, -50%);transform: translate(0%, -50%);
}
#menu #ensconce h2 img {width: 52%;
}
#menu #open {/*显示èœå•æ ·å¼*/width: 2.6rem;height: 100%;background-color: #363a45;padding-bottom: 0.1rem;box-sizing: border-box;-webkit-transition: all 0.8s ease;-moz-transition: all 0.8s ease;-o-transition: all 0.8s ease;-ms-transition: all 0.8s ease;
}
#menu #open .navH {height: 0.6rem;background-color: #44495a;line-height: 0.6rem;text-align: center;font-size: 0.2rem;color: #fff;position: relative;box-sizing: border-box;
}
#menu #open .navH span {position: absolute;top: 49%;right: 0;padding: 0 0.15rem;cursor: pointer;-webkit-transform: translate(0, -50%);-moz-transform: translate(0, -50%);-ms-transform: translate(0, -50%);-o-transform: translate(0, -50%);transform: translate(0, -50%);display: inline-block;
}
#menu #open .navH span .obscure {width: 0.24rem;
}
#menu #open .navBox {height: 100%;overflow-y: auto;padding-left: 0.05rem;padding-right: 0.07rem;margin-top: 0.1rem;
}
#menu #open .navBox ul li {background-color: #393c4a;cursor: pointer;margin-bottom: 4px;
}
#menu #open .navBox ul li .obtain {background-color: #3889D4;
}
#menu #open .navBox ul li .obtain:hover {background-color: #3D8332;
}
#menu #open .navBox ul li h2 {position: relative;width: 100%;height: 100%;text-align: center;color: #fff;font-size: 0.15rem;padding: 0.15rem 0;-webkit-transition: all 0.6s ease;-moz-transition: all 0.6s ease;-o-transition: all 0.6s ease;-ms-transition: all 0.6s ease;
}
#menu #open .navBox ul li h2 i {position: absolute;top: 50%;right: 0.15rem;border-top: 0.07rem transparent dashed;border-left: 0.07rem solid #fff;border-right: 0.07rem transparent dashed;border-bottom: 0.07rem transparent dashed;display: inline-block;-webkit-transition: -webkit-transform 0.6s ease;-moz-transition: -moz-transform 0.6s ease;-o-transition: -o-transform 0.6s ease;-ms-transition: -ms-transform 0.6s ease;transform-origin: 4px 3px;-webkit-transform: translate(0, -50%);-moz-transform: translate(0, -50%);-ms-transform: translate(0, -50%);-o-transform: translate(0, -50%);transform: translate(0, -50%);
}
#menu #open .navBox ul li h2 .arrowRot {-webkit-transform: rotate(90deg);-moz-transform: rotate(90deg);-o-transform: rotate(90deg);-ms-transform: rotate(90deg);transform: rotate(90deg);
}
#menu #open .navBox ul li .secondary {overflow: hidden;height: 0;-webkit-transition: all 0.6s ease;-moz-transition: all 0.6s ease;-o-transition: all 0.6s ease;-ms-transition: all 0.6s ease;
}
#menu #open .navBox ul li .secondary h3 {padding: 0.1rem 0;text-align: center;font-size: 0.13rem;background-color: #282c3a;color: #ffffff;border-bottom: 0.8px solid #42495d;-webkit-transition: all 0.4s ease;-moz-transition: all 0.4s ease;-o-transition: all 0.4s ease;-ms-transition: all 0.4s ease;
}
#menu #open .navBox ul li .secondary h3:hover {background-color: #1acbfc;
}
#menu #open .navBox ul li .secondary .seconFocus {background-color: #1acbfc;-webkit-box-shadow: 3px 3px 3px #aa8c51;-moz-box-shadow: 3px 3px 3px #aa8c51;box-shadow: 3px 3px 3px #aa8c51;
}

JavaScript代码

JS代码主要解决了点击菜单项时展开或者折叠的逻辑,这些动画效果也是通过JS切换CSS类来实现的。

同时,还可以通过切换实现侧边栏菜单显示和隐藏。

window.onload = function () {var flag = true;var liC = document.querySelectorAll(".navBox li h2");// 主导航nav点击事件for (var i = 0; i < liC.length; i++) {liC[i].onclick = function () {if (flag) {// 节流阀flag = false;setTimeout(function () {flag = true;}, 500)// 自点if (this.className === "obFocus") {this.querySelector("i").classList.remove("arrowRot");getNext(this).style.height = "0";this.classList.add("obtain");this.classList.remove("obFocus");return}var sec = getNext(this);var sib = siblings(sec.parentNode);var otherArr = [];var arrowClass = [];// 排他 secondary arrowRot obFocusfor (var j = 0; j < sib.length; j++) {var sibSec = sib[j].getElementsByTagName('*');for (var i = 0; i < sibSec.length; i++) {if (sibSec[i].className == "secondary") {otherArr.push(sibSec[i])}if (sibSec[i].className == "arrowRot") {arrowClass.push(sibSec[i])}if (sibSec[i].className == "obFocus") {sibSec[i].classList.remove("obFocus");sibSec[i].classList.add("obtain");}}}for (var i = 0; i < otherArr.length; i++) {otherArr[i].style.height = "0";}if (arrowClass[0]) {arrowClass[0].classList.remove("arrowRot");}// 留自己sec.style.height = 2.5078 + "rem";this.getElementsByTagName("i")[0].classList.add("arrowRot");this.classList.remove("obtain");this.classList.add("obFocus");}}}// 子导航点击事件var seconC = document.querySelectorAll(".secondary h3")for (var i = 0; i < seconC.length; i++) {seconC[i].onclick = function () {for (var i = 0; i < seconC.length; i++) {seconC[i].classList.remove("seconFocus");}this.classList.add("seconFocus");}}// 隐藏菜单var obscure = document.querySelector(".navH span");var open = document.querySelector("#open");var ensconce = document.querySelector("#ensconce");obscure.onclick = function () {open.style.marginLeft = "-300px";setTimeout(function () {ensconce.style.display = "block";}, 350)}//显示菜单var showC = document.querySelector("#ensconce h2");showC.onclick = function () {open.style.marginLeft = "0px";setTimeout(function () {ensconce.style.display = "none";}, 100)}
}function getByClass(clsName, parent) {var oParent = parent ? document.getElementById(parent) : document,boxArr = new Array(),oElements = oParent.getElementsByTagName('*');for (var i = 0; i < oElements.length; i++) {if (oElements[i].className == clsName) {boxArr.push(oElements[i]);}}return boxArr;
}
// 获取下一个兄弟元素
function getNext(node) {if (!node.nextSibling) return null;var nextNode = node.nextSibling;if (nextNode.nodeType == 1) {return nextNode;}return getNext(node.nextSibling);
}// 获取除了自己以外的其他亲兄弟元素
function siblings(elem) {var r = [];var n = elem.parentNode.firstChild;for (; n; n = n.nextSibling) {if (n.nodeType === 1 && n !== elem) {r.push(n);}}return r;
}

到这里整个侧边栏下拉菜单就完成了,

这是一款比较实用的JS侧边栏菜单插件,外观简易大方,使用起来也十分方便。

最后留给大家一个思考:如果实现三级下拉,或者无限极下拉(当然这种情况不常见),那么该如何改造呢?

然后这个项目转载于响应式 JavaScript 侧边栏下拉菜单 可折叠隐藏

2.定位导航

效果图:

说明:使用js很容易实现,

源码:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>网页定位导航效果</title><style type="text/css">* {margin: 0;padding: 0;}body {font-size: 12px;line-height: 1.7;}li {list-style: none;}#content {width: 800px;margin: 0 auto;padding: 20px;}#content h1 {color: #0088BB;}#content .item {padding: 20px;margin-bottom: 20px;border: 1px dotted #0088BB;}#content .item h2 {font-size: 12px;font-weight: bold;border-bottom: 2px solid #00FFFF;margin-bottom: 10px;}#content .item li {display: inline;margin-left: 10px;}#content .item li a img {width: 230px;height: 230px;border: none;}#menu {position: fixed;top: 100xp;left: 50%;margin-left: 400px;width: 80px;}#menu ul li a {display: block;margin: 5px 0;font-size: 14px;font-weight: bold;color: #333;width: 80px;height: 50px;line-height: 50px;text-align: center;text-decoration: none;}#menu ul a:hover {color: #fff;background-color: aqua;}#menu ul li .current {color: #fff;background-color: aqua;}</style></head><body><div id="menu"><ul><li><a href="#item1" class="current">A区域</a></li><li><a href="#item2">B区域</a></li><li><a href="#item3">C区域</a></li><li><a href="#item4">D区域</a></li><li><a href="#item5">E区域</a></li></ul></div><div id="content"><h1>网页区域分布</h1><div id="item1" class="item"><h2>A区域</h2><ul><li><a href="#"><img src="../img/rotation/1.jpg"/></a></li><li><a href="#"><img src="../img/rotation/1.jpg"/></a></li><li><a href="#"><img src="../img/rotation/1.jpg"/></a></li><li><a href="#"><img src="../img/rotation/1.jpg"/></a></li><li><a href="#"><img src="../img/rotation/1.jpg"/></a></li><li><a href="#"><img src="../img/rotation/1.jpg"/></a></li><li><a href="#"><img src="../img/rotation/1.jpg"/></a></li><li><a href="#"><img src="../img/rotation/1.jpg"/></a></li><li><a href="#"><img src="../img/rotation/1.jpg"/></a></li></ul></div><div id="item2" class="item"><h2>B区域</h2><ul><li><a href="#"><img src="../img/rotation/2.jpg"/></a></li><li><a href="#"><img src="../img/rotation/2.jpg"/></a></li><li><a href="#"><img src="../img/rotation/2.jpg"/></a></li><li><a href="#"><img src="../img/rotation/2.jpg"/></a></li><li><a href="#"><img src="../img/rotation/2.jpg"/></a></li><li><a href="#"><img src="../img/rotation/2.jpg"/></a></li><li><a href="#"><img src="../img/rotation/2.jpg"/></a></li><li><a href="#"><img src="../img/rotation/2.jpg"/></a></li><li><a href="#"><img src="../img/rotation/2.jpg"/></a></li></ul></div><div id="item3" class="item"><h2>C区域</h2><ul><li><a href="#"><img src="../img/rotation/3.jpg"/></a></li><li><a href="#"><img src="../img/rotation/3.jpg"/></a></li><li><a href="#"><img src="../img/rotation/3.jpg"/></a></li><li><a href="#"><img src="../img/rotation/3.jpg"/></a></li><li><a href="#"><img src="../img/rotation/3.jpg"/></a></li><li><a href="#"><img src="../img/rotation/3.jpg"/></a></li><li><a href="#"><img src="../img/rotation/3.jpg"/></a></li><li><a href="#"><img src="../img/rotation/3.jpg"/></a></li><li><a href="#"><img src="../img/rotation/3.jpg"/></a></li></ul></div><div id="item4" class="item"><h2>D区域</h2><ul><li><a href="#"><img src="../img/rotation/4.png"/></a></li><li><a href="#"><img src="../img/rotation/4.png"/></a></li><li><a href="#"><img src="../img/rotation/4.png"/></a></li><li><a href="#"><img src="../img/rotation/4.png"/></a></li><li><a href="#"><img src="../img/rotation/4.png"/></a></li><li><a href="#"><img src="../img/rotation/4.png"/></a></li><li><a href="#"><img src="../img/rotation/4.png"/></a></li><li><a href="#"><img src="../img/rotation/4.png"/></a></li><li><a href="#"><img src="../img/rotation/4.png"/></a></li></ul></div><div id="item5" class="item"><h2>E区域</h2><ul><li><a href="#"><img src="../img/rotation/5.jpg"/></a></li><li><a href="#"><img src="../img/rotation/5.jpg"/></a></li><li><a href="#"><img src="../img/rotation/5.jpg"/></a></li><li><a href="#"><img src="../img/rotation/5.jpg"/></a></li><li><a href="#"><img src="../img/rotation/5.jpg"/></a></li><li><a href="#"><img src="../img/rotation/5.jpg"/></a></li><li><a href="#"><img src="../img/rotation/5.jpg"/></a></li><li><a href="#"><img src="../img/rotation/5.jpg"/></a></li><li><a href="#"><img src="../img/rotation/5.jpg"/></a></li></ul></div></div></body><script src="../js/jquery-1.8.js" type="text/javascript" charset="utf-8"></script><script type="text/javascript">window.onload = function(){window.onscroll = function(){var top = document.documentElement.scrollTop || document.body.scrollTop;var menus = document.getElementById("menu").getElementsByTagName("a");var items = document.getElementById("content").getElementsByClassName("item");var currentId = "";for (var i=0;i<items.length;i++) {var _item = items[i];var _itemTop = _item.offsetTop;if (top>_itemTop-200) {currentId = _item.id;} else{break;}if (currentId!="") {//给正确的menu下的a元素class赋值for (var j=0;j<menus.length;j++) {var _menu =menus[j];//因为只通过href获取的链接为一长串链接,需要通过#分成数组var _href = _menu.href.split("#");if (_href[_href.length-1]!=currentId) {_menu.className = "";} else{_menu.className = "current";}}}}}}</script>
</html>

3.选项卡切换

应用场景:用于功能页面切换,而主页面无变化

3.1 简单选项卡切换-自动

效果图:

说明:基于js实现,

源码:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>简单选项卡切换+自动</title><style type="text/css">* {margin: 0;padding: 0;font-size: 12px;font-family: "微软雅黑";color: #3c3c3c;text-decoration: none;list-style-type:none;}#tab_list {width: 275px;height: 190px;margin: 30px auto;}#list {height: 32px;border-bottom: 2px solid aqua;}#list li {display: inline-block;width: 60px;border-bottom: 1px solid aquamarine;}#list .active {border-top: 2px solid #0000FF;border-bottom: 2px solid aquamarine;}#tab_list div {border: 1px solid #FF5000;border-top: none;}#tab_list div li {height: 30px;line-height: 30px;text-indent: 8px;}#tab_list .show {display: block;}#tab_list .hidden {display: none;}</style></head><body><div id="tab_list"><ul id="list"><li class="active">选项一</li><li>选项二</li><li>选项三</li></ul><div class="show"><ul><li><a href="javascript:;">选项一内容-1</a></li><li><a href="javascript:;">选项一内容-2</a></li><li><a href="javascript:;">选项一内容-3</a></li><li><a href="javascript:;">选项一内容-4</a></li></ul></div><div class="hidden"><ul><li><a href="javascript:;">选项二内容-1</a></li><li><a href="javascript:;">选项二内容-2</a></li><li><a href="javascript:;">选项二内容-3</a></li><li><a href="javascript:;">选项二内容-4</a></li></ul></div><div class="hidden"><ul><li><a href="javascript:;">选项三内容-1</a></li><li><a href="javascript:;">选项三内容-2</a></li><li><a href="javascript:;">选项三内容-3</a></li><li><a href="javascript:;">选项三内容-4</a></li></ul></div></div></body><script type="text/javascript">window.onload = function() {var tab = document.getElementById("tab_list");var list = document.getElementById("list").getElementsByTagName("li");var div = document.getElementById("tab_list").getElementsByTagName("div");var timer = null;var index = 0;for (var i=0; i<list.length; i++) {list[i].num = i;list[i].onmouseover = function () {Change(this.num);}}function Change(curIndex) {for (var i=0; i<list.length; i++) {list[i].className = "";div[i].className = "hidden";}list[curIndex].className = "active";div[curIndex].className = "show";index = curIndex;}//自动播放function autoPlay() {timer = setInterval(function () {index++;if (index > list.length-1) {index = 0;}Change(index);},2000);}autoPlay();tab.onmouseover = function () {clearInterval(timer);}tab.onmouseout = function () {autoPlay();}}</script>
</html>

3.2 简单选项卡切换+延时

效果图:

说明:基于js实现,

源码:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>简单选项卡切换+延时</title></head><style type="text/css">* {margin: 0;padding: 0;font:normal 12px "微软雅黑";color: #3C3C3C;}ul {list-style-type: none;}a {text-decoration: none;}#tab_list {width: 275px;height: 190px;margin: 20px auto;}#ul1 {border-bottom: 2px solid aqua;height: 32px;}#ul1 li {display: inline-block;width: 60px;line-height: 30px;text-align: center;border: 1px solid aquamarine;border-bottom: none;margin-left: 5px;}#ul1 li:hover {cursor: pointer;}#ul1 li.active {border-top: 2px solid #1E90FF;border-bottom: 2px solid #fff;}#tab_list div {border: 1px solid #FF5000;border-top: none;}#tab_list div li {height: 30px;line-height: 30px;text-indent: 8px;}.show {display: block;}.hidden {display: none;}</style><body><div id="tab_list"><ul id="ul1"><li class="active">选项一</li><li>选项二</li><li>选项三</li></ul><div class="show"><ul><li><a href="javascript:;">选项一内容-1</a></li><li><a href="javascript:;">选项一内容-2</a></li><li><a href="javascript:;">选项一内容-3</a></li><li><a href="javascript:;">选项一内容-4</a></li></ul></div><div class="hidden"><ul><li><a href="javascript:;">选项二内容-1</a></li><li><a href="javascript:;">选项二内容-2</a></li><li><a href="javascript:;">选项二内容-3</a></li><li><a href="javascript:;">选项二内容-4</a></li></ul></div><div class="hidden"><ul><li><a href="javascript:;">选项三内容-1</a></li><li><a href="javascript:;">选项三内容-2</a></li><li><a href="javascript:;">选项三内容-3</a></li><li><a href="javascript:;">选项三内容-4</a></li></ul></div></div></body><script type="text/javascript">window.onload = function() {var ul1 = document.getElementById("ul1");var aLi = ul1.getElementsByTagName("li");var oDiv = document.getElementById("tab_list");var aDiv = oDiv.getElementsByTagName("div");var timer = null;for (var i=0; i<aLi.length; i++) {aLi[i].id = i;aLi[i].onmouseover = function () {var _this = this;//用_this这个变量来引用当前滑过的li/*如果存在准备执行的定时器,立即清除,只能当前停留时间大于500ms时* *才开始执行(指鼠标快速滑过一个的那一瞬间要清除掉产生的定时器)*/if (timer) {clearTimeout(timer);timer = null;}//延时半秒执行timer = window.setTimeout(function () {for (var i=0; i<aLi.length; i++) {aLi[i].className = "";aDiv[i].className = "hidden";}/** 之所以不能在这直接引用this是因为setTimeout是window对象,* 用this的话会指向定时器,所以要在前面定义一个变量*/_this.className = "active";aDiv[_this.id].className = "show";},500);}}}</script>
</html>

4.轮播图

4.1 渐变轮播

4.2 滚动轮播(走马)

4.2.3 简单展示框

效果图:

说明:这是最简单的滚动轮播图,只有展示和鼠标悬停的效果,

源码:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>展示框-滚动轮播-测试成功-</title><style type="text/css">* {margin: 0;padding: 0;}.scroll {position: relative;width: 830px;/*展示宽度,展示4个图+3个边框=830*/height: 130px;border: 10px solid #00FFFF;margin: 100px auto;overflow: hidden;}.scroll .munit {position: absolute;top: 0;left: 0;width: 5000px;/*ul能够存下的所有li的li宽*/height: 130px;}.scroll .munit>div {float: left;width: 200px;height: 130px;margin-left: 10px;display: inline;overflow: hidden;}.scroll .munit>div>img {width: 200px;height: 130px;}</style></head><body><div id="scroll" class="scroll"><div id="munit" class="munit"><div><img src="../../img/rotation/1.jpg" alt=""></div><div><img src="../../img/rotation/2.jpg" alt=""></div><div><img src="../../img/rotation/3.jpg" alt=""></div><div><img src="../../img/rotation/4.png" alt=""></div><div><img src="../../img/rotation/5.jpg" alt=""></div><div><img src="../../img/rotation/6.png" alt=""></div><div><img src="../../img/rotation/7.jpg" alt=""></div><div><img src="../../img/rotation/1.jpg" alt=""></div><div><img src="../../img/rotation/2.jpg" alt=""></div><div><img src="../../img/rotation/3.jpg" alt=""></div><div><img src="../../img/rotation/4.png" alt=""></div><div><img src="../../img/rotation/5.jpg" alt=""></div><div><img src="../../img/rotation/6.png" alt=""></div><div><img src="../../img/rotation/7.jpg" alt=""></div></div></div></body><script type="text/javascript">window.onload = function() {myscroll();}function myscroll() {//获取函数var scroll = document.getElementById("scroll");var munit = document.getElementById("munit");var div = munit.children;//进行滚动var nowLeft = 0;//要找到ul元素的折返点var back= -1470;//图和边框的宽度,有七张图,所以折返点是1470//定时器var scrollTimer = setInterval(run,20);//鼠标移上scroll停止scroll.onmouseover = function () {clearInterval(scrollTimer);}//鼠标移开轮播scroll.onmouseout = function () {scrollTimer = setInterval(run,20);}//运动函数function run() {nowLeft -= 2;//判断是否走到了折返点,走到了则瞬间切换到0位置if (nowLeft <= back) {nowLeft = 0;}munit.style.left = nowLeft + "px";}}</script>
</html>

4.3 滑动轮播(走马)

5.页面布局

5.1 瀑布流布局

效果图:

说明:全屏模式下图片的自动填充还没有完善;半屏模式下图片会自动填充,出现页面奔溃现象时多刷新几次,

源码:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>瀑布流布局</title><style type="text/css">* {margin: 0;padding: 0;}#main {/*整体相对定位,因为每个小盒子的位置是通过计算再由绝对定位放置,是需要相对于main盒子*/position: relative;}.box {padding: 15px 0 0 15px;/*后面js获取的高度包括padding的距离*/float: left;}.pic {padding: 10px;border: 1px solid #ccc;border-radius: 5px;box-shadow: 0 0 5px #ccc;}.pic img {width: 165px;height: auto;}</style></head><body><div id="main"><div class="box"><div class="pic"><img src="../img/0.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/1.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/2.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/3.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/4.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/5.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/6.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/7.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/8.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/9.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/10.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/11.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/12.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/13.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/14.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/15.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/16.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/17.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/18.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/19.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/20.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/21.jpg"/></div></div><div class="box"><div class="pic"><img src="../img/21.jpg"/></div></div></div></body><script src="../js/_waterfall.js" type="text/javascript" charset="utf-8"></script>
</html>

js代码:

window.onload = function() {var oParent = document.getElementById("main");var oBoxs = oParent.getElementsByClassName("box");//调用瀑布流布局的函数waterfall('main','box');//模拟出要加载的图片var dataInt = {"data":[{"src":'23.jpg'},{"src":'24.jpg'},{"src":'25.jpg'}]};window.onscroll = function() {if (checkscrollSlide()) {//如果调用函数 的返回值为true//将数据块渲染到页面底部for (var i=0; i<dataInt.data.length; i++) {var oBox = document.createElement('div');oBox.className = 'box';//添加到父元素的最后oParent.appendChild(oBox);var oPic = document.createElement('div');oPic.className = 'pic';oBox.appendChild(oPic);var oImg = document.createElement('img');oImg.src = "../img/"+dataInt.data[i].src;oPic.appendChild(oImg);}waterfall('main','box');}}function waterfall(parent,box) {var oParent = document.getElementById(parent);var oBoxs = oParent.getElementsByClassName(box);//计算每个box的宽度var oBoxW = oBoxs[0].offsetWidth;//计算每个页面显示的列数(页面宽/box的宽度)var cols = Math.floor(document.documentElement.clientWidth/oBoxW);//设置main的宽度,居中oParent.style.cssText='width:'+oBoxW*cols+'px;margin: 0 auto;';//存放每一列高度的数组var hArr = [];for (var i=0; i<oBoxs.length; i++) {if (i<cols) {//将第一行的各个高度加到数组中hArr.push(oBoxs[i].offsetHeight);} else{//apply方法可以改变数组的指向,因为Math.main方法不支持数组var minH = Math.min.apply(null,hArr);var index = getMinhIndex(hArr,minH);oBoxs[i].style.position='absolute';oBoxs[i].style.top=minH+'px';oBoxs[i].style.left=oBoxs[index].offsetLeft+'px';hArr[index]+=oBoxs[i].offsetHeight;}}}function getMinhIndex(arr,val) {for (var i in arr) {if (arr[i]==val) {return i;}}}//检测是否具备了滚动条加载数据块的条件function checkscrollSlide() {//最后一个盒子的距顶部的高度加上自身高度的一半var lastBoxH = oBoxs[oBoxs.length-1].offsetTop+Math.floor(oBoxs[oBoxs.length-1].offsetHeight/2);//页面滚走的距离var scrollTop =document.body.scrollTop||document.documentElement.scrollTop;//当前浏览器窗口可视区域高度var height = document.body.clientHeight||document.documentElement.clientHeight;return (lastBoxH<scrollTop+height) ? true:false;}
}

前端html-部件模板收集(附源码)相关推荐

  1. 【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)

    卡塔尔世界杯元素python海龟绘图(附源代码) 世界杯主题前端特效5个(附源码)程序人生 本文目录: 一.python turtle海龟绘图卡塔尔世界杯元素 (1).绘制效果图 (2).代码演示方法 ...

  2. html实现好看的个人介绍,个人主页模板3(附源码)

    文章目录 1.设计来源 1.1 主界面 1.2 关于我界面 1.3 教育成就界面 1.4 项目演示界面 1.5 联系我界面 2.效果和源码 2.1 动态效果 2.2 源代码 2.2 源代码目录 源码下 ...

  3. html实现好看的个人介绍,个人主页模板5(附源码)

    文章目录 1.设计来源 1.1 主界面 1.2 我的介绍界面 1.3 我的能力界面 1.4 项目案例界面 1.5 联系我界面 2.效果和源码 2.1 动态效果 2.2 源代码 2.3 源代码目录 源码 ...

  4. html实现好看的个人介绍,个人主页模板1(附源码)

    文章目录 1.设计来源 1.1 主界面 1.2 关于我界面 1.3 自我介绍界面 1.4 项目演示界面 1.5 个人成就界面 1.6 联系我界面 2.效果和源码 2.1 动态效果 2.2 源代码 源码 ...

  5. html实现好看的个人介绍,个人主页模板4(附源码)

    文章目录 1.设计来源 1.1 主界面 1.2 我的文章界面 1.3 我的相册界面 1.4 关于我界面 1.5 联系我界面 2.效果和源码 2.1 动态效果 2.2 源代码 2.2 源代码目录 源码下 ...

  6. html实现好看的个人介绍,个人主页模板2(附源码)

    文章目录 1.设计来源 1.1 主界面 1.2 关于我界面 1.3 项目演示界面 1.4 联系我界面 2.效果和源码 2.1 动态效果 2.2 源代码 2.3 源码目录 源码下载 作者:xcLeigh ...

  7. 7个Web前端极其精美的动画效果模板(附源码)

    1.  jQuery动态随机背景滚动   源码下载  /  在线演示 2.  jquery animate分页按钮   源码下载 /  在线演示 3. html5+css3日食场景特效 源码下载/   ...

  8. 仿蘑菇街,京东,苏宁易购,海尔商城等33套大气购物商城网站模板,附源码免费下载地址...

    来源 | web前端开发 在很早之前,跟大家分享过很多有关于网站模板的素材资源,有企业网站,也有购物商城,还有后台管理模板,以及大数据页面模板等等. 今天我们再跟大家分享32套商城网站源码,有的是比较 ...

  9. 微信小程序 推送模板教程 附源码

    无聊的时候 玩一下小功能踩踩坑  首先模板推送 需要准备一些材料 准备材料:1)公众号|小程序,添加选择的模板消息,2)在设置>开发设置页面,开通消息模板功能:如: 如果还没模板素材的 请新建一 ...

  10. Node后端模板代码(附源码)

    前言 之前也写过简单的node服务器代码,但不算做事一个工程,这一次因为也需求,就写了这套后端模板. 从git上找的一些node模板,功能是可以实现,但工作流程理解起来有点困难,可能是小弟我水平有限, ...

最新文章

  1. 基于tensorflow的MNIST手写字识别
  2. python新手小项目-推荐:一个适合于Python新手的入门练手项目
  3. CentOS6 vsftpd 安装及优化方法
  4. boost::mp11::mp_replace_second相关用法的测试程序
  5. Jenkins 插件管理与系统设置
  6. javaweb功能模块如何合理设计_燃油燃气锅炉烟道如何设计才更合理?
  7. 使用MesaSQLite入库CSV文件
  8. nvm 下载node 下载不下来_挑战不可能最新版手游下载_挑战不可能最新版安卓版下载...
  9. python数据库-mongoDB的高级查询操作(55)
  10. 经典脑成像研究的元分析示例(决策篇)
  11. 网络:CGI程序制作
  12. Xcode7-“App Transport Security has blocked a cleartext HTTP (http://) resource load since it is inse
  13. 在C语言中使用fflush(stdin)
  14. Python————办公自动化
  15. 在公交车上想出的一个java算法
  16. 使用linux集体升级系统,1.3. 利用mtd工具升级Linux系统
  17. 一款极简聊天应用,比较完整,略好看
  18. vb.net 教程 3-2 窗体编程之窗体 4
  19. 计算机电脑类比,2020年广西公务员考试类比推理专项练习(91)
  20. 2019双十一淘宝天猫刷喵币

热门文章

  1. 应急管理场景中的手机信令数据应用探索
  2. MySQL数据库与pom.xml中的connector依赖版本不匹配
  3. HTML5期末大作业:绿色环境保护网站设计(10页) 带flash动画带背景音HTML+CSS+JavaScript
  4. kingScada用户登录登出与用户显示 操作权限设置
  5. MFC设置编辑框字体大小
  6. 信息安全与技术期末复习
  7. C语言运算符号优先级测试代码(i++ ,++i)
  8. 智慧养老政策建议及智慧养老发展过程中存在问题
  9. Mockito stubbing
  10. 通过 JFR 与日志深入探索 JVM - TLAB JFR 相关事件与日志详解