Files

268 lines
9.6 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<style>
/* 基础样式:保留原有3D旋转卡片核心样式,修复超链接消失问题 */
.dr_card_wrapper {
width: 100%;
height: clamp(300px, 70vw, 500px);
position: relative;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
z-index: 1;
border: none;
background: none;
touch-action: pan-y;
margin: 0 0 50px 0;
/* 容器间距 */
}
.dr_card_inner {
--dr-w: clamp(60px, 18vw, 100px);
--dr-h: clamp(110px, 30vw, 170px);
--dr-translateZ: calc((var(--dr-w) + var(--dr-h)));
--dr-rotateX: -15deg;
--dr-perspective: clamp(800px, 150vw, 1000px);
--dr-rotate-direction: 1;
/* 统一顺时针旋转,可修改为-1改为逆时针 */
position: absolute;
width: var(--dr-w);
height: var(--dr-h);
top: 50%;
left: 50%;
transform: translate(-50%, -50%) perspective(var(--dr-perspective));
z-index: 2;
transform-style: preserve-3d;
animation: dr_card_rotating 25s linear infinite;
will-change: transform;
-webkit-will-change: transform;
}
@keyframes dr_card_rotating {
from {
transform: translate(-50%, -50%) perspective(var(--dr-perspective)) rotateX(var(--dr-rotateX)) rotateY(0deg);
-webkit-transform: translate(-50%, -50%) perspective(var(--dr-perspective)) rotateX(var(--dr-rotateX)) rotateY(0deg);
}
to {
transform: translate(-50%, -50%) perspective(var(--dr-perspective)) rotateX(var(--dr-rotateX)) rotateY(calc(360deg * var(--dr-rotate-direction)));
-webkit-transform: translate(-50%, -50%) perspective(var(--dr-perspective)) rotateX(var(--dr-rotateX)) rotateY(calc(360deg * var(--dr-rotate-direction)));
}
}
.dr_card_card {
position: absolute;
border-radius: 8px;
overflow: hidden;
top: 0;
right: 0;
bottom: 0;
left: 0;
transform: rotateY(calc((360deg / var(--dr-quantity)) * var(--dr-index))) translateZ(var(--dr-translateZ));
-webkit-transform: rotateY(calc((360deg / var(--dr-quantity)) * var(--dr-index))) translateZ(var(--dr-translateZ));
touch-action: manipulation;
z-index: 3;
/* 保证卡片层级高于背景 */
transition: all 0.3s ease;
/* 过渡动画,优化交互体验 */
}
.dr_card_card a {
text-decoration: none;
color: inherit;
display: block;
width: 100%;
height: 100%;
tap-highlight-color: transparent;
-webkit-tap-highlight-color: transparent;
}
.dr_card_img {
width: 100%;
height: 100%;
object-fit: cover;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-color: #eee;
position: relative;
/* 为视频播放图标做定位容器 */
}
/* 图片卡片专属样式(绿色系,标识静态图片) */
.dr_card_card--img {
border: 2px solid #4CAF50;
/* 绿色边框,直观区分 */
background-color: rgba(76, 175, 80, 0.1);
/* 浅绿透明底色,增加层次感 */
}
/* 视频卡片专属样式(蓝色系,标识动态视频) */
.dr_card_card--video {
border: 2px solid #2196F3;
/* 蓝色边框,直观区分 */
background-color: rgba(33, 150, 243, 0.1);
/* 浅蓝透明底色,增加层次感 */
}
/* 视频卡片专属播放图标,用户一眼识别视频类型 */
.dr_card_card--video .dr_card_img::after {
content: "";
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 30px;
height: 30px;
border-radius: 50%;
background-color: rgba(255, 255, 255, 0.9);
clip-path: polygon(50% 50%, 80% 50%, 65% 35%, 65% 65%);
/* 三角形播放按钮 */
z-index: 10;
pointer-events: none;
/* 不遮挡超链接点击 */
}
/* 卡片标签,明确标注图片/视频(强化信息) */
.dr_card_tag {
position: absolute;
top: 0;
left: 0;
right: 0;
height: 20px;
line-height: 20px;
font-size: 12px;
color: #fff;
text-align: center;
z-index: 5;
font-family: Arial, sans-serif;
}
.dr_card_tag--img {
background-color: #4CAF50;
}
.dr_card_tag--video {
background-color: #2196F3;
}
/* 交互反馈,强化用户认知(电脑端hover/手机端active */
.dr_card_card--img:hover {
box-shadow: 0 0 18px rgba(76, 175, 80, 0.6);
/* 绿色阴影扩散 */
transform: rotateY(calc((360deg / var(--dr-quantity)) * var(--dr-index))) translateZ(var(--dr-translateZ)) scale(1.05);
/* 轻微放大 */
}
.dr_card_card--video:hover {
box-shadow: 0 0 18px rgba(33, 150, 243, 0.6);
/* 蓝色阴影扩散 */
transform: rotateY(calc((360deg / var(--dr-quantity)) * var(--dr-index))) translateZ(var(--dr-translateZ)) scale(1.05);
/* 轻微放大 */
}
.dr_card_card--img:active,
.dr_card_card--video:active {
opacity: 0.9;
/* 手机端触摸反馈,轻微透明 */
}
/* 媒体查询:小屏手机优化 - 缩小标签文字及容器尺寸 */
@media (max-width: 375px) {
.dr_card_inner {
--dr-rotateX: -10deg;
animation-duration: 30s;
}
.dr_card_card {
border-radius: 6px;
}
.dr_card_card--video .dr_card_img::after {
width: 24px;
height: 24px;
/* 小屏缩小播放图标 */
}
/* 手机端:缩小标签容器高度和文字大小 */
.dr_card_tag {
height: 16px;
/* 标签容器高度减小 */
line-height: 16px;
/* 行高与高度匹配,垂直居中 */
font-size: 10px;
/* 标签文字缩小 */
}
}
</style>
<!-- 单个旋转容器:包含5张图片 + 5个视频(总计10张卡片) -->
<div class="dr_card_wrapper">
<div class="dr_card_inner" style="--dr-quantity: 10; --dr-rotate-direction: 1;">
<!-- 图片卡片(5张,随机挑选原图片集中的5张) -->
<div class="dr_card_card dr_card_card--img" style="--dr-index: 0;">
<div class="dr_card_tag dr_card_tag--img">图片</div>
<a href="/photos">
<div class="dr_card_img" style="background-image: url('/upload/3867579473.jpg');"></div>
</a>
</div>
<div class="dr_card_card dr_card_card--img" style="--dr-index: 1;">
<div class="dr_card_tag dr_card_tag--img">图片</div>
<a href="/photos">
<div class="dr_card_img" style="background-image: url('/upload/433739173.jpg');"></div>
</a>
</div>
<div class="dr_card_card dr_card_card--img" style="--dr-index: 2;">
<div class="dr_card_tag dr_card_tag--img">图片</div>
<a href="/photos">
<div class="dr_card_img" style="background-image: url('/upload/2026-0.png');"></div>
</a>
</div>
<div class="dr_card_card dr_card_card--img" style="--dr-index: 3;">
<div class="dr_card_tag dr_card_tag--img">图片</div>
<a href="/photos">
<div class="dr_card_img" style="background-image: url('/upload/IMG_20251207_103435.jpg');"></div>
</a>
</div>
<div class="dr_card_card dr_card_card--img" style="--dr-index: 4;">
<div class="dr_card_tag dr_card_tag--img">图片</div>
<a href="/photos">
<div class="dr_card_img" style="background-image: url('/upload/26szrmrp1fm.jpg');"></div>
</a>
</div>
<!-- 视频卡片(5张,随机挑选原视频集中的5张) -->
<div class="dr_card_card dr_card_card--video" style="--dr-index: 5;">
<div class="dr_card_tag dr_card_tag--video">视频</div>
<a href="/videos">
<div class="dr_card_img" style="background-image: url('/upload/ec39c62fly1i3rextah4gj22dc35s1ky.jpg');">
</div>
</a>
</div>
<div class="dr_card_card dr_card_card--video" style="--dr-index: 6;">
<div class="dr_card_tag dr_card_tag--video">视频</div>
<a href="/videos">
<div class="dr_card_img" style="background-image: url('/upload/8aea7800gy1i2vfbxoqhdj24w07c0b2p.jpg');">
</div>
</a>
</div>
<div class="dr_card_card dr_card_card--video" style="--dr-index: 7;">
<div class="dr_card_tag dr_card_tag--video">视频</div>
<a href="/videos">
<div class="dr_card_img" style="background-image: url('/upload/IMG_20251207_161707.jpg');"></div>
</a>
</div>
<div class="dr_card_card dr_card_card--video" style="--dr-index: 8;">
<div class="dr_card_tag dr_card_tag--video">视频</div>
<a href="/videos">
<div class="dr_card_img" style="background-image: url('/upload/IMG_9900.jpg');"></div>
</a>
</div>
<div class="dr_card_card dr_card_card--video" style="--dr-index: 9;">
<div class="dr_card_tag dr_card_tag--video">视频</div>
<a href="/videos">
<div class="dr_card_img" style="background-image: url('/upload/IMG_9902.jpg');"></div>
</a>
</div>
</div>
</div>