美文网首页程序员
1-2-11 【实战】CSS实现卡包特效

1-2-11 【实战】CSS实现卡包特效

作者: Liyager | 来源:发表于2020-11-09 12:06 被阅读0次

    题外话:建议各位同学看到效果后,先自己写代码实现,然后再看标准答案,会发现一些自己想不到的知识盲区哦~


    文章内容输出来源:拉勾教育大前端就业集训营

    案例:通过CSS实现“卡包”特效

    各位同学一定要自己先试试,然后再看答案,会收获更多~


    标准答案

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            *{
                margin: 0px;
                padding: 0px;
            }
            div{
                position: relative;
                width: 250px;
                height: 187px;
                /* border: 1px solid; */
                margin: 350px auto;
            }
            div img{
                position: absolute;
                left: 0px;
                top: 0px;
                width: 250px;
                height: 187px;
                transition: all 0.5s linear 0s;
                transform-origin: right top;
            }
            div:hover :nth-child(1){
                transform: rotate(60deg);
            }
            div:hover :nth-child(2){
                transform: rotate(120deg);
            }
            div:hover :nth-child(3){
                transform: rotate(180deg);
            }
            div:hover :nth-child(4){
                transform: rotate(240deg);
            }
            div:hover :nth-child(5){
                transform: rotate(300deg);
            }
            div:hover :nth-child(6){
                transform: rotate(360deg);
            }
        </style>
    </head>
    <body>
        <div>
            <img src="cat01.jpeg" alt="">
            <img src="cat02.jpg" alt="">
            <img src="cat03.jpeg" alt="">
            <img src="cat04.jpg" alt="">
            <img src="cat05.jpg" alt="">
            <img src="cat06.jpg" alt="">
        </div>
    </body>
    </html>
    

    说明:图片是笔者自己随便找的,大家也自己下载一些喜欢的图片试试吧。


    错误答案

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            *{
                margin: 0px;
                padding: 0px;
            }
            div{
                position: relative;
                width: 250px;
                height: 187px;
                /* border: 1px solid; */
                margin: 350px auto;
            }
            div img{
                position: absolute;
                left: 0px;
                top: 0px;
                width: 250px;
                height: 187px;
                transition: all 0.5s linear 0s;
                transform-origin: right top;
            }
            .img1:hover{
                transform: rotate(60deg);
            }
            .img2:hover{
                transform: rotate(120deg);
            }
            .img3:hover{
                transform: rotate(180deg);
            }
            .img4:hover{
                transform: rotate(240deg);
            }
            .img5:hover{
                transform: rotate(300deg);
            }
            .img6:hover{
                transform: rotate(360deg);
            }
        </style>
    </head>
    <body>
        <div>
            <img src="cat01.jpeg" class="img1">
            <img src="cat02.jpg"  class="img2">
            <img src="cat03.jpeg" class="img3">
            <img src="cat04.jpg"  class="img4">
            <img src="cat05.jpg"  class="img5">
            <img src="cat06.jpg"  class="img6">
        </div>
    </body>
    </html>
    

    说明

    • 思路大体是对的“定位+每个图片hover”,但是!别忘了定位是有压盖顺序的,所以鼠标移动到图片上时,其实只触发了第六个img的hover。
    • 要解决这个问题,就需要使用父元素的hover,统一用父元素的鼠标悬停事件,来控制6个子元素的旋转。
    • 这里有个知识点:事件捕获时就是按照元素从上到下去执行的,doucment->html->body->父级->子级->子级的子级。
    • 所以,统一用父元素的某个事件,可以有效的解决子元素压盖的问题。

    前端文章汇总目录

    https://www.jianshu.com/p/6d80dd616ff4

    此处感谢小鹿老师,回答了我这个超纲的问题~


    结束语:一花一世界,一木一浮生,愿与诸君共勉

    相关文章

      网友评论

        本文标题:1-2-11 【实战】CSS实现卡包特效

        本文链接:https://www.haomeiwen.com/subject/qzjlbktx.html