分析
目录
编译并压缩less(需要先npm安装less)
banner.html
复制代码
banner.less
@import "reset";/*--BANNER--*/.container { position: relative; margin: 20px auto; width: 1000px; height: 300px; overflow: hidden; text-align: center; .wrapper { position: relative; height: 300px; background: url("../img/default.gif") no-repeat center center #EEE; .slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; //=>init style opacity: 0; filter: alpha(opacity=0); z-index: 0; img { display: none; width: 100%; height: 100%; } } } .focusBox { position: relative; top: -40px; z-index: 999; display: inline-block; padding: 4px 8px; height: 12px; background: rgba(0, 0, 0, .2); border-radius: 12px; li { float: left; margin-right: 10px; width: 12px; height: 12px; border-radius: 50%; background: #FFF; cursor: pointer; &.last { margin-right: 0; } &.select { background: #DB192A; } } } .arrow { display: none; position: absolute; top: 50%; z-index: 999; margin-top: -30px; width: 30px; height: 60px; background: url("../img/pre.png") no-repeat; opacity: 0.3; filter: alpha(opacity=30); &:hover { opacity: 1; filter: alpha(opacity=100); } &.arrowLeft { left: 0; background-position: 0 0; } &.arrowRight { right: 0; background-position: -48px 0; } }}复制代码
reset.less
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, button, input, textarea, th, td { margin: 0; padding: 0}body { font-size: 12px; font-style: normal; font-family: "\5FAE\8F6F\96C5\9ED1", Helvetica, sans-serif}small { font-size: 12px}h1 { font-size: 18px}h2 { font-size: 16px}h3 { font-size: 14px}h4, h5, h6 { font-size: 100%}ul, ol { list-style: none}a { text-decoration: none; background-color: transparent}a:hover, a:active { outline-width: 0; text-decoration: none}table { border-collapse: collapse; border-spacing: 0}hr { border: 0; height: 1px}img { border-style: none}img:not([src]) { display: none}svg:not(:root) { overflow: hidden}html { -webkit-touch-callout: none; -webkit-text-size-adjust: 100%}input, textarea, button, a { -webkit-tap-highlight-color: rgba(0, 0, 0, 0)}article, aside, details, figcaption, figure, footer, header, main, menu, nav, section, summary { display: block}audio, canvas, progress, video { display: inline-block}audio:not([controls]), video:not([controls]) { display: none; height: 0}progress { vertical-align: baseline}mark { background-color: #ff0; color: #000}sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline}sub { bottom: -0.25em}sup { top: -0.5em}button, input, select, textarea { font-size: 100%; outline: 0}button, input { overflow: visible}button, select { text-transform: none}textarea { overflow: auto}button, html [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button}button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0}button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText}[type="checkbox"], [type="radio"] { box-sizing: border-box; padding: 0}[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto}[type="search"] { -webkit-appearance: textfield; outline-offset: -2px}[type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration { -webkit-appearance: none}::-webkit-input-placeholder { color: inherit; opacity: .54}::-webkit-file-upload-button { -webkit-appearance: button; font: inherit}.clearfix:after { display: block; height: 0; content: ""; clear: both}复制代码
banner.json
[ { "id": 1, "img": "img/banner1.jpg", "desc": "海,你好", "link": "http://www.baidu.cn/" }, { "id": 2, "img": "img/banner2.jpg", "desc": "梦想起飞", "link": "http://www.baidu.cn/" }, { "id": 3, "img": "img/banner3.jpg", "desc": "把握未来,掌握先机", "link": "http://www.baidu.cn/" }, { "id": 4, "img": "img/banner4.jpg", "desc": "好好学习", "link": "http://www.baidu.cn/" }]复制代码
banner.js
// var bannerRender = (function () {// return {// init: function () {// }// }// })();// bannerRender.init();var bannerRender = (function () { var container = document.getElementById('container'), wrapper = utils.getElementsByClassName('wrapper', container)[0], focusBox = utils.getElementsByClassName('focusBox', container)[0], arrow = utils.children(container, 'a'), arrowLeft = arrow[0], arrowRight = arrow[1]; var bannerData = null, wrapperList = null, focusList = null, wrapperImgList = null; //=>1、ajax获取数据 function queryData() { var xhr = new XMLHttpRequest(); xhr.open('get', 'json/banner.json', false); xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { bannerData = utils.toJSON(xhr.responseText); } }; xhr.send(null); } //=>2、绑定数据 function bindData() { if (!bannerData) return; var str = ``, strFocus = ``; for (var i = 0; i < bannerData.length; i++) { var item = bannerData[i]; str += `
其余文件同之前封装的库(动画库animate和dom库utils)