Here it is, nothing fancy…
<html> <head> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script> <style> #app{width:100%;height:3900px;} #main{position:relative;margin:50px auto 2000px;width:550px;} #column{width:20px;height:3800px;background:#BBB;position:absolute;top:0;left:0;} #content{} #content .unit{margin:0 0 20px 50px;width:500px;height:300px;background:#BBB;} #circle{width:20px;height:20px;background:#000;border-radius:50%; position:absolute;top:0;left:0;color:#FFF;line-height:20px;text-align:center; ;} .unit.highlighted{ background:pink !important; } </style> </head> <body> <div id="app"> <div id="main"> <div id="column"> <div id="circle" v-bind:style="{'top':y+'px'}">{{activeUnit}}</div> </div> <div id="content"> <div class="unit" v-bind:class="{'highlighted': activeUnit == 0}"></div> <div class="unit" v-bind:class="{'highlighted': activeUnit == 1}"></div> <div class="unit" v-bind:class="{'highlighted': activeUnit == 2}"></div> <div class="unit" v-bind:class="{'highlighted': activeUnit == 3}"></div> <div class="unit" v-bind:class="{'highlighted': activeUnit == 4}"></div> <div class="unit" v-bind:class="{'highlighted': activeUnit == 5}"></div> <div class="unit" v-bind:class="{'highlighted': activeUnit == 6}"></div> <div class="unit" v-bind:class="{'highlighted': activeUnit == 7}"></div> <div class="unit" v-bind:class="{'highlighted': activeUnit == 8}"></div> <div class="unit" v-bind:class="{'highlighted': activeUnit == 9}"></div> <div class="unit" v-bind:class="{'highlighted': activeUnit == 10}"></div> <div class="unit" v-bind:class="{'highlighted': activeUnit == 11}"></div> </div> </div> <!-- <button id="up" v-on:click="goUp">Up</button> <button id="down" v-on:click="goDown">Down</button> --> </div> </body> <script> var app = new Vue({ el: '#app', data: { y: 0, activeUnit: 0, }, methods: { handleScroll:function(){ var units = document.querySelectorAll('.unit'); app.activeUnit = (function(){ var y = window.scrollY-50; for(var i=0;i<units.length;i++){ if(y < units[0].offsetTop){ return 0; } else if(i+1 >= units.length){ return units.length-1; } else if(y > units[i].offsetTop && y < units[i+1].offsetTop){ return i+1; } } })(); app.y = units[app.activeUnit].offsetTop; }, }, created(){ window.addEventListener('scroll', this.handleScroll); }, destroyed(){ window.removeEventListener('scroll', this.handleScroll); } }) </script> </html>
Version Number 2:
<html> <head> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script> <style> #app{margin:50px auto; width:600px;} hr{border-top: 1px solid #DDD; margin:0 0 50px;} .intro{margin-bottom:50px;color:#888;font-size:16px;line-height:20px;text-align:justify;} .section{width:600px;display:flex;margin:0 auto 50px;} .column{width:20px;background:#DDD;border-radius:10px;} .unit{margin-left:20px;margin-bottom:10px;width:560px;background:#DDD;height:250px; -webkit-transition: background .5s; /* Safari */ transition: background .5s; } .unit.highlighted{background:#373737;} .unit:last-of-type{margin-bottom:0;} .wrapper{position:relative;padding-bottom:20px;} .circle{width:20px;height:20px;border-radius:50%;background:#373737; position: -webkit-sticky; /* Safari */ position: sticky; top: 40vh; opacity:0; } .circle.show{ opacity:1; } </style> </head> <body> <div id="app"> <div class="intro"> 北美科技 于2006年2月在纽约创建。纽约网站设计联盟是北美科技旗下的一个团队,以其多年丰富的网页设计经验,亲切细心地帮助华人建设网站和宣传广告的一条龙服务(做推广就是有免费网站设计)。 北美科技根据客户的需要,来提供最高品质的策略和广告宣传服务,专业的知识的提升与服务,以客户的立场着想,让客户满意,是我们一贯秉持的精神。北美科技致力于企业品牌的建立,帮助企业树立良好的企业形象,打开市场,帮助中小企业走出困境。 北美科技拥有多年网页设计和网站设计经验,专为海外华人企业提供网站建设服务。从网站策划到网站制作,我们的网页设计师为您提供完美的解决方案。网页设计由广告营销专业人才负责,建网站时充分考虑到未来的网络营销、形象产品展示和电子商务功能,为您赢得市场。 北美科技主营业务为:谷歌排名SEO, 网红营销, 视频推广, 微信运营, 英文媒体推广, 社交媒体推广, 网站建设, 网页LOGO设计, 网络商店建站,网络软件开发及网络广告投放推广等网络相关服务。我们提供高效而切合实际的网络开发计划,帮助海内外华人商家在信息时代保持领先地位,抢占新的商机。 请察看我们的作品展示,我们为每个企业量身定做最适合的开发计划。请给我们写信或者打电话,我们将为您免费评估开发所需的费用。 </div> <hr> <div class="wrapper"> <div class="circle" v-bind:class="{'show':circleShow}"></div> <!--Session 1--> <div class="section"> <div class="column"></div> <div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 0}"></div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 1}"></div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 2}"></div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 3}"></div> </div> </div> <hr> <!--Session 2--> <div class="section"> <div class="column"></div> <div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 4}"></div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 5}"></div> </div> </div> <hr> <!--Session 3--> <div class="section"> <div class="column"></div> <div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 6}"></div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 7}"></div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 8}"></div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 9}"></div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 10}"></div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 11}"></div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 12}"></div> <div class="unit" v-bind:class="{'highlighted': highlightedIndex == 13}"></div> </div> </div> </div> <hr> <div class="intro"> I1024网络科技(网站建设,网站优化)凝聚了一批活跃在纽约地区的华人设计师,软件工程师和有活力的媒体人。他们在各自的阵地上有着出色的表现以及丰富的实战经验,更具魅力的是他们的网站创造力和奉献精神。我们的设计实力和团队配合绝对可以胜任任何有具有挑战性的设计工作!纽约网站设计室i1024于2006年2月在纽约创建。 本团队将以其多年丰富的网站设计经验,亲切细心地帮助华人网站设计和广告宣传。I1024网络科技以最有力的整合和不断创新的力量,追求与客户之间的双嬴,始终努力成为行业最具竞争力的品牌。 秉承“说到做到、只认功劳、严己宽人、敢担责任、艰苦奋斗”的团队精神,专注地致力于为企事业单位提供最高品质的互联网多媒体服务,为企事业单位创造全新的通过互联网宣传企业品牌形象途径,与大众一起共同推进中国互联网产业的蓬勃发展。 我们的业务涵盖企事业单位互联网应用服务、多媒体设计、网站建设、网站推广、网站优化、DIV+CSS网站优化、网页设计、网站制作、电子商务的应用,平面设计·标志[标识 商标 logo]·VI[视觉识别系统]·字体·色彩顾问·机构视觉识别系统·企业形象管理顾问·视觉营销顾问·品牌策划·广告图文·画册设计等视觉设计推广领域。 vy曾在摩根大通银行(中国)任职财务经理,负责基金募集和投资者关系的开发及维护。Ivy是北科财务总监兼技术经理,负责协调项目内的技术创新活动,推动主要技术决策,维护公司财务。Ivy拥有中国青年政治学院经济学学士学位和纽约大学会计学硕士学位。纽约网站设计联盟拥有一支成熟睿智却年轻活泼的工作团队。 团队成员都是毕业于国际顶级商学院及从事品牌策划、网站设计、网络推广行业多年的专业人。我们经过长期不懈的努力,积累了丰富的实战经验,使得出色的品牌传播工作博得了客户的充分信赖与赞誉。 北美科技是一个纽约网站设计公司,我们主营业务为:网站设计和建设,网站推广,网络商店建站,网络软件开发及网络广告投放推广等网络相关服务。我们提供高效而切合实际的网络开发计划,帮助海内外华人商家在信息时代保持领先地位,抢占新的商机。 北美科技了解华人企业的需求,所以我们提供最经济的服务价格,最高的制作水准。请察看我们的作品展示,我们为每个企业量身定做最适合的开发计划。请给我们写信或者打电话,我们将为您免费评估开发所需的费用。 </div> </body> <script> var app = new Vue({ el: '#app', data: { y: 0, circleShow: false, highlightedIndex: -1, }, methods: { handleScroll:function(){ var circle = document.getElementById('app').querySelector('.circle'); var circleY = circle.getBoundingClientRect().top; //Update Circle Opcacity Status: app.circleShow = (function(){ var columns = document.getElementById('app').querySelectorAll('.column'); for(var i=0;i<columns.length;i++){ var upperBound = columns[i].getBoundingClientRect().top; var lowerBound = upperBound + columns[i].offsetHeight - 20; if(circleY > upperBound && circleY < lowerBound) return true; }; return false; })(); //Update Unit Highlighted Status: app.highlightedIndex = (function(){ //Update Circle Opcacity Status: var units = document.getElementById('app').querySelectorAll('.unit'); for(var i=0;i<units.length;i++){ var upperBound = units[i].getBoundingClientRect().top; var lowerBound = upperBound + units[i].offsetHeight; if(circleY > upperBound && circleY < lowerBound) return i; }; return -1; })(); } }, created(){ window.addEventListener('scroll', this.handleScroll); }, destroyed(){ window.removeEventListener('scroll', this.handleScroll); } }); </script> </html>