JS小案例总结(JS基础案例)

JS小案例总结

案例一:JS实现tab选项卡功能

描述:纯原生js实现选项卡切换的效果,即当鼠标移入某个选项卡区域时,显示不同的内容。

HTML代码如下:

<body>
    <div id="tabs">
        <div id="options">
            <span class="on">公告</span><span>规则</span><span>论坛</span><span>安全</span><span>公益</span>
        </div>
        <div id="contents">
            <ul style="display: block">
                <li><a href="">阿里苏宁发布"新三体"战略 打造未来十年格局</a></li>
                <li><a href="">高诚信会员无条件信任 200余万广告商品被处罚</a></li>
            </ul>
            <ul>
                <li><a href="">出售假冒商品规则变更 商品发布数量限制变更</a></li>
                <li><a href="">中国质造市场管理规范变更 淘宝网营销规则变更</a></li>
            </ul>
            <ul>
                <li><a href="">淘宝招募卖家志愿者 阿里推出兼职神器</a></li>
                <li><a href="">700家热风淘宝路 是赚钱还是骗子</a></li>
            </ul>
            <ul>
                <li><a href="">淘宝用户必备神器 卖家账户安全9守则</a></li>
                <li><a href="">支付宝实名认证信息 账户没钱也被骗?</a></li>
            </ul>
            <ul>
                <li><a href="">阿里联合公益计划启动 一图看懂联合公益计划</a></li>
                <li><a href="">公益宝贝卖家发票索取 公益机构淘宝开店攻略</a></li>
            </ul>
        </div>
    </div>

</body>

CSS代码如下:

