利用数组对象的方式,把数据放入数组的对象中,动态加载到一个div中,再通过改变div的定位实现在不同的地方显示不同的内容。
具体效果点击查看
一、html代码
<div id="app"> <ul class="clearfix" id="list"> </ul> <div class="title"> <h3 class="appname"></h3> <p class="info"></p> <span class="count"></span> <a href="#" class="btn">安装到手机</a> </div> </div>
二、css代码
<style> body, ul, h3, p { margin: 0; padding: 0; } body { font: 1em "microsoft Yahei"; background: #eee; color: #333; } li { list-style: none; } a { color: #333; text-decoration: none; } .clearfix::after { content: ""; display: block; clear: both; } #app { width: 600px; margin: 100px auto 0; z-index: 1; } #app li { width: 96px; height: 106px; float: left; position: relative; margin: 0 50px 40px 0; } #app img { vertical-align: middle; cursor: pointer; } #app img:hover { opacity: 0.8; } .title { display: none; position: absolute; width: 250px; left: 20px; border-radius: 5px; background: #fff; filter: drop-shadow(0 0 4px rgba(0, 0, 0, .3)); padding: 20px; z-index: 2; } .title::before { content: ""; position: absolute; border-bottom: 10px solid #fff; border-left: 8px solid transparent; border-right: 8px solid transparent; left: 30px; top: -10px; } .appname { margin-bottom: 0.5em; } .count { color: #999; font-size: 0.75rem; margin-bottom: 0.5em; } .info { font-size: 0.875rem; color: #666; line-height: 1.5; margin-bottom: 0.5em; } .btn { display: block; border-radius: 3px; background: #eee; border: 1px solid #bbb; color: #666; font-size: 0.875rem; padding: 4px 8px; margin-top: 0.5em; text-align: center; } .btn:hover { background: #71BD2B; border-color: #4DBF2B; color: #fff; } </style>
三、js代码
<script> // 找对象 var oUl = document.querySelector("#list"); var oLi = oUl.getElementsByTagName("li"); var oDiv = document.querySelector(".title"); var oH3 = document.querySelector(".appname"); var oP = document.querySelector(".info"); var oSpan = document.querySelector(".count"); var timer = null; // 数据初始化 var data = [{ url: "images/1.png", title: "墨迹天气", content: "全球约5亿人在使用的天气APP,支持196个国家20多万个城市及地区的天气查询,准确定位及时推送,分钟级、公里级天气预报,实时监测阴晴雨雪。", count: "下载5.6亿次" }, { url: "images/2.png", title: '最美天气', content: '始于颜值,陷于精准,忠于陪伴,醉于懂你。最美天气不忘初心砥砺前行,不仅保持最初的精美与颜值,通过不断的升级我们成为了更加懂你的天气预报。', count: '下载5.8亿次' }, { url: "images/3.png", title: '365日历万年历农', content: '从2008年到现在9年时间,我们专注于时间管理,励志成为您最好的生活助手,超2.5亿用户的一致选择。', count: '下载2.6亿次' }, { url: "images/4.png", title: '滴滴出行', content: '【近3亿用户的选择】2012年诞生的滴滴现已成为广受用户欢迎的城市出行应用!覆盖全国超过400个城市,乘客叫车成功率94%以上!', count: '下载10.6亿次' }, { url: "images/5.png", title: '大众点评', content: '-【大众点评黑珍珠餐厅指南】精选中国味蕾,探寻美味餐厅,盛大发布。<br>-【贺岁片放肆看】春节遇上情人节,我想陪你看电影~猜影片领礼券,最高可得35元!', count: '下载8.6亿次' }, { url: "images/6.png", title: '58同城 -租房招', content: '人人信赖的生活服务平台,海量生活信息免费查询、发布。 <br>真实、高效、免费,让您生活更简单!', count: '下载9.3亿次' }, { url: "images/7.png", title: '百度糯米', content: '√精选排行:快速发现优质吃喝玩乐商家<br>√搜索升级:新鲜商圈信息,精选玩乐内容,随时随地搜索get<br>√抽奖:iphone大奖抽不停 ', count: '下载8.2亿次' }, { url: "images/8.png", title: '天气通', content: '专业贴心的天气APP,3.8亿用户的选择,采用权威多数据源授权信息,智能纠错,国内3000多个城市与700多个景区全覆盖的天气预报和实时天气预警信息。各种天气状况从容应对,帮你做好生活决策,为你出行保驾护航。', count: '下载2.1亿次' }, { url: "images/9.png", title: '饿了么', content: '饿了么,专业的本地生活服务平台!<br>【好的都要 随叫随到】品质美食、水果生鲜、鲜花蛋糕、超市百货,30分钟送达!<br>【新人福利】外卖订餐,新用户领50元礼包,更多红包等你拿!', count: '下载12.6亿次' } ] data.forEach(function (item) { oUl.innerHTML += "<li><img src=" + item.url + "></li>" }) Array.from(oLi).forEach(function (item, index) { item.onmouseover = function () { clearTimeout(timer); oDiv.style.display = "block"; oDiv.style.left = item.offsetLeft + 20 + "px"; oDiv.style.top = item.offsetTop + 116 + "px"; oH3.innerHTML = data[index].title; oP.innerHTML = data[index].content; oSpan.innerHTML = data[index].count; } item.onmouseout = function () { timer = setTimeout(function () { oDiv.style.display = "none"; }, 500) } oDiv.onmouseover = function () { clearTimeout(timer); } oDiv.onmouseout = function () { timer = setTimeout(function () { oDiv.style.display = "none"; }, 500) } })
案例下载地址:
链接: https://pan.baidu.com/s/1qGBsOtYrDcWkp0WI3SPCGQ 提取码: 7453
注意:案例代码更新了,但是下载的案例没有更新,可以用页面上的代码代替。
发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。