<div class="card">
<img src="3.3.png" alt="x" width="100%">
<h3>北极光之夜h3>
<p >
生活下去,错误下去,堕落下去,为胜利而欢呼,从生命中重新创造生命!
p>
div>
.card{
width: 200px;
height: 300px;
box-shadow: 1px 1px 5px #555;
cursor: pointer;
background-color: rgb(243, 243, 243);
position: relative;
overflow: hidden;
}
.card h3,.card p{
padding: 5px;
text-align: center;
font-family: 'fangsong';
font-weight: bold;
user-select: none;
}
cursor: pointer; 鼠标样式为小手。
overflow: hidden; 子元素大小超出卡片区域的被隐藏。
user-select: none; 文本不可选中。
<script>
/* 获取元素 */
var card = document.querySelector('.card');
/* 绑定点击事件 */
card.addEventListener('click',function(e){
/* 获取鼠标点击的水平位置 */
let x = e.clientX - this.offsetLeft;
/* 获取鼠标点击的垂直位置 */
let y = e.clientY - this.offsetTop;
/* 创建一个span元素 */
let circle = document.createElement('span');
/* 为span元素添加定位的 left 属性 */
circle.style.left = x + 'px';
/* 为span元素添加定位的 top 属性 */
circle.style.top = y + 'px';
/* 卡片添加创建好的span元素 */
card.appendChild(circle);
/* 1s后移除span元素 */
setInterval(function(){
circle.remove();
},1000)
})
</script>
.card span{
position: absolute;
transform: translate(-50%,-50%);
background-color: rgb(255, 254, 254);
border-radius: 50%;
animation: big 1s ;
}
@keyframes big{
0%{
width: 0px;
height: 0px;
opacity: 1;
}
100%{
width: 400px;
height: 400px;
opacity: 0;
}
}
position: absolute; 绝对定位。
transform: translate(-50%,-50%); 向左和上移动自身宽度和高度的一半。
animation: big 1s; 定义动画,刚好1s完成动画 。
opacity: 1; 不透明。
opacity: 0; 透明。
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
body{
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background-image: radial-gradient(white,black);
}
.card{
width: 200px;
height: 300px;
box-shadow: 1px 1px 5px #555;
cursor: pointer;
background-color: rgb(243, 243, 243);
position: relative;
overflow: hidden;
}
.card h3,.card p{
padding: 5px;
text-align: center;
font-family: 'fangsong';
font-weight: bold;
user-select: none;
}
.card span{
position: absolute;
transform: translate(-50%,-50%);
background-color: rgb(255, 254, 254);
border-radius: 50%;
animation: big 1s ;
}
@keyframes big{
0%{
width: 0px;
height: 0px;
opacity: 1;
}
100%{
width: 400px;
height: 400px;
opacity: 0;
}
}
style>
head>
<body>
<div class="card">
<img src="3.3.png" alt="x" width="100%">
<h3>北极光之夜h3>
<p >
生活下去,错误下去,堕落下去,为胜利而欢呼,从生命中重新创造生命!
p>
div>
<script>
var card = document.querySelector('.card');
card.addEventListener('click',function(e){
let x = e.clientX - this.offsetLeft;
let y = e.clientY - this.offsetTop;
let circle = document.createElement('span');
circle.style.left = x + 'px';
circle.style.top = y + 'px';
card.appendChild(circle);
setInterval(function(){
circle.remove();
},1000)
})
script>
body>
html>
不止卡片,在按钮上,菜单上等等都可以用。
其它文章~:
简约时钟特效 html+css+js
赛博朋克风格按钮 html+css
响应式卡片悬停效果 html+css
水波加载动画 html+css
导航栏滚动渐变效果 html+css+js
书本翻页 html+css
3D立体相册 html+css
炫彩流光按钮 html+css
记一些css属性总结(一)
Sass总结笔记
…等等