<style>
        body{ background-color: #eee; font-size: 12px;}
        #tabs{ width: 300px; margin: 100px auto; background: #fff; }
        #tabs #options{ height: 30px; line-height: 30px }
        #tabs #options span { width: 60px; text-align: center; display: inline-block; }
        #tabs #options span.on { border-bottom: 2px solid orange; font-weight: bold; }
        #tabs #contents{ padding: 10px 0; }
        #tabs #contents li{ line-height: 20px; padding-left: 15px; }
        #tabs #contents ul{ display: none }
    </style>

JS代码如下:

  <script>
        var spans = document.getElementsByTagName("span");
        var uls = document.getElementsByTagName("ul");
        var len = spans.length;
        for (let i = 0; i < len; i++) {
            spans[i].onmouseover = function () {
                // 1)处理上面的options
                for (let j = 0; j < len; j++) {
                    spans[j].className = "";  // 本质还是操作属性节点
                }
                this.className = "on";
                this.style.cursor = "pointer";
                // 2)处理下面的ul
                for (let j = 0; j < len; j++) {
                    uls[j].style.display = "none";
                }
                uls[i].style.display = "block";
            }
        }
    </script>

案例二:JS实现盒子拖拽功能

描述:鼠标按下并移动,盒子跟着鼠标移动,鼠标离开盒子停止。
HTML代码如下:

<body>
    <div class="box">带我走</div>
</body>

CSS代码如下:

    <style>
        .box{ width: 200px; height: 200px; background-color: pink; position: absolute; top: 0;left: 0; color:#000;}
    </style>

JS代码如下:

<script>
        var box = document.querySelector(".box");
        var divX = 0; // div的x坐标
        var divY = 0; // div的y坐标
        var mouseX = 0; // 鼠标的x坐标
        var mouseY = 0; // 鼠标的y坐标
        box.onmousedown = function (e) {   // 鼠标按下事件
            // 先获取box的位置(相对于body)
            divX = this.offsetLeft;
            divY = this.offsetTop;
            // 再获取鼠标的位置(事件对象获取)
            mouseX = e.clientX;
            mouseY = e.clientY;
        }
        box.onmousemove = function(e){  // 鼠标移动事件
            var disX = e.clientX - mouseX; // 鼠标移动的x距离
            var disY = e.clientY - mouseY;// 鼠标移动的y距离
            // 鼠标移动的距离和盒子移动的距离是一样的
            box.style.left = disX + divX + "px";
            box.style.top = disY + divY + "px"
        }
        box.onmouseup = function (e) {  // 鼠标抬起事件

        }
    </script>-->

案例三:JS实现导航条吸顶效果

描述:当滚动滚动条使导航条到达顶部时,固定导航条的位置在顶部,再向上滚动时,导航条向下。
HTML代码如下:

<body>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<div id="nav">
    导航条
</div>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>
<p>内容填充</p>

CSS代码如下:

  <style type="text/css">
        #nav {
            background: pink;
<p>内容填充</p>
            height: 40px;
            line-height: 40px;
            width:100%;
        }

        h1 {
            height: 100px;
        }

        .fixed {
            position: fixed;
            top: 0px;
            width: 100%;
        }
    </style>

JS代码如下:

 <script>
        window.onload = function () {
            var nav = document.getElementById("nav");
            var ot = nav.offsetTop; // 导航条相对于body顶部的距离
            window.onscroll = function () {
                var t = document.documentElement.scrollTop;
                // console.log("t--->",t)
                // console.log("ot--->",ot)
                if (t >= ot){
                    nav.className = "fixed"
                }else{
                    nav.className = "";
                }
            }
        }
    </script>

案例四:JS实现图片懒加载结构

描述:当滚动到图片顶部的一部分时开始加载图片。
HTML代码如下:

<body>
<div class="wrapper">
    <h2>图片延迟加载</h2>
    <div class="box">
        <h1>内容填充</h1>
    </div>
    <ul>
        <li>
            <img data-src="images/v1.jpg" alt="" />
            <a href="">电影1</a>
        </li>
        <li>
            <img data-src="images/v2.jpg" alt="" />
            <a href="">电影2</a>
        </li>
        <li>
            <img data-src="images/v3.jpg" alt="" />
            <a href="">电影3</a>
        </li>
        <li>
            <img data-src="images/v4.jpg" alt="" />
            <a href="">电影4</a>
        </li>
        <li>
            <img data-src="images/v5.jpg" alt="" />
            <a href="">电影5</a>
        </li>
    </ul>

    <div class="box">
<h1>内容填充</h1>
    </div>
    <ul>
        <li>
            <img data-src="images/v6.jpg" alt="" />
            <a href="">电影6</a>
        </li>
        <li>
            <img data-src="images/v7.jpg" alt="" />
            <a href="">电影7</a>
        </li>
        <li>
            <img data-src="images/v8.jpg" alt="" />
            <a href="">电影8</a>
        </li>
        <li>
            <img data-src="images/v9.jpg" alt="" />
            <a href="">电影9</a>
        </li>
        <li>
            <img data-src="images/v10.jpg" alt="" />
            <a href="">电影10</a>
        </li>
    </ul>

    <div class="box">
<h1>内容填充</h1>
    </div>
    <ul>
        <li>
            <img data-src="images/v11.jpg" alt="" />
            <a href="">电影11</a>
        </li>
        <li>
            <img data-src="images/v12.jpg" alt="" />
            <a href="">电影12</a>
        </li>
        <li>
            <img data-src="images/v13.jpg" alt="" />
            <a href="">电影13</a>
        </li>
        <li>
            <img data-src="images/v14.jpg" alt="" />
            <a href="">电影14</a>
        </li>
        <li>
            <img data-src="images/v15.jpg" alt="" />
            <a href="">电影15</a>
        </li>
    </ul>
    <div class="box">
<h1>内容填充</h1>
    </div>
</div>
</body>

CSS代码如下:

<style type="text/css">
        * {margin:0; padding:0;}
        ul {list-style:none;}
        .wrapper {width:1000px; margin:100px auto 0;}
        .wrapper h2 {background:#ccc; height:40px; line-height:40px; text-align:center;}

        .box {border:1px solid #ccc; height:550px; margin:10px 0;}

        .wrapper ul {overflow:hidden; border:1px solid #ccc; padding:15px 0;}
        .wrapper li {float:left; width:199px;text-align:center;}
        .wrapper li a {display:block;}
    </style>

JS代码如下:

<script>
        window.onload = function () {
            var imgs = document.getElementsByTagName("img");
            // scroll事件的事件源可以是window也可以是document
            document.onscroll = function () {
                // 获取卷去的高度
                var st = document.documentElement.scrollTop;
                // 获取一屏的高度
                var ch = document.documentElement.clientHeight;
                for (let i = 0; i < imgs.length; i++) {
                    var ot = imgs[i].offsetTop;
                    if (st + ch >= ot+100){
                        // img元素冒出来了
                        imgs[i].src = imgs[i].getAttribute("data-src")
                    }
                }
            }
        }
    </script>

案例五:JS实现简易弹幕功能

描述:在输入框输入内容,实现弹幕功能。
HTML代码如下:

<body>
    <input type="text" id="words" />
    <input type="button" value="走你" id="btn" />
</body>

CSS代码如下:

<style>
        .newList{
            height: 100px;
            overflow: hidden;
            background-color: #ccc;
            position: relative;
        }
    </style>

JS代码如下:

<script>
    var btn = document.getElementById("btn");
    btn.onclick = function () {
        var words = document.getElementById("words").value;
        var span = document.createElement("span");
        span.innerHTML = words;
        document.getElementById("words").value = ""; // 清空之前的内容
        span.style.position = "absolute";
        span.style.left = "600px";
        span.style.top = Math.floor(document.documentElement.clientHeight * Math.random()) + "px";
        document.body.appendChild(span);
        // 让span动起来
        timer = setInterval(function () {
            span.style.left = parseInt(span.style.left) - 4 + "px";
            // 当span离开了浏览器,需要清空定时器,并销毁span
            if(parseInt(span.style.left) < -1*span.offsetWidth){
                // 删除span
                document.body.removeChild(span)
                // 清空定时器
                clearInterval(timer)
            }
        },50)
    }
</script>

案例六:JS实现自动滚动新闻列表

描述:让列表实现无缝滚动。
HTML代码如下:

<body>
    <div class="newList" id="newList1">
        <div class="newBody">
            <ul>
                <li>一切都是对象</li>
                <li>对象是属性的集合</li>
                <li>对象是由函数创建的</li>
                <li>this无处不在</li>
                <li>this是在调用时才确定</li>
                <li>一切都是对象</li>
                <li>对象是属性的集合</li>
                <li>对象是由函数创建的</li>
                <li>this无处不在</li>
                <li>this是在调用时才确定</li>
                <li>------------------------------------</li>
            </ul>
        </div>
    </div>
</body>

CSS代码如下:

 <style>
        .newList{
            height: 100px;
            overflow: hidden;
            background-color: #ccc;
            position: relative;
        }
    </style>

JS代码如下:

<script>
    // 思路:要给ul进行绝对定位,改变ul的top的值,top值越来越小,top是负值
    //     在定时器中不断改变top的值
    var newList = document.getElementById("newList1");
    var ul = newList.getElementsByTagName("ul")[0];
    var ulHeight = ul.offsetHeight; // ul的height+padding+border   说白了得到了ul的高度
    ul.style.position = "absolute";
    ul.style.top = "0";
    // 无缝滚动
    ul.innerHTML += ul.innerHTML; // 把新闻列表中的li复制一份  添加后ul中
    function go(){
        console.log(Math.abs(parseInt(ul.style.top)))
        let top = Math.abs(parseInt(ul.style.top));
        if (top >= ulHeight){  // 整个新闻列表向上滚动的距离 大于等于 新闻列表的高度
            ul.style.top = "0"; // 立即把top致成0  肉眼看不出来
        }else {
            ul.style.top = parseInt(ul.style.top) - 2 + "px";
        }
    }
    setInterval(go,50)
</script>

以上都是一些基础案例,入门练手!

  • 23
    点赞
  • 205
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
好的,这里为您提供一个简单的JS基础案例商城: HTML代码: ``` <!DOCTYPE html> <html> <head> <title>JS基础案例商城</title> </head> <body> <h1>JS基础案例商城</h1> <h2>商品列表</h2> <ul id="product-list"> <li> <span class="product-name">商品1</span> <span class="product-price">10元</span> <button class="add-to-cart">加入购物车</button> </li> <li> <span class="product-name">商品2</span> <span class="product-price">20元</span> <button class="add-to-cart">加入购物车</button> </li> <li> <span class="product-name">商品3</span> <span class="product-price">30元</span> <button class="add-to-cart">加入购物车</button> </li> </ul> <h2>购物车</h2> <ul id="cart"> </ul> <h2>总价</h2> <div id="total-price">0元</div> <script src="script.js"></script> </body> </html> ``` JavaScript代码: ``` // 获取商品列表 const productList = document.getElementById('product-list'); // 获取购物车 const cart = document.getElementById('cart'); // 获取总价 const totalPrice = document.getElementById('total-price'); // 初始化总价为0元 let total = 0; // 遍历商品列表中的每个商品 productList.querySelectorAll('li').forEach(function(product) { // 获取商品名称 const name = product.querySelector('.product-name').textContent; // 获取商品价格 const priceText = product.querySelector('.product-price').textContent; const price = parseFloat(priceText); // 获取加入购物车按钮 const addToCartButton = product.querySelector('.add-to-cart'); // 为加入购物车按钮添加点击事件 addToCartButton.addEventListener('click', function() { // 创建一个新的购物车项 const cartItem = document.createElement('li'); const cartItemName = document.createElement('span'); cartItemName.textContent = name; const cartItemPrice = document.createElement('span'); cartItemPrice.textContent = priceText; const cartItemRemoveButton = document.createElement('button'); cartItemRemoveButton.textContent = '删除'; cartItemRemoveButton.addEventListener('click', function() { // 删除购物车项时同时减去总价 total -= price; totalPrice.textContent = total + '元'; cart.removeChild(cartItem); }); cartItem.appendChild(cartItemName); cartItem.appendChild(cartItemPrice); cartItem.appendChild(cartItemRemoveButton); // 将购物车项加入购物车 cart.appendChild(cartItem); // 加上购物车项的价格 total += price; totalPrice.textContent = total + '元'; }); }); ``` 这个案例商城包括了商品列表、购物车和总价三个部分。当用户点击商品列表中的加入购物车按钮时,会将商品名称、价格和一个删除按钮一起加入购物车中,并且总价会相应地增加。如果用户点击购物车中的删除按钮,则会将购物车项从购物车中删除,并且总价会减少相应的价格。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃八哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值