前端html-部件模板收集(附源码)

article/2025/8/17 4:20:24

目录

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="images/show.png" alt="">国内各地景点</h2></div><!--显示菜单--><div id="open"><div class="navH">国内各地景点<span><img class="obscure" src="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;}
}


http://chatgpt.dhexx.cn/article/102HQ6sE.shtml

相关文章

【前端开源模板推荐】

前端开源模板推荐 几款前端开源模板 做前端&#xff0c;直接开开源模板不仅省很多工夫&#xff0c;而且还比较美观&#xff0c;所以收藏一些&#xff0c;以备查用。 1、AdminLTE AdminLTE是一个完全响应的后台管理模板。基于Bootstrap3框架。高度可定制&#xff0c;易于使用。适…

几款前端开源模板

做前端&#xff0c;直接开开源模板不仅省很多工夫&#xff0c;而且还比较美观&#xff0c;所以收藏一些&#xff0c;以备查用。 1、AdminLTE AdminLTE是一个完全响应的后台管理模板。基于Bootstrap3框架。高度可定制&#xff0c;易于使用。适合许多屏幕分辨率从小型移动设备到…

使用win10的画图将照片变为2寸大小

材料/工具 一台电脑 方法 1 找到你要调整的图片&#xff0c;单击鼠标右键&#xff0c;选择【编辑】。 风云怎样压缩照片大小_2020全新版免费下载图片压缩器查看详情>>广告 2 打开后界面如图&#xff0c;点击【重新调整大小】。 3 弹出如图界面&#xff0c;点击【像素…

1寸照片如何修改底色?证件照换背景教程

许多报名平台上传一寸证件照时都对背景颜色有具体要求&#xff0c;那么我们就需要证件照换底色来应对&#xff0c;本文将介绍一个快速证件照换背景&#xff08;https://www.yasuotu.com/coloreplace&#xff09;的方法&#xff0c;可以一键将一寸证件照换底色&#xff0c;下面是…

一张照片快速生成1寸照片,小白可用

talk is cheep,show you the code import matplotlib.pyplot as plt import matplotlib.image as mpimg from matplotlib import animation import paddlehub as hub from PIL import Image, ImageSequence import numpy as np import os import cv2# 定义人脸识别和人物识别的…

ps制作2寸照片教程蓝底,ps怎么p二寸照片详细步骤

ps制作2寸照片教程蓝底?ps怎么p二寸照片详细步骤。在日常生活当中经常会用到二寸证件照,很多人都还要跑到数码馆去照相再让人家修图,最后再打印出来,一套照片下来几十元。如果你知道ps制作2寸照片教程蓝底?了解ps怎么p二寸照片详细步骤,下载一个ps分分钟就搞定了,只需要…

计算机画图如何把二寸照片修改为一寸,win7使用自带画图工具把照片调整成2寸的方法...

工作生活中我们需要要一寸或两寸照片当证件照&#xff0c;大家第一反应就是去照相馆拍照&#xff0c;这样比较麻烦。其实我们可以win7旗舰版系统使用自带画图工具来制作2寸相片&#xff0c;操作简单且不复杂。感兴趣的小伙伴一起看下win7系统用自带画图工具把相片调整成2寸的方…

程序员的进阶课-架构师之路(大纲)-思维导图

我的微信公众号&#xff1a;架构真经&#xff08;id&#xff1a;gentoo666&#xff09;&#xff0c;分享Java干货&#xff0c;高并发编程&#xff0c;热门技术教程&#xff0c;微服务及分布式技术&#xff0c;架构设计&#xff0c;区块链技术&#xff0c;人工智能&#xff0c;大…

软考高级-系统架构师-案例分析-架构设计

本篇博文目录: 考点分析一.软件架构风格1.基本概念2.真题案例分析 二.质量属性与架构评估1.基本概念2.案例分析 三.Web架构综合考查1.Web服务器技术演变(1) 负载均衡技术(2) 持久化技术-ORM(3) 数据库读写分离 2.缓存技术3.Redis技术4.CDN(内容分发网络)5.XML与JSON6.Web应用服…

从程序员到架构师,你修炼到哪个境界了?

