• 原生JS实现各种经典网页特效——Banner图滚动、选项卡切换、广告弹窗等


    在制作网页过程中,我们可能会遇到各种常用的经典网页特效,比如Banner图片滚动、选项卡循环播放、右下角广告弹窗、评论提交展示、选项动态增删、剪刀石头布小游戏等等等。。。是不是感觉都见到过这些场景、那些这些场景都是如何实现的呢?今天,小瑞老师就一口气把所有经典网页特效效果送给大家!!!

             全部都是原生JS实现哦~~根本不需要什么JQuery、AngularJS等各种类库,是不是很激动,让我们开始吧~

            Tips: 可以收藏博客,保存源码,关键时刻Ctrl+C哦~[微笑]

     

    特效一、Banner图滚动

             效果重现:

    多张图片能够自动实现图片的循环滚动,点击右下角导航图标,可以随意定位到任何一张。

             源码重现:

    1、  HTML源码

    <div id="banner">
    
          <div id="inside">
          <img src="img/banner1.png" id="img1" />
          <img src="img/banner2.png" id="img2" />
          <img src="img/banner3.png" id="img3" />
          <img src="img/banner4.png" id="img4" />
          <img src="img/banner1.png" id="img5" />
    
          </div>
    
        <ul id="bannerNum">
    
             <li onclick="changeBanner(1)">1</li>
    
             <li onclick="changeBanner(2)">2</li>
    
             <li onclick="changeBanner(3)">3</li>
    
             <li onclick="changeBanner(4)">4</li>
    
        </ul>
    
    </div>
    HTML源码

    2、  CSS源码

    *{
    
               padding: 0px;
    
               margin: 0px;
    
    }
    
     
    
    #banner{
    
                100%;
    
               overflow: hidden;
    
               white-space: nowrap;
    
               position: relative;
    
    }
    
     
    
    #banner #inside{
    
                9600px;
    
               position: relative;
    
               left: 50%;
    
               margin-left: -960px;
    
               transition: all 1s ease;
    
    }
    
     
    
    #banner img{
    
                1920px;
    
    }
    
     
    
    #bannerNum{
    
               padding: 0px;
    
               list-style: none;
    
               overflow: hidden;
    
                160px;
    
               position: absolute;
    
               bottom: 30px;
    
               right: 50px;
    
    }
    
     
    
    #bannerNum li{
    
                30px;
    
               height: 30px;
    
               background-color: white;
    
               text-align: center;
    
               line-height: 30px;
    
               margin: 0px 5px;
    
               float: left;
    
               cursor: pointer;
    
    }
    CSS源码

    3、JS源码

             var num = 1;
    
                       var inside;
    
                       window.onload = function(){
    
                               
    
                                inside = document.getElementById("inside");
    
                               
    
                                var interval = setInterval(function(){
    
                                         inside.style.transition = "all 1s ease";
    
                                         num++;
    
                                         switch (num){
    
                                                   case 1:
    
                                                            inside.style.transition = "none";
    
                                                            inside.style.marginLeft = (-960)+"px";
    
                                                            break;
    
                                                   case 2:
    
                                                            inside.style.marginLeft = (-960-1920)+"px";
    
                                                            break;
    
                                                   case 3:
    
                                                            inside.style.marginLeft = (-960-1920*2)+"px";
    
                                                            break;
    
                                                   case 4:
    
                                                            inside.style.marginLeft = (-960-1920*3)+"px";
    
                                                            break;
    
                                                   case 5:
    
                                                            inside.style.marginLeft = (-960-1920*4)+"px";
    
                                                            num = 0;
    
                                                            break;
    
                                                   default:
    
                                                            break;
    
                                         }
    
                                },2000);
    
                       }
    
                      
    
                       function changeBanner(num1){
    
                                inside.style.transition = "none";
    
                                switch (num1){
    
                                         case 1:
    
                                                   inside.style.marginLeft = (-960)+"px";
    
                                                   break;
    
                                         case 2:
    
                                                   inside.style.marginLeft = (-960-1920)+"px";
    
                                                   break;
    
                                         case 3:
    
                                                   inside.style.marginLeft = (-960-1920*2)+"px";
    
                                                   break;
    
                                         case 4:
    
                                                   inside.style.marginLeft = (-960-1920*3)+"px";
    
                                                   break;
    
                                         default:
    
                                                   break;
    
                                }
    
                               
    
                                num = num1-1;
    
                               
    
                       }
    JS源码

     

    特效二、多选项卡循环滚动播放

             效果重现:

    某栏目由多个选项卡组成,可以实现多个选项卡不简单的循环滚动。

      效果图重现:

             源码重现:

    1、  HTML源码

    复制代码
    <div id="outside">
    
                        <div id="inside">
    
                                 <div>1</div>
    
                                 <div>2</div>
    
                                 <div>3</div>
    
                                 <div>4</div>
    
                                 <div>5</div>
    
                                 <div>6</div>
    
                                
    
                                 <div>1</div>
    
                                 <div>2</div>
    
                                 <div>3</div>
    
                                 <div>4</div>
    
                        </div>
    
               </div>
    复制代码
    HTML源码

    2、  CSS源码

    *{
    
               margin: 0px;
    
               padding: 0px;
    
    }
    
    #outside{
    
                1200px;
    
               overflow: hidden;
    
               margin: 0 auto;
    
               height: 300px;
    
    }
    
     
    
    #outside #inside{
    
                3100px;
    
    }
    
     
    
    #outside #inside div{
    
                300px;
    
               height: 300px;
    
               margin: 0px 5px;
    
               background-color: red;
    
               float: left;
    
    }
    CSS源码

    3、JS源码

             var num = 0;
    
             window.onload = function(){
    
                       var inside = document.getElementById("inside");
    
                       setInterval(function(){
    
                                num-=1;
    
                                inside.style.marginLeft = num+"px";
    
                               
    
                                console.log(inside.style.marginLeft);
    
                               
    
                                if(num<=-1860){
    
                                         num = 0;
    
                                }
    
                       },1);
    
             }
    JS源码

     

    特效三、网页右下角广告窗口

             效果重现:

    网页打开,右下角广告图自动弹出,点击关闭可以在右下角显示一横条。点击打开,可以显示全部广告窗。 常用于客服窗口聊天等场景。

      效果图重现:

             源码重现:

    1、  HTML源码

    复制代码
    <div id="div">
    
               <div id="close" onclick="closeWin()">
    
                        ×
    
               </div>
    
    </div>
    复制代码
    HTML源码

    2、CSS源码

    复制代码
    #div{
    
                300px;
    
               height: 250px;
    
               background-color: red;
    
               position: fixed;
    
               bottom: -250px;
    
               right: 0px;
    
               transition: all 1.5s ease;
    
    }
    
     
    
    #close{
    
                20px;
    
               height: 20px;
    
               background-color: green;
    
               text-align: center;
    
               line-height: 20px;
    
               float: right;
    
               margin: 10px;
    
               cursor: pointer;
    
    }
    复制代码
    CSS源码

    3、JS源码

    复制代码
             var div ;            
    
             window.onload = function(){
    
                       div = document.getElementById("div");
    
                       div.style.bottom = "0px";
    
             }
    
            
    
             function closeWin(){
    
                       var close = document.getElementById("close");
    
                       if(close.innerText=="×"){
    
                                close.innerText = "√";
    
                                div.style.bottom = "-200px";
    
                       }else{
    
                                close.innerText = "×";
    
                                div.style.bottom = "0px";
    
                       }
    
                      
    
             }
    复制代码
    JS源码

     

    特效四、网页评论动态添加

             效果重现:

    输入用户名和评论内容,将信息动态追加到已有评论后方。

      效果图重现:

             源码重现:

    1、HTML源码

    <div id="outside">
    
               <h3>最新平均</h3>
    
              
    
               <div id="comment">
    
                        <div id="comment1" class="comment1">
    
                                 腾讯网友
    
                                 <span>李二狗</span>
    
                                 <time>2010年10月5日 19:21:12</time>
    
                                 <p>
    
                                           公务员好啊!可以为人民币服务!
    
                                 </p>                                     
    
                        </div>
    
               </div>
    
              
    
               <h4>发表评论</h4>
    
              
    
               <div id="addComment">
    
                        昵&nbsp;&nbsp;&nbsp;&nbsp;称:<input type="text" id="name" />
    
                        <br /><br />
    
                        评论内容:<textarea id="comContent"></textarea>
    
                       
    
                        <button onclick="addComment()">提交评论</button>
    
               </div>
    
    </div>
    HTML源码

    2、CSS源码

    复制代码
    #outside{
    
                1000px;
    
               margin: 0 auto;
    
               border: 1px solid #E7EAEE;
    
               overflow: hidden;
    
               padding-bottom: 15px;
    
    }
    
     
    
    #outside h3{
    
                95%;
    
               margin: 15px auto;
    
               padding-bottom: 10px;
    
               border-bottom: 1px solid #E7EAEE;
    
               font-family: "宋体",sans-serif;
    
    }
    
     
    
    #outside .comment1{
    
                95%;
    
               margin: 10px auto;
    
               color: #BBBBBB;
    
               font-size: 12px;
    
               border-bottom: 1px dashed #E7EAEE;
    
               font-family: "宋体",sans-serif;
    
    }
    
     
    
    #outside .comment1 time{
    
               float: right;
    
    }
    
     
    
    #outside .comment1 span{
    
               color: #5979B2;
    
               margin-left: 5px;
    
               font-weight: bold;
    
    }
    
     
    
    #outside .comment1 p{
    
               font-size: 16px;
    
               color: black;
    
    }
    
     
    
    #outside h4{
    
                95%;
    
               margin: 15px auto;
    
             color: #404E73;
    
               font-size: 16px;
    
               font-weight: bold;
    
               font-family: "宋体",sans-serif;
    
    }
    
     
    
    #outside #addComment{
    
                95%;
    
               margin: 0 auto;
    
               font-size: 12px;
    
               color: #BBBBBB;
    
    }
    
     
    
    #outside #name{
    
                200px;
    
               border: 1px solid #D9E2EF;
    
    }
    
     
    
    #outside #comContent{
    
                800px;
    
               height: 100px;
    
               resize: none;
    
               border: 1px solid #D9E2EF;
    
               vertical-align: text-top;
    
    }
    
     
    
    #outside button{
    
                100px;
    
               height: 30px;
    
               background-color: #2D46A3;
    
               color: white;
    
               border: hidden;
    
               float: right;
    
               margin: 15px 100px;
    
    }
    复制代码
    CSS源码

    3、JS源码

    复制代码
                       var idNum = 1;
    
             function addComment(){
    
                       idNum++;
    
                       var inputValue = document.getElementById("name").value;
    
                       var textValue = document.getElementById("comContent").value;
    
                      
    
                       if(inputValue==""||textValue==""){
    
                                alert("昵称和评论内容不能为空!!");
    
                                return;
    
                       }
    
                      
    
                       var comContent1 = document.getElementById("comment1");
    
                       var newComment = comContent1.cloneNode(true);
    
                       newComment.setAttribute("id","comment"+idNum);
    
                       newComment.getElementsByTagName("span")[0].innerText = inputValue;
    
                       newComment.getElementsByTagName("p")[0].innerText = textValue;
    
                      
    
                      
    
                       var commentDiv = document.getElementById("comment");
    
                       commentDiv.appendChild(newComment);
    
                      
    
                       document.getElementById("name").value = "";
    
                       document.getElementById("comContent").value = "";
    
                      
    
             }
    
            
    
             window.onload = function(){
    
                       var outside = document.getElementById("outside");
    
                       console.log(document.styleSheets[0].cssRules[0].style.border);
    
             }
    复制代码
    JS源码

     

    特效五、投票列表选项增删

             效果重现:

    投票列表,可以根据需求动态的增加删除选项。。

      效果图重现:

             源码重现:

    1、  HTML源码

    <section id="vote">
    
               <p class="top">添加新投票</p>
    
               <div id="bottom">
    
                        <span>投票内容:</span>
    
                        <input type="text" name="content" id="content" value="" />
    
                        <br /><br />
    
                        <span>投票类型:</span>
    
                        <input type="radio" name="radio" id="radio1" value="1" checked="checked"/>单选
    
                        <input type="radio" name="radio" id="radio2" value="" />多选
    
                        <div id="div1" class="div">
    
                                 <span id="span1">投票选项:</span>
    
                                 <input type="text" name="input1" value="" />
    
                        </div>
    
                        <div id="div2" class="div">
    
                                 <span id="span2">     </span><input type="text" name="input1" value="" />
    
                        </div>
    
               </div>
    
               <div id="button">
    
                        <button>确定</button>
    
                        <a href="#" style="text-decoration: underline;" id="big" onclick="more()">增加选项</a>
    
                        <a href="#" id="small" onclick="close1()">取消操作</a>
    
               </div>
    
    </section>
    HTML源码

    2、CSS源码

    *{
    
               padding: 0px;
    
               margin: 0px;
    
               text-decoration: none;
    
    }
    
    #vote{
    
               margin: 50px;
    
               border: 2px solid #80ABD7;
    
               font-size: 12px;
    
               padding-bottom: 20px;
    
    }
    
    #vote .top{
    
               line-height: 30px;
    
               background-color: #80ABD7;
    
               color: white;
    
               padding-left: 10px;
    
    }
    
    #vote #bottom{
    
               margin-left: 60px;
    
               padding: 15px 0px 15px 0px;
    
    }
    
    #vote #button{
    
               margin-left: 60px;
    
    }
    
    #vote #button button{
    
               padding: 3px 13px;
    
               background-color: #4A6991;
    
               color: white;
    
               font-weight: bold;
    
               border: none;
    
               border-radius: 4px;
    
    }
    
    #vote #button a{
    
               font-size: 12px;
    
               margin-left: 10px;
    
    }
    
    #vote #bottom .div{
    
               margin-top: 15px;
    
    }
    CSS源码

    3、JS源码

             var div2=document.getElementById("div2");
    
             var voteBottom=document.getElementById("bottom");
    
             var idNum=2;
    
             function more(){
    
                       idNum++;
    
                       var divNew=div2.cloneNode("div2");
    
                       divNew.setAttribute("id","div"+idNum);
    
                       var divNewHTML=divNew.innerHTML;
    
                       divNew.innerHTML=divNewHTML+"<span id='shanchu' style='color:blue;' onclick='delate("+idNum+")'>删除</span>";
    
                       voteBottom.appendChild(divNew);
    
             }
    
            
    
             function delate(num){
    
                       var divDelate=document.getElementById("div"+num);
    
                       divDelate.style.display="none";
    
             }
    
     
    
             function close1(){
    
                       //event.preventDefault();
    
                       window.close();
    
             }
    JS源码

     

    特效六、剪刀石头布手机小游戏

             效果重现:

    手机小游戏,剪刀石头布。

      效果图重现:

             源码重现:

    1、HTML源码

    <div id="body">
    
               <div id="tips">
    
                        请选择
    
               </div>
    
              
    
               <div id="imgs">
    
                        <img src="img/jiandao.png" id="jiandao" />
    
                        <img src="img/shitou.png" id="shitou" />
    
                        <img src="img/bu.png" id="bu" />
    
               </div>
    
              
    
             <div id="jieguo">
    
                        <div class="jieguo">
    
                                 <div>您选择了</div>
    
                                 <img src="img/wenhao.png" id="myImg" />
    
                        </div>
    
                       
    
                        <div class="pk">PK</div>
    
                       
    
                        <div class="jieguo">
    
                                 <div>系统选择了</div>
    
                                 <img src="img/wenhao.png" id="computer" />
    
                        </div>
    
             </div>
    
              
    
               <div id="score">
    
                        等待结果中....
    
               </div>
    
              
    
               <div id="scoreFen">
    
                        <span>00</span>:<span>00</span>
    
               </div>
    
    </div>
    HTML源码

    2、  CSS源码

    *{
    
               margin: 0px;
    
               padding: 0px;
    
    }
    
     
    
    #body{
    
                100%;
    
               height: 700px;
    
               max- 500px;
    
               margin: 0 auto;
    
               background-color: #FAE738;
    
               overflow: hidden;
    
    }
    
     
    
    #tips{
    
               margin-top: 40px;
    
               text-align: center;
    
               color: white;
    
               font-size: 36px;
    
               font-weight: bold;
    
    }
    
     
    
    #imgs{
    
                90%;
    
               margin: 20px auto;
    
               display: flex;
    
               justify-content: space-around;
    
    }
    
     
    
    #jieguo{
    
                90%;
    
               margin: 30px auto;
    
               display: flex;
    
               justify-content: space-around;
    
    }
    
     
    
    #jieguo .jieguo div{
    
               height: 30px;
    
                89px;
    
               line-height: 30px;
    
               text-align: center;
    
               color: white;
    
    }
    
     
    
    #jieguo .jieguo img{
    
               height: 89px;
    
    }
    
     
    
    #jieguo .pk{
    
               height: 120px;
    
               line-height: 120px;
    
               font-size: 48px;
    
               font-weight: bold;
    
    }
    
     
    
    #score,#scoreFen{
    
               text-align: center;
    
               font-size: 24px;
    
               color: red;
    
               padding-top: 10px;
    
    }
    CSS源码

    3、JS源码

    var jiandao = document.getElementById("jiandao");
    
    var shitou = document.getElementById("shitou");
    
    var bu = document.getElementById("bu");
    
    var myImg = document.getElementById("myImg");
    
    var computer = document.getElementById("computer");
    
    var score = document.getElementById("score");
    
    var scoreFen = document.getElementById("scoreFen");
    
     
    
    var myScore=0,comScore=0;
    
     
    
    var imgs = ["img/jiandao.png","img/shitou.png","img/bu.png"];
    
     
    
    jiandao.onclick = function(){
    
             var imgSrc = jiandao.getAttribute("src");
    
             myImg.setAttribute("src",imgSrc);
    
             checkImg(imgSrc);
    
    }
    
     
    
    shitou.onclick = function(){
    
             var imgSrc = shitou.getAttribute("src");
    
             myImg.setAttribute("src",imgSrc);
    
             checkImg(imgSrc);
    
    }
    
     
    
    bu.onclick = function(){
    
             var imgSrc = bu.getAttribute("src");
    
             myImg.setAttribute("src",imgSrc);
    
             checkImg(imgSrc);
    
    }
    
     
    
     
    
    function checkImg(imgSrc){
    
             var myIndex = imgs.indexOf(imgSrc);
    
             var intervalId = setInterval(function(){
    
                       var num = parseInt(Math.random()*3);
    
                       computer.setAttribute("src",imgs[num]);
    
             },20);
    
            
    
             setTimeout(function(){
    
                       clearInterval(intervalId);
    
                       var comSrc = computer.getAttribute("src");
    
                       var comIndex = imgs.indexOf(comSrc);
    
                       if(myIndex==comIndex){
    
                                score.innerHTML = "平局!再战一轮吧!";
    
                       }else if(myIndex==0&&comIndex==2
    
                                || myIndex==1&&comIndex==0
    
                                || myIndex==2&&comIndex==1){
    
                                score.innerHTML = "赢啦!继续虐他吧!";
    
                                myScore++;
    
                       }else{
    
                                score.innerHTML = "输啦!继续努力吧!";
    
                                comScore++;
    
                       }
    
                       myScore = (myScore+"").length<2?"0"+myScore:myScore+"";
    
                       comScore = (comScore+"").length<2?"0"+comScore:comScore+"";
    
                      
    
                       scoreFen.firstElementChild.innerHTML = myScore;
    
                       scoreFen.lastElementChild.innerHTML = comScore;
    
                      
    
             },400);
    
    }
    JS源码

     

     

    作者:KeerDi —— 北方的后生

    出处:http://www.cnblogs.com/keerdi/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Prometheus+Grafana监控
    交互式查询⼯具Impala
    langsong
    linux awk命令详解
    k8s环境下处理容器时间问题的多种姿势
    Golang数据类型之结构体-下篇
    Syntax Error: TypeError: this.getOptions is not a function报错
    百度地图开发-绘制点线提示框 07
    百度地图开发-与地图的交互功能 06
    百度地图开发-实现离线地图功能 05
  • 原文地址:https://www.cnblogs.com/123hll/p/7405989.html
Copyright © 2020-2023  润新知