此处我们想实现的就是鼠标悬停在某张卡片上,该卡片就会放大,有一种卡片上浮的感觉。
预知识
变形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>