架构师是程序员的奋斗目标。 我身边的很多优秀程序员&#xff0c;都在暗暗努力往架构师能力栈靠拢。很多人技术很过硬也参与过大型项目、还有的人对新技术信手拈来、也有一些人勤勤恳恳在努力做好手里的事情。 但你会发现&#xff0c;当他们遇到实际业务场景的架构问题&#xf…

程序员到底牛到什么程度才能成为架构师?

身为技术人&#xff0c;相信你也思考过这个问题&#xff1a;工作了几年&#xff0c;代码写得非常熟练&#xff0c;上线的程序也少有 bug &#xff0c;时不时还能搞个技术分享&#xff0c;但接下来要往哪个方向发展呢&#xff1f; 想来无非是 3 种选择&#xff1a;专精技术、转型…

程序员的职业发展道路到底有哪些?

昨天有朋友提问&#xff0c;关于程序员的职业发展路线&#xff0c;简单来讲下这块。程序员我来定义的话&#xff0c;就是用代码改变世界&#xff0c;但是最怕程序员在自我的世界里面&#xff0c;因为面对机器编码&#xff0c;越来越不善交谈&#xff0c;这点是程序员欠缺的&…

程序员就业和发展前景,一文带你了解

程序员&#xff0c;英文是 code worker&#xff0c;顾名思义就是计算机程序的作者。它通常指从事计算机软件开发的人员&#xff0c;当然也包括用计算机语言编写程序来进行各种信息处理的人。现在软件行业中&#xff0c;程序员属于技术含量较高的一个群体。程序员就业和发展前景…

架构师之路一-架构师入门指引

点击箭头处 “JAVA日知录” &#xff0c;关注并星标哟&#xff01;&#xff01; 导读&#xff1a;本系列文章教你怎么样成为一名架构师&#xff0c;而本篇文章则带你先认识一下什么是架构师&#xff0c;架构师的工作是什么&#xff1f; 为什么需要架构师 为什么需要架构师或者说…

程序员转型架构师,推荐你读这两本书

平时工作太忙&#xff0c;没有充足时间的看书&#xff0c;无暇系统地学&#xff0c;以致于在知识运用上出现了“力不从心”和本领恐慌现象&#xff0c;这是制约自身能力发展的最大“瓶颈”。 克服本领恐慌最直接最有效的方法就是定期给自己充电。 正好趁这次长假好好看看书&…

我心里优秀架构师是怎样的?

先声明&#xff0c;这不是在打广告……。之所以那么认真看个宣传视频&#xff0c;是因为曾经阅读过李智慧老师的书籍&#xff08;大型网站技术架构--核心原理与案例分析&#xff09;&#xff0c;书写的挺好&#xff0c;有兴趣的可以阅读下。 本文内容来源于&#xff1a;李智慧…

同是程序员,为什么架构师待遇比你高一倍?

架构不是一个职业而是一种能力,每一种架构师只不过是在不同的领域里面使用不同的技术,没有什么可对比,就好比如你问一个篮球明星和一个足球明星有什么区别一样! 一、架构师需要考虑四个问题 确定系统干什么不干什么,也就是说系统的边界在哪里? 确定架构内部的模块与模块之间…

从程序员到架构师的精进之路

“程序员到架构师的技术成长之路分为几个典型的阶段&#xff1a;工程师 - 高级工程师 - 技术专家 - 初级架构师 - 中级架构师 - 高级架构师” 程序员到架构师的技术成长之路分为几个典型的阶段&#xff1a;工程师 - 高级工程师 - 技术专家 - 初级架构师 - 中级架构师 - 高级架构…

程序员到底多牛才能成为架构师?

身为技术人&#xff0c;相信你也思考过这个问题&#xff1a;工作了几年&#xff0c;代码写得非常熟练&#xff0c;上线的程序也少有 bug &#xff0c;时不时还能搞个技术分享&#xff0c;但接下来要往哪个方向发展呢&#xff1f; 想来无非是 3 种选择&#xff1a;专精技术、转型…

进击的Android程序员,架构师的成长之路

在IT行业&#xff0c;很多工作一定年限的程序员感觉自己到了瓶颈不知道如何突破&#xff0c;成长为别人眼中的架构师。 架构师对很多人来说非常神秘&#xff0c;那成为架构师都具有哪些要求呢&#xff1f; 我们先来看看互联网公司对于不同阶段的Android开发者开出的薪资水平&…