前端超简单炫酷好玩Div换衣服小案例(HTML+CSS+jQuery)

效果:


 图片:

http://127.0.0.1:5500/div1.pnghttp://127.0.0.1:5500/div1.png

http://127.0.0.1:5500/div2.pnghttp://127.0.0.1:5500/div2.png

http://127.0.0.1:5500/div3.pnghttp://127.0.0.1:5500/div3.png

http://127.0.0.1:5500/div3while.pnghttp://127.0.0.1:5500/div3while.png


点击右下角衣服图片可以切换成想要的样式....

HTML代码:

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">

    <title>DIY切换衣服图案</title>
    <link rel="stylesheet" href="./clothing.css">
</head>

<body>
    <div class="container">
        <!-- 图片盒子 -->
        <div class="shirt">
            <!-- 本体 -->
            <img src="div3while.png" alt="">
            <!-- 覆盖层  -->
                <div class="shirt-overlay">
                    <!--  覆盖层图案  -->
                    <div class="shirt-overlay-pattern"></div>
                    <img src="code/111/images/t_shirt_overlay.png" alt="">
                </div>
        </div>
        <!-- 四个小盒子的box -->
        <div class="options">
            <!-- 第一个盒子 -->
            <div class="option active"></div>
            <!-- 第二个盒子 -->
            <div class="option">
                <img src="./div1.png" alt="">
            </div>
            <div class="option">
                <img src="./div2.png" alt="">
            </div>
            <div class="option">
                <img src="./div3.png" alt="">
            </div>
            <div class="option">
                <img src="./微信图片_20230428085916.jpg" alt="">
            </div>
        </div>
    </div>
    <script src="./jquery-1.8.3.min.js"></script>
<script src="./clothing.js"></script>
</body> 

</html>

CSS代码:

*{
    /* 初始化 */
    margin: 0;
    padding: 0;
}
body{
    /* 100vh === height:100% 占据整个窗口*/
    /* 设置元素的最小高度 元素可以比指定值高 不能低于 */
    /* 可以使所有盒子撑满整个屏幕  和屏幕高度一致*/
    min-height: 100vh;
    /* 弹性布局 水平+垂直居中 */
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #404749;
}
.container{
    /* 相对定位 */
    position: relative;
}
/* T恤本体盒子 */
.shirt{
    position: relative;
    height: 80vh;
    /* vh是高的%   vw 是宽的%  相对于视图*/
    display: flex;
    justify-content: center;
    align-items: center;
}
.shirt img{
    height: 100%;    
    /* 高度撑满本体*/
}
/* 覆盖层 */
.shirt-overlay{
    /* 绝对定位  相对于所有衣服的盒子  重叠在一起 不占用空间*/
    position: absolute;
    width: 100%;
    height: 100%;
}
.shirt-overlay img{
    height: 100%; 
    /* 设置混合模式为正片叠底 */
    /* 设置样式, 会把所有白色的部分转换成半透明的 png */
    /* csdn */
    mix-blend-mode: multiply;
}
/* 覆盖层图案 */
.shirt-overlay-pattern{
    position: absolute;
    width: 100%;
    height: 100%;
    /* csdn */
    /* 设置元素上遮罩层的图像 */
    /* 原始图片只显示遮罩图片非透明的部分 */
    /* 面具 图片  给元素带上一个面具 */
    mask-image: url(./div2black.png);
    /* 渐变遮罩 */
    /* 与xxx.png重叠部分会显示,xxx.png透明部分则隐藏 */
    -webkit-mask-image: url(./div2black.png);
    /* 掩码图像的大小 保持图像纵横比 */
    /* 属性的作用是设置使用遮罩效果的图像 */
    mask-size: contain;
    /* cantain 包含 */
    -webkit-mask-size: contain;
}
/* 图案选项 四个盒子的box */
.options{
    position: absolute;
    bottom: 0;
    right: -100px;
}
.option{
    width: 50px;
    height: 50px;
    border-radius: 5px;
    border: 3px solid #fff;
    background-color: #e2e2e2;
    margin-top: 10px;
    /* 鼠标经过一只手 */
    cursor: pointer;
    /* 过渡 边框慢 */
    transition: 0.3s;
}
.option img{
    width: 100%;
    height: 100%;
}
/* 伪类 选中态 */
/* .active 鼠标点击以后边框颜色变为col  保持不变的 */
/* 一般使用 active伪类选择器 和 :hover配合组合使用,
实现按钮鼠标悬停和被点击时的不同样式  */
.option.active{
    border-color: #ff6b81;
}
/* 鼠标移入 */
.option:hover{
    border-color: #ff6b81;
}

