zoukankan      html  css  js  c++  java
  • 购物车抛物线添加商品

    购物车是我们做项目的一个重点,在做购物车时我们如何让商品以抛物线的形式加入购物车呢?

    先画图分析一下:

    在画图的同时将思路一并列了出来,接下来我们只需将思路用代码展示出来就ok了。

    <!DOCTYPE html>  
    <html lang="en">  
    <head>  
        <meta charset="UTF-8">  
        <title>购物车</title>  
        <style>  
            *{
                margin:0;
                padding:0;
            }
            #addToCart {  
                position: fixed;  
                left: 600px;  
                cursor: pointer;  
                 100px;  
                height: 40px;  
                line-height: 40px;  
                border: 1px solid deeppink;  
                text-align: center;  
                color: deeppink;  
                top:500px;
            }  
            #addToCart:hover {  
                color: #fff;  
                background-color: deeppink;  
            }  
      
            #shopCart {  
                position: fixed;  
                right: 0;  
                top: 200px;  
                color: red;  
            }  
            #shopNum{
                 60px;
                height: 25px;
                background: deeppink;
                color:black;
                text-align: center;
                line-he0ight: 25px;
            }
            .good {
                 20px;
                height: 20px;
                background: palevioletred;
                position: absolute;
            }
        </style>
        <body>
            <div id="addToCart">  
               添加到购物车  
            </div>      
            <div id="shopCart">  
                购物车  
              <p id="shopNum"></p>
            </div>
        </body>
    </html>  
    <script type="text/javascript">
         /*
         addToCart.onclick = function(){
             第一步 : 
                 确定三点坐标
                 起始点:
                     startPoint = {
                         x : addToCart.offsetLeft + addToCart.offsetWidth/2,
                         y : addToCart.offsetTop
                     }
                 结束点
                     endPoint = {
                         x : shopCart.offsetLeft + shopCart.offsetWidth/2,
                         y : shopCart.offsetTop
                     }
                 最高点
                     topPoint = {
                         x : endPoint.x - 100,
                         y : endPoint.y - 70
                     }
             第二步 : 
                 根据三点坐标确定抛物线系数 a  b  c
                 var a = ((startPoint.y - endPoint.y) * (startPoint.x - topPoint.x) - (startPoint.y - topPoint.y) * (startPoint.x - endPoint.x)) / ((startPoint.x * startPoint.x - endPoint.x * endPoint.x) * (startPoint.x - topPoint.x)-(startPoint.x * startPoint.x - topPoint.x * topPoint.x) * (startPoint.x - endPoint.x));  
                
                var b = ((endPoint.y - startPoint.y) - a * (endPoint.x * endPoint.x - startPoint.x * startPoint.x)) / (endPoint.x - startPoint.x);  
                
                var c = startPoint.y - a * startPoint.x * startPoint.x - b * startPoint.x;
             第三步 : 
                 确定抛物线方程
             第四步 : 创建商品 并设置商品的起始位置(起始点坐标)
             第五步 : 通过定时器  让商品运动起来  改变商品的left和top值
             left 就是抛物线方程中的x
             top  就是抛物线方程中的y
             第六步 : 当商品运动到购物车位置处  停止定时器  数量自增  删除商品
         }
         * */
         var num = 0;
         addToCart.onclick = function(){
             //第一步 : 确定三点坐标
                 //起始点:
                     var startPoint = {
                         x : addToCart.offsetLeft + addToCart.offsetWidth/2,
                         y : addToCart.offsetTop
                     }
                 //结束点
                     var endPoint = {
                         x : shopCart.offsetLeft + shopCart.offsetWidth/2,
                         y : shopCart.offsetTop
                     }
                 //最高点
                     var topPoint = {
                         x : endPoint.x - 100,
                         y : endPoint.y - 70
                     }
             //第二步 : 根据三点坐标确定抛物线系数 a  b  c
                 
                 var a = ((startPoint.y - endPoint.y) * (startPoint.x - topPoint.x) - (startPoint.y - topPoint.y) * (startPoint.x - endPoint.x)) / ((startPoint.x * startPoint.x - endPoint.x * endPoint.x) * (startPoint.x - topPoint.x)-(startPoint.x * startPoint.x - topPoint.x * topPoint.x) * (startPoint.x - endPoint.x));  
                
                var b = ((endPoint.y - startPoint.y) - a * (endPoint.x * endPoint.x - startPoint.x * startPoint.x)) / (endPoint.x - startPoint.x);  
                
                var c = startPoint.y - a * startPoint.x * startPoint.x - b * startPoint.x;
            //第三步 : 确定抛物线方程var y = a*x*x + b*x + c;
            
            //第四步 : 创建商品 并设置商品的起始位置(起始点坐标)
            var good = document.createElement("div");
            good.className = "good";
            document.body.appendChild( good );
            var x = startPoint.x;
            var y = startPoint.y;
            //设置商品的起始位置
            good.style.left = x + "px";
            good.style.top = y + "px";
            
            /*
             第五步 : 通过定时器  让商品运动起来  改变商品的left和top值
             left 就是抛物线方程中的x
             top  就是抛物线方程中的y
            */
            var timer = setInterval( function(){
                //根据抛物线方程 确定抛物线轨迹坐标
                x = x + 3;
                y = a*x*x + b*x + c;
                if( x > endPoint.x ){
                    clearInterval(timer);
                    good.remove();
                    shopNum.innerHTML = ++num;
                }else{
                    good.style.left = x + "px";
                    good.style.top = y + "px";
                }
            },20 )
         }
    </script>
  • 相关阅读:
    WPF MarkupExtension
    WPF Binding小数,文本框不能输入小数点的问题
    WPF UnhandledException阻止程序奔溃
    .Net Core的总结
    C#单元测试
    Csla One or more properties are not registered for this type
    unomp 矿池运行问题随记
    矿池负载运行监测记录
    MySql 数据库移植记录
    后台服务运行后无故停止运行,原因不明
  • 原文地址:https://www.cnblogs.com/kinoko-1009/p/10280832.html
Copyright © 2011-2022 走看看