div+css实现卡片图片悬停文字标题出现动画效果代码
代码语言:html
所属分类:悬停
代码描述:div+css实现卡片图片悬停文字标题出现动画效果代码
代码标签: div css 卡片 图片 悬停 文字 标题 出现 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> <style> * { /* 常规初始化 */ margin: 0; padding: 0; box-sizing: border-box; } body { /* 常规居中显示,简单背景色 */ display: grid; place-content: center; min-height: 100vh; background: linear-gradient(10deg, #0d9545, #45b9dd); } .box { /* 卡片排列开,加间距 */ display: flex; gap: 5vmin; } .card { /* 卡片宽高,高度通过比例自动,圆角,卡片阴影 */ width: 30vmin; aspect-ratio: 3/4; border-radius: 1vmin; box-shadow: rgba(255, 255, 255, 0.2) 0 5vmin 6vmin -8vmin, var(--color) 0 4.5vmin 5vmin -6vmin, rgba(50, 50, 50, 0.5) 0 4vmin 8vmin -2vmin, rgba(0, 0, 0, 0.8) 0 4vmin 5vmin -3vmin; /* 超出部分隐藏,定位点 */ overflow: hidden; position: relative; } .card img { /* 图片宽高,直接铺满整个卡片,按比例缩放 */ width: 100%; height: 100%; object-fit: cover; /* 给个定位脱离原位置,加上过渡动画 */ position: absolute; transition: all 0.8s; } .card:hover img { /* 鼠标放入 图片放大一点 */ transform: scale(1.1); } .card::before, .card::after { content: ""; /* 黑色透明蒙版的宽高,分上下两段,所以高度 50% */ width: 100%; height: 50%; background-color: rgba(0, 0, 0, 0.5); /* 定位在图片上面 */ position: absolute; top: 0; left: 0; z-index: 1; /* 默认横向缩小到 0就看不见了,再添加过渡动画,过渡起点是左边开始 */ transform: scaleX(0); transition: all 0.5s; transform-origin: left; } .card::after { /* 蒙版下半部分,定位到下一半,并添加过渡延时,比上半部分慢一点 */ top: 50%; transition-delay: 0.15s; } .card:hover::before, .card:hover::after { /* 鼠标放入直接 横向缩放 还原大小,配合动画时间 */ transform: scaleX(1); } .card .text-box { /* 文字默认颜色,大小,字间距 */ color: rgba(255, 255, 255, 0.9); font-size: 1.5vmin; letter-spacing: 0.1vmin; /* 显示区域是向内部缩小挤出来 */ inset: 2vmin; /* 定位在底部 */ position: absolute; top: auto; /* 显示层级比黑色蒙版高 */ z-index: 2; } .card .text-box h2, .card .text-box p { /* 文字默认颜色改为图文主题的颜色 */ color: var(--color); /* 默认隐藏,不显示 */ opacity: 0; /* 默认文字在底部以外的位置 */ transform: translateY(10vmin); /* 过渡动画时间,文字颜色稍微长一些,不然不明显 */ transition: all 0.8s, color 3s; } .card .text-box h2 { /* 大标题字体变大,加粗,距离下面多一点 */ font-size: 6vmin; font-weight: bold; margin-bottom: 1vmin; } .card .text-box p { /* 文字段 晚一点开始动画 */ tran.........完整代码请登录后点击上方下载按钮下载查看
网友评论0