CSS笔记(三)卡片选择

发布于:2024-11-28 ⋅ 阅读:(15) ⋅ 点赞:(0)

此处我们想实现的就是鼠标悬停在某张卡片上,该卡片就会放大,有一种卡片上浮的感觉。

预知识

变形transform

https://www.jyshare.com/codedemo/3391/这个网站包含了常见的所有变形
常见参数:

  • translate:平移
  • scale:放缩
  • rotate:旋转
  • skew:倾斜旋转

过度动画transition

常见参数:

  • 需要过渡的属性名称
  • 效果持续时间
  • 过度曲线
  • 过渡延迟

类列表classList

常见参数:

  • add:添加类名,可以同时添加多个
  • contains:判断类名是否存在
  • item:返回对应索引的类名
  • remove:删除类名,可同时删除多个
  • toggle:删除或添加类名,如果该元素存在该类名则删除,如果没有该类名则添加。一个字形容:贱!

鼠标事件

鼠标使用

  • click
  • dbclick
  • mousedown
  • mouseup
  • mousemove
  • moveout
  • moveenter:不冒泡
  • moveleave:不冒泡

鼠标事件对象

  • event.type
  • event.target
  • event.clientX:针对窗口
  • event.clientY
  • event.pageX:针对页面
  • event.pageY
  • event.button

冒泡:存在于父元素和子元素之中,有点像链式反应,触发子元素的事件时会导致父元素事件的触发。

捕获:与冒泡相反,从父元素传播到子元素

代码

<!DOCTYPE html>
<html>
    <head>
        <style>
            /*设置画布*/
            body{
                /* 方便排列与对齐*/
                display: flex; 
                /*画布布满整个窗口*/
                height: 100vh;
                /*水平居中*/
                justify-content: center;

                /*垂直居中*/
                align-items: center;
                /* 设置比较暗的背景色*/
                background-color: rgba(47,48,49,0.9);
                margin: 0;
            }
            /*设置活动区域*/
            .container{
                display: flex;
                justify-content: center;
                align-items: center;
                /*给子元素提供相对描点*/
                position: relative;
                width: 500px;
                height: 500px;
            }
            .card{
                
                /*表示该元素会以相对锚点改变位置*/
                position: absolute;
                width: 150px;
                height: 200px;
                display: flex;
                justify-content: center;
                align-items: center;
                font-size: 30px;
                font-weight: bold;
                background-color: #00ff44;
                transform: scale(1.0);
                /*设置阴影,切记参数之间不要有逗号*/
                box-shadow: 0px 8px 8px rgba(0,0,0,0.8);
                /*控制放缩的时间 如果没有这句放缩就会很僵硬*/
                transition: transform 0.5s;
            }
            .card1{
                left: 0;
                top:0;
            }
            .card2{
                left:300;
                top:100p;
            }
            /*利用多类名来实现放缩*/
            .select{
                transform: scale(1.2);
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="card card1" id="card1">Card1</div>
            <div class="card card2 ">Card2</div>
        </div>
    </body>
    <script>
        const card1 = document.getElementById("card1")
        card1.addEventListener("mouseenter",()=>{
            card1.classList.toggle("select")
        })
        card1.addEventListener("mouseleave",()=>{
            card1.classList.toggle("select")
        })
    </script>
</html>

效果请添加图片描述