JS代码:

//为所有图案选项绑定点击事件的监听器,当点击某个选项时,执行以下操作
//on()事件绑定 在选定的元素上绑定一个或多个事件处理函数
$(".option").on("click",function(){
    // 全部选项移除active样式
    $(".option").removeClass("active");
    //为当前选项添加 active 样式,以便显示选中态
    //addclass增加样式、用于动态增加class类名
    $(this).addClass("active");
    //获取当前选项下的图片地址,以便判断是否需要显示覆盖层图案
    //find命令用来在指定目录下查找文件
    //.attr设置被选元素的属性和值
    let pattern=$(this).find("img").attr("src");
    if(!pattern){
        // 没有图案 覆盖层渐隐
        // 动画渐变 fadeout 该淡出方法通常与 fadeIn() 淡入方法一起使用
        $(".shirt-overlay").fadeOut();
    }else{
        // 有图案 先把覆盖层隐藏
        $(".shirt-overlay").css("display","none");
        // 设置覆盖层图案
        //将覆盖层图案设置为当前选项下的图片
        $(".shirt-overlay-pattern").css("background-image","url("+pattern+")");
        // 覆盖层渐显
        //将覆盖层渐显,即将其透明度从 0 逐渐增加到 1,直到完全可见
        // .fadin用于淡入已隐藏的元素  (里还可以+slow 缓慢的 fast快速的 毫秒)
        $(".shirt-overlay").fadeIn();
    }
})

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,下面是一份使用 HTML+CSS+JS 实现炫酷时钟的示例代码: ```html <!DOCTYPE html> <html> <head> <title>Cool Clock</title> <style type="text/css"> body { background-color: #333; } .clock { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); border-radius: 50%; background-color: #fff; box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); width: 300px; height: 300px; display: flex; align-items: center; justify-content: center; flex-direction: column; } .clock .hour, .clock .minute, .clock .second { position: relative; width: 70%; height: 70%; margin: auto; border-radius: 50%; background-color: #333; display: flex; align-items: center; justify-content: center; font-size: 2rem; color: #fff; } .clock .hour:before, .clock .minute:before, .clock .second:before { content: ""; position: absolute; top: 0; left: 50%; transform: translate(-50%, 0); height: 50%; width: 5px; background-color: #fff; border-radius: 5px; } .clock .hour { z-index: 3; } .clock .hour:before { height: 30%; } .clock .minute { z-index: 2; } .clock .minute:before { height: 40%; } .clock .second { z-index: 1; } .clock .second:before { height: 50%; } .clock .tick { position: absolute; top: 0; left: 50%; transform: translate(-50%, 0); height: 10%; width: 5px; background-color: #fff; border-radius: 5px; transform-origin: center 90%; animation: tick 1s linear infinite; } .clock .tick:nth-child(5n+1) { height: 20%; } .clock .tick:nth-child(10n+1) { height: 30%; } .clock .tick:nth-child(15n+1) { height: 40%; } .clock .tick:nth-child(20n+1) { height: 50%; } @keyframes tick { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } </style> </head> <body> <div class="clock"> <div class="hour"></div> <div class="minute"></div> <div class="second"></div> <div class="tick"></div> <div class="tick"></div> <div class="tick"></div> <div class="tick"></div> <div class="tick"></div> <div class="tick"></div> <div class="tick"></div> <div class="tick"></div> <div class="tick"></div> <div class="tick"></div> </div> <script type="text/javascript"> function updateClock() { var now = new Date(); var hour = now.getHours(); var minute = now.getMinutes(); var second = now.getSeconds(); var hourHand = document.querySelector(".hour"); var minuteHand = document.querySelector(".minute"); var secondHand = document.querySelector(".second"); var hourAngle = (hour % 12) / 12 * 360 + minute / 60 * 30; var minuteAngle = minute / 60 * 360; var secondAngle = second / 60 * 360; hourHand.style.transform = "rotate(" + hourAngle + "deg)"; minuteHand.style.transform = "rotate(" + minuteAngle + "deg)"; secondHand.style.transform = "rotate(" + secondAngle + "deg)"; } setInterval(updateClock, 1000); </script> </body> </html> ``` 这份代码实现了一个圆形的时钟,时钟的样式可以通过 CSS 进行自定义。时钟的指针是通过 CSS 的 `transform: rotate()` 属性来控制旋转角度的,指针的角度是根据当前时间计算出来的。时钟上的刻度线是通过 CSS 的 `animation` 属性来实现的,用 `transform-origin` 控制旋转中心,用 `@keyframes` 定义动画。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

耀南.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值