购物车

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
*{
    margin: 0;
    padding: 0;
}    
ul{
    width: 800px;
}    
li{
    list-style: none;
}
#box>li{    
    width: 200px;
    height: 200px;
    float: left;
    text-align: center;
    padding: 10px 0px;
}
ul img{
    width: 160px;
    height: 140px;
    box-shadow: 0px 0px 5px black;
}

#aside{
    width: 50px;
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
}
#menu{
    width: 50px;
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    background: black;
}
#menu>li{
    width: 40px;
    height: 40px;
    background: white;
    margin: 5px 0px 5px 5px;
}
.fly{
    position: absolute;
    width: 40px;
    height: 40px;
}
#ul1{
    position: fixed;
    width:300px;
    top:0px;
    bottom:0px;
    right:-300px;
    background:green;
}
</style>
</head>
<body>

<!--box是用来装载商品的元素-->
<ul id="box"></ul>

<!--aside是侧边栏-->
<div id="aside">
    <ul id="ul1"></ul>    <!-- 购物车栏(显示商品) -->
    <ul id="menu">        <!-- 菜单栏(比如用户中心、订单中心、浏览足迹、购物车栏等...) -->
        <li></li>
        <li></li>
        <li></li>
        <li id="li1"></li>    <!-- 抛物线的终点,及购物车栏 -->
    </ul>
    
</div>

<script type="text/javascript" src="js/parabola.js" ></script>
<script type="text/javascript" src="js/data.js" ></script>
<script>
// 字符串模版,把所有商品显示在页面中    
var html = ``;    
db.forEach(obj=>{    // 对每一个商品循环
    html+=`
        <li>
            <img src="images/${obj.img}"><br>
            <input type="button" value="添加到购物车" />
        </li>
    `;
});
box.innerHTML = html;    // 把那一堆商品,显示到box中

// 事件委托,添加到购物车功能
box.onclick = e=>{
    var body = document.body;    // 获取body
    var el = e.target;    // 点击了哪个元素
    if( el.nodeName == "INPUT" ){    // 如果点击的是按钮
        var licr = el.parentNode.children;    // 按钮的父节点的所有子节点
        var img = licr[0];    // li中的图片
        var btn = licr[2];    // li中的按钮
        var cImg = img.cloneNode();    // 拷贝li中的图片
        body.appendChild(cImg);        // 把拷贝的图片,放入body中
        cImg.className = "fly";        // 设置css样式
        // 解构赋值,设置初始坐标
        //li1.innerHTML = cImg;
        [cImg.style.left, cImg.style.top] = [btn.offsetLeft+"px", btn.offsetTop+"px"];    
        
        // 可以以直线的形式,把商品抛到购物车栏中
        //startMove(cImg, {"left":menu.offsetLeft+li1.offsetLeft, "top":li1.offsetTop});
        
        var tarX = menu.offsetLeft+li1.offsetLeft;    // 目标x
        var tarY = li1.offsetTop + document.documentElement.scrollTop; // 目标y
        // 可以以抛物线的形式,把商品跑到购物车栏中
        parabola(cImg, tarX, tarY, -0.001, function(){//当抛到目标点后,执行的回调函数
            body.removeChild(cImg);//当跑到目标点后,删除那个飞起来的图片
        });
        
    }
}

// 侧边栏点击事件
li1.onclick     = ()=>{
    if( ul1.style.right=="0px" ){    // 如果侧边栏是显示的
        startMove(ul1,{"right":-300});    // 侧边栏隐藏
    }else{                            // 如果侧边栏是隐藏的
        startMove(ul1,{"right":0});        // 侧边栏显示
    }
    // 注:第一次触发该函数时,侧边栏是隐藏的,但right取不出值,所以要通过代码把侧边栏显示出来。
}
</script>
</body>
</html>

 

转载于:https://www.cnblogs.com/l8l8/p/8870612.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值