Files
docs/docs/components/index.vue
2025-09-11 15:19:28 +08:00

173 lines
3.4 KiB
Vue

<template>
<section class="tencent-showcase">
<div class="ten_main">
<div class="ten_links">
<a
href="/devstar"
class="ten_img"
@mouseenter="hoverItem = 'about'"
@mouseleave="hoverItem = null"
>
<img
src="/public/promotional-graphic-devstar.png"
alt="devstar"
class="tencent-image"
:class="{ 'image-hover': hoverItem === 'about' }"
>
<div class="ten_img_txt" :class="{ 'text-hover': hoverItem === 'about' }">
<h2>Devstar Studio</h2>
</div>
</a>
<a
href="/cloudbuild"
class="ten_img"
@mouseenter="hoverItem = 'culture'"
@mouseleave="hoverItem = null"
>
<img
src="/public/promotional-graphic-cloudbuild.jpg"
alt="cloudbuild"
class="tencent-image"
:class="{ 'image-hover': hoverItem === 'culture' }"
>
<div class="ten_img_txt" :class="{ 'text-hover': hoverItem === 'culture' }">
<h2>Cloudbuild</h2>
</div>
</a>
<a
href="/simulator"
class="ten_img"
@mouseenter="hoverItem = 'office'"
@mouseleave="hoverItem = null"
>
<img
src="/public/promotional-graphic-simulator.jpg"
alt="simulator"
class="tencent-image"
:class="{ 'image-hover': hoverItem === 'office' }"
>
<div class="ten_img_txt" :class="{ 'text-hover': hoverItem === 'office' }">
<h2>Simulator</h2>
</div>
</a>
</div>
</div>
</section>
</template>
<script>
export default {
name: 'Showcase',
data() {
return {
hoverItem: null
}
}
}
</script>
<style scoped>
/* 基础布局 */
.tencent-showcase {
background: white;
}
.ten_main {
max-width: 1200px;
margin: 0 auto;
}
.ten_links {
display: flex;
justify-content: space-between;
gap: 30px;
}
/* 卡片容器 */
.ten_img {
position: relative;
display: block;
flex: 1;
text-decoration: none;
overflow: hidden;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease;
}
.ten_img:hover {
transform: translateY(-5px);
}
/* 图片样式 */
.tencent-image {
width: 100%;
height: 200px;
/* object-fit: contain; */
object-position: center;
background-color: #f5f7fa;
/* padding: 20px; */
box-sizing: border-box;
transition: all 0.5s ease;
}
.image-hover {
filter: brightness(0.95);
background-color: #e3f2fd;
}
/* 文字区域 */
.ten_img_txt {
position: absolute;
bottom: 0;
left: 0;
right: 0;
padding: 20px;
background: linear-gradient(to top, rgba(0,0,0,0.5), transparent);
height: 80px;
display: flex;
align-items: flex-end;
transition: all 0.3s ease;
}
.text-hover {
background: linear-gradient(to top, rgba(0,90,180,0.7), transparent);
}
.ten_img_txt h2 {
border-top: none;
color: white;
font-size: 22px;
margin: 0;
position: relative;
padding-bottom: 8px;
}
/* 悬浮时显示的下划线 */
.text-hover h2::after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 60px;
height: 2px;
background: white;
}
/* 响应式设计 */
@media (max-width: 768px) {
.ten_links {
flex-direction: column;
}
.ten_img {
margin-bottom: 20px;
}
.tencent-image {
height: 180px;
}
}
</style>