Files
aida_front/src/component/mainPage/signUp/index.vue

901 lines
27 KiB
Vue
Raw Normal View History

2024-12-11 16:26:36 +08:00
<template>
2025-11-26 17:00:09 +08:00
<div class="signUp">
<div class="selectSignUp" v-show="!isSelectSignUp">
<div class="titleTitle">{{ productList.Advantages }}</div>
<div
class="selectMonthlyYearly"
:class="[monthlyOrYearly == 'monthly' ? 'left' : 'right']"
>
<div class="bg"></div>
<div class="leftText" @click="setMonthlyOrYearly('monthly')">
{{ productList.Monthly }}
</div>
<div class="rightText" @click="setMonthlyOrYearly('yearl')">
{{ productList.Yearly }}
</div>
</div>
<div class="gallery_list product_list">
<div
class="gallery_item"
v-for="item in productList[monthlyOrYearly]"
:key="item"
2025-11-27 10:13:54 +08:00
:class="[
{ recommended: item.recommended },
{ monthly: monthlyOrYearly === 'monthly' },
2025-11-27 13:38:30 +08:00
{ yearly: monthlyOrYearly === 'yearl' },
{ academic: item.type === 'academic' }
2025-11-27 10:13:54 +08:00
]"
2025-11-26 17:00:09 +08:00
>
<div class="product_signUp_box">
<img class="img" :src="item?.img" alt="" />
<div class="title">{{ item?.title }}</div>
<div class="info" :class="{ academic: item.type == 'academic' }">
{{ item?.info }}
</div>
2026-01-05 15:25:26 +08:00
<div class="price" v-if="item.type != 'academic'">
2025-11-26 17:00:09 +08:00
<div>{{ item?.price }}</div>
2025-11-27 13:38:30 +08:00
<span
:class="[
{ yearl: monthlyOrYearly == 'yearl' },
{ personal: item.type === 'personal' }
]"
2026-01-05 15:25:26 +08:00
style="white-space: nowrap"
2025-11-27 13:38:30 +08:00
>
2025-11-26 17:00:09 +08:00
{{ item?.detail }}
</span>
</div>
<div class="price academic" v-if="item.type == 'academic'">
<div>{{ item?.custom }}</div>
<span style="font-size: 1.4rem">{{ item?.customInfo }}</span>
</div>
<ul
class="product_detail"
2025-11-27 13:38:30 +08:00
:class="[
2025-12-04 09:39:22 +08:00
{ academic: item.type == 'academic' },
2025-11-27 13:38:30 +08:00
{ chinese: isSelectSuccessively }
]"
2025-11-26 17:00:09 +08:00
>
<li v-for="detailItem in item?.detailList">{{ detailItem }}</li>
</ul>
<div
2025-11-27 13:38:30 +08:00
class="gallery_btn gallery_btn_radius submit"
2025-11-26 17:00:09 +08:00
v-if="item?.btn != 'Contact us' && item?.btn != '联系我们'"
@click="createAccount"
>
{{ item?.btn }}
</div>
2025-11-27 13:38:30 +08:00
<div
class="gallery_btn gallery_btn_radius submit"
v-else
@click="handleContactUs"
>
2025-11-26 17:00:09 +08:00
{{ item?.btn }}
</div>
</div>
<div class="highlight" v-if="item?.highlight">{{ item?.highlight }}</div>
</div>
</div>
</div>
<registerModel ref="registerModel"></registerModel>
</div>
2024-12-11 16:26:36 +08:00
</template>
<script>
2025-11-26 17:00:09 +08:00
import { defineComponent, ref, reactive, watch, onMounted, nextTick, toRefs } from 'vue'
import registerModel from './registerModel.vue'
import { message } from 'ant-design-vue'
import CChargeIcon from '@/assets/icons/CCharge.svg'
2024-12-11 16:26:36 +08:00
2025-11-26 17:00:09 +08:00
export default defineComponent({
components: {
registerModel
},
name: 'login',
props: ['isSelectSuccessively'],
// emits: ['close'],
setup(props, { emit }) {
let dom = reactive({
registerModel: null
})
let data = reactive({
isSelectSignUp: false,
monthlyOrYearly: 'monthly',
productList: [],
productListCn: {
Advantages: '我们的价格方案',
Monthly: '月度',
Yearly: '年度',
monthly: [
{
2025-12-16 14:43:41 +08:00
title: '试用版',
2025-11-26 17:00:09 +08:00
img: CChargeIcon,
type: 'personal',
info: '您的AI时尚设计助手',
price: 'HK$0',
2026-01-23 21:43:48 +08:00
detail: '自注册之日起 7 天内 · 50 个积分',
2025-11-26 17:00:09 +08:00
highlight: '',
discounts: '9折优惠',
detailList: [
'轻松充值积分',
'可在公共化画廊分享设计并与设计师互动',
'支持月付/年付选项',
'适合个人创作者、独立设计师以及所有时尚爱好者',
'客户支持'
],
btn: '立即开始'
},
{
title: '个人版',
img: '/image/homeIntroduct/personal.png',
type: 'personal',
info: '您的AI时尚设计助手',
price: 'HK$100',
detail: '每月·500积分',
highlight: '',
discounts: '9折优惠',
detailList: [
'轻松充值积分',
'可在公共化画廊分享设计并与设计师互动',
'支持月付/年付选项',
'适合个人创作者、独立设计师以及所有时尚爱好者',
'客户支持'
],
2025-11-27 10:13:54 +08:00
btn: '订阅'
2025-11-26 17:00:09 +08:00
},
{
title: '个人专业版',
img: '/image/homeIntroduct/personal.png',
type: 'personal',
info: '您的AI时尚设计助手',
price: 'HK$500',
detail: '每月·3500积分',
highlight: '推荐',
recommended: true,
discounts: '9折优惠',
detailList: [
'轻松充值积分',
'可在公共画廊中分享设计并与设计师互动',
'支持月付/年付选项',
'适合个人创作者、独立设计师以及所有时尚爱好者',
'客户支持'
],
2025-11-27 10:13:54 +08:00
btn: '订阅'
2025-11-26 17:00:09 +08:00
},
{
title: '教育版',
img: '/image/homeIntroduct/academic.png',
type: 'academic',
info: '高校多用户管理系统',
price: '',
detail: '',
custom: '定制方案',
customInfo: '可提供专属教育优惠,详情请联系我们',
highlight: '',
discounts: '',
detailList: [
'灵活的自定义程序以满足学校需求',
'项目期间每月信用额度自动续期',
'可在用户之间灵活共享和分配账户信用额度',
'AI辅助设计教学功能',
'从设计灵感、草图创作到完整时装系列的尖端教学工具',
'基本3D设计功能',
'客户与技术支援'
],
btn: '联系我们'
}
],
yearl: [
2025-11-27 10:13:54 +08:00
{
2025-12-04 09:39:22 +08:00
title: '试用版',
2025-11-27 10:13:54 +08:00
img: CChargeIcon,
type: 'personal',
info: '您的AI时尚设计助手',
price: 'HK$0',
2026-01-23 21:43:48 +08:00
detail: '自注册之日起 7 天内 · 50 个积分',
2025-11-27 10:13:54 +08:00
highlight: '',
discounts: '9折优惠',
detailList: [
'轻松充值积分',
'可在公共化画廊分享设计并与设计师互动',
'支持月付/年付选项',
'适合个人创作者、独立设计师以及所有时尚爱好者',
'客户支持'
],
btn: '立即开始'
},
2025-11-26 17:00:09 +08:00
{
title: '个人版',
img: '/image/homeIntroduct/personal.png',
type: 'personal',
info: '您的AI时尚设计助手',
price: 'HK$5,000',
detail: '每年·50000积分',
2025-11-27 10:13:54 +08:00
highlight: '',
2025-11-26 17:00:09 +08:00
discounts: '9折优惠',
detailList: [
'灵活的自定义程序以满足学校需求',
'可在用户之间灵活共享和分配账户信用额度',
'AI辅助设计教学功能',
'支持草图创意和设计灵感教学',
'基础3D设计功能'
],
2025-11-27 11:18:26 +08:00
btn: '订阅'
2025-11-26 17:00:09 +08:00
},
{
title: '教育版',
img: '/image/homeIntroduct/academic.png',
type: 'academic',
info: '高校多用户管理系统',
price: '',
detail: '',
custom: '定制方案',
customInfo: '可提供专属教育优惠,详情请联系我们',
highlight: '',
discounts: '',
detailList: [
'灵活的自定义程序以满足学校需求',
'项目期间每月信用额度自动续期',
'可在用户之间灵活共享和分配账户信用额度',
'AI辅助设计教学功能',
'从设计灵感、草图创作到完整时装系列的尖端教学工具',
'基本3D设计功能',
'客户与技术支援'
],
btn: '联系我们'
}
]
},
productListEn: {
Advantages: 'Our Pricing Plan',
Monthly: 'Monthly',
Yearly: 'Yearly',
monthly: [
{
2025-12-04 09:39:22 +08:00
title: 'Trial',
2025-11-26 17:00:09 +08:00
img: CChargeIcon,
type: 'personal',
info: 'Your AI Fashion Design Assistant',
price: 'HK$0',
2026-01-23 21:43:48 +08:00
detail: '7 days from sign-up · 50 credits',
2025-11-26 17:00:09 +08:00
highlight: '',
discounts: '10% off',
detailList: [
'Easy to Top up Credits',
'Option to Share Design and Interact with Designers in Public Gallery',
'Support Monthly/Annual Payment Options',
'Suitable for Individual Creator, Independent Designers and Fun for all Fashion Lovers',
'Customer and Technical Support'
],
btn: 'Get Started'
},
{
title: 'Personal',
img: '/image/homeIntroduct/personal.png',
type: 'personal',
info: 'Your AI Fashion Design Assistant',
price: 'HK$100',
detail: 'per month · 500 credits',
highlight: '',
discounts: '10% off',
detailList: [
'Easy to Top up Credits',
'Option to Share Design and Interact with Designers in Public Gallery',
'Support Monthly/Annual Payment Options',
'Suitable for Individual Creator, Independent Designers and Fun for all Fashion Lovers',
'Customer and Technical Support'
],
2025-11-27 10:13:54 +08:00
btn: 'Subscribe'
2025-11-26 17:00:09 +08:00
},
{
title: 'Personal',
img: '/image/homeIntroduct/personal.png',
type: 'personal',
info: 'Your AI Fashion Design Assistant',
price: 'HK$500',
detail: 'per month · 3500 credits',
highlight: 'Recommended',
recommended: true,
discounts: '10% off',
detailList: [
'Easy to Top up Credits',
'Option to Share Design and Interact with Designers in Public Gallery',
'Support Monthly/Annual Payment Options',
'Suitable for Individual Creator, Independent Designers and Fun for all Fashion Lovers',
'Customer and Technical Support'
],
2025-11-27 10:13:54 +08:00
btn: 'Subscribe'
2025-11-26 17:00:09 +08:00
},
{
title: 'Academic',
img: '/image/homeIntroduct/academic.png',
type: 'academic',
info: 'Multi User Management System for Universities',
price: '',
detail: '',
custom: 'Customize',
customInfo: 'Special Academic rate aviable, please contact us for details.',
highlight: '',
discounts: '',
detailList: [
'Flexible Customize Program to Support School Needs',
'Monthly Credit Renewal throughout Program Duration',
'Flexible to Share and Allocate Account Credits among Users',
'Al Assisted Design Teaching Function',
'Cutting-edge Teaching Tool from Design Inspiration, Sketch Creation to Complete Fashion Collection',
'Basic 3D Design Functions',
'Customer and Technical Support'
],
btn: 'Contact us'
}
],
yearl: [
2025-11-27 10:13:54 +08:00
{
2025-12-04 09:39:22 +08:00
title: 'Trial',
2025-11-27 10:13:54 +08:00
img: CChargeIcon,
2025-12-04 09:39:22 +08:00
type: 'personal',
2025-11-27 10:13:54 +08:00
info: 'Your AI Fashion Design Assistant',
price: 'HK$0',
2026-01-23 21:43:48 +08:00
detail: '7 days from sign-up · 50 credits',
2025-11-27 10:13:54 +08:00
highlight: '',
discounts: '10% off',
detailList: [
'Easy to Top up Credits',
'Option to Share Design and Interact with Designers in Public Gallery',
'Support Monthly/Annual Payment Options',
'Suitable for Individual Creator, Independent Designers and Fun for all Fashion Lovers',
'Customer and Technical Support'
],
btn: 'Get Started'
},
2025-11-26 17:00:09 +08:00
{
title: 'Personal',
img: '/image/homeIntroduct/personal.png',
type: 'personal',
info: 'Your AI Fashion Design Assistant',
price: 'HK$5,000',
detail: 'per month · 50000 credits',
2025-11-27 10:13:54 +08:00
highlight: '',
2025-11-26 17:00:09 +08:00
discounts: '10% off',
detailList: [
'Easy to Top up Credits',
'Option to Share Design and Interact with Designers in Public Gallery',
'Support Monthly/Annual Payment Options',
'Suitable for Individual Creator, Independent Designers and Fun for all Fashion Lovers',
'Customer and Technical Support'
],
2025-11-27 11:18:26 +08:00
btn: 'Subscribe'
2025-11-26 17:00:09 +08:00
},
{
title: 'Academic',
img: '/image/homeIntroduct/academic.png',
type: 'academic',
info: 'Multi User Management System for Universities',
price: '',
detail: '',
custom: 'Customize',
customInfo: 'Special Academic rate aviable, please contact us for details.',
highlight: '',
discounts: '',
detailList: [
'Flexible Customize Program to Support School Needs',
'Monthly Credit Renewal throughout Program Duration',
'Flexible to Share and Allocate Account Credits among Users',
'Al Assisted Design Teaching Function',
'Cutting-edge Teaching Tool from Design Inspiration, Sketch Creation to Complete Fashion Collection',
'Basic 3D Design Functions',
'Customer and Technical Support'
],
btn: 'Contact us'
}
]
}
2024-12-11 16:26:36 +08:00
})
2025-11-26 17:00:09 +08:00
watch(
() => props.isSelectSuccessively,
newVal => {
if (newVal) {
data.productList = data.productListCn
} else {
data.productList = data.productListEn
}
},
{ immediate: true }
)
const close = () => {}
const setMonthlyOrYearly = val => {
data.monthlyOrYearly = val
}
const createAccount = () => {
if (window.innerWidth < 768) {
dom.registerModel.pageWidth = '100%'
}
dom.registerModel.init(props.isSelectSuccessively)
}
const handleContactUs = () => {
const email = 'info@code-create.com.hk'
const mailtoLink = `mailto:${email}`
// 检测是否有邮件客户端
let hasEmailClient = false
let blurTimer = null
// 监听窗口失去焦点事件(如果打开了邮件客户端,窗口会失去焦点)
const handleBlur = () => {
hasEmailClient = true
if (blurTimer) {
clearTimeout(blurTimer)
}
window.removeEventListener('blur', handleBlur)
}
window.addEventListener('blur', handleBlur)
// 尝试打开邮件客户端(使用临时链接元素,避免页面跳转)
try {
const tempLink = document.createElement('a')
tempLink.href = mailtoLink
tempLink.style.display = 'none'
document.body.appendChild(tempLink)
tempLink.click()
document.body.removeChild(tempLink)
} catch (e) {
// 如果打开失败,直接复制邮箱
hasEmailClient = false
}
// 设置超时检测如果500ms内窗口没有失去焦点说明没有邮件客户端
blurTimer = setTimeout(() => {
window.removeEventListener('blur', handleBlur)
if (!hasEmailClient) {
// 没有邮件客户端,复制邮箱到剪贴板
copyToClipboard(email)
const isChinese = props.isSelectSuccessively
if (isChinese) {
message.info(`没有检测到邮件客户端,已为您复制邮箱地址:${email}`)
} else {
message.info(`No email client detected, email address copied: ${email}`)
}
}
}, 2000)
}
const copyToClipboard = text => {
if (navigator.clipboard && window.isSecureContext) {
// 使用现代 Clipboard API
navigator.clipboard.writeText(text).catch(() => {
// 如果失败,使用传统方法
fallbackCopyToClipboard(text)
})
} else {
// 使用传统方法
fallbackCopyToClipboard(text)
}
}
const fallbackCopyToClipboard = text => {
const textArea = document.createElement('textarea')
textArea.value = text
textArea.style.position = 'fixed'
textArea.style.left = '-999999px'
textArea.style.top = '-999999px'
document.body.appendChild(textArea)
textArea.focus()
textArea.select()
try {
document.execCommand('copy')
} catch (err) {
console.error('复制失败:', err)
}
document.body.removeChild(textArea)
}
onMounted(() => {})
return {
...toRefs(dom),
...toRefs(data),
close,
setMonthlyOrYearly,
createAccount,
handleContactUs
}
}
})
2024-12-11 16:26:36 +08:00
</script>
<style scoped lang="less">
2025-11-26 17:00:09 +08:00
.signUp {
flex: 1;
padding: 0rem 4rem;
margin-top: 5.6rem;
@media (max-width: 767px) {
margin-top: 1.5rem;
padding: 0rem 3.7rem;
// flex: 1;
// height: 100%;
// overflow-y: auto;
}
.back {
font-size: 1.6rem;
margin-bottom: 3rem;
}
.back,
.introduce > span {
cursor: pointer;
}
.titleTitle {
font-size: 4.6rem;
font-weight: 500;
text-align: center;
margin-bottom: 2rem;
@media (max-width: 767px) {
font-size: 2.68rem;
margin-bottom: 1.1rem;
}
}
.selectMonthlyYearly {
border: 0.7px solid #e7ebff;
background: #fbfbfb;
border-radius: 1rem;
width: 18.5rem;
box-shadow: 0px 0.72px 3.62px 0px #566ee81a inset;
margin: 0 auto;
display: flex;
position: relative;
--selectPadding: 0.58rem;
padding: var(--selectPadding);
2026-01-05 15:25:26 +08:00
transform: scale(1.05);
2025-11-26 17:00:09 +08:00
@media (max-width: 767px) {
--selectPadding: 0.36rem;
border-radius: 0.58rem;
width: 10.8rem;
}
&.left {
> .bg {
left: var(--selectPadding);
}
> .leftText {
2026-01-05 15:25:26 +08:00
color: #fff;
2025-11-26 17:00:09 +08:00
}
}
&.right {
> .bg {
left: calc(50% + var(--selectPadding));
}
> .rightText {
2026-01-05 15:25:26 +08:00
color: #fff;
2025-11-26 17:00:09 +08:00
}
}
> .bg {
border: 0.7px solid #e7ebff;
2026-01-05 15:25:26 +08:00
border-radius: 0.5rem;
2025-11-26 17:00:09 +08:00
box-shadow: 0px 4.35px 26.08px 0px #b5c2fb1a;
background: #ffffff;
width: calc(50% - var(--selectPadding) * 2);
height: calc(100% - var(--selectPadding) * 2);
position: absolute;
transition: all 0.3s;
}
2026-01-05 15:25:26 +08:00
&.left,
&.right {
.bg {
background-color: #000;
}
}
2025-11-26 17:00:09 +08:00
> .leftText,
> .rightText {
cursor: pointer;
font-weight: 400;
font-size: 1.7rem;
width: 50%;
text-align: center;
color: #797878;
position: relative;
font-family: 'pingfang_regular';
@media (max-width: 767px) {
font-size: 1rem;
}
}
}
.introduce {
font-size: 2.4rem;
text-decoration: underline;
}
.selectSignUp {
height: 100%;
display: flex;
flex-direction: column;
@media (max-width: 768px) {
display: flex;
flex-direction: column;
justify-content: center;
}
}
.gallery_list {
display: flex;
// justify-content: center;
flex-wrap: wrap;
justify-content: center;
2025-11-27 10:13:54 +08:00
margin-top: 6rem;
2025-11-26 17:00:09 +08:00
@media (max-width: 767px) {
margin-top: 2.4rem;
}
.gallery_item {
width: 36.2rem;
height: 46.8rem;
padding: 2.38rem;
border-radius: 1.55rem;
2025-11-27 10:13:54 +08:00
border: 0.2rem solid #e7ebff;
2025-11-26 17:00:09 +08:00
margin-right: 8rem;
position: relative;
2025-11-27 10:13:54 +08:00
box-shadow: 0px 15.5px 23.84px 0px #bccaff21;
2025-11-26 17:00:09 +08:00
&.recommended {
border-radius: 1.8rem;
border: 2px solid transparent;
2025-11-27 10:13:54 +08:00
background: linear-gradient(#fff, #fff) padding-box,
linear-gradient(88.13deg, #fbd2ff 0.91%, #e6d3ff 52.5%, #b694ff 101.09%)
2025-11-26 17:00:09 +08:00
border-box;
background-origin: border-box;
background-clip: padding-box, border-box;
}
@media (max-width: 767px) {
width: 100%;
height: auto;
border-radius: 1.3rem;
margin: 0;
margin-bottom: 2.8rem;
2026-01-05 15:25:26 +08:00
padding: 2rem;
2025-11-26 17:00:09 +08:00
padding-bottom: 1.3rem;
}
.product_signUp_box {
display: flex;
flex-direction: column;
height: 100%;
}
&:last-child {
margin-right: 0rem;
margin-bottom: 0rem;
}
.img {
margin-bottom: 1.2rem;
width: 4rem;
height: 4rem;
@media (max-width: 767px) {
width: 2.9rem;
height: 2.9rem;
margin-bottom: 1rem;
}
}
.title {
font-size: 2.6rem;
margin-bottom: 0.8rem;
text-align: left;
font-weight: 500;
@media (max-width: 767px) {
font-size: 2.3rem;
margin-bottom: 0.73rem;
}
}
.info {
font-weight: 400;
font-size: 1.4rem;
color: #797878;
font-family: 'pingfang_regular';
&.academic {
margin-bottom: 0.4rem;
}
@media (max-width: 767px) {
font-size: 1.25rem;
2025-11-27 13:38:30 +08:00
// margin-bottom: 1.25rem;
2025-11-26 17:00:09 +08:00
}
}
.price {
// margin-bottom: 5.2rem;
border-bottom: 0.72px solid #e7ebff;
width: 100%;
display: flex;
2025-11-27 10:13:54 +08:00
column-gap: 0.7rem;
2025-11-26 17:00:09 +08:00
align-items: center;
@media (max-width: 767px) {
margin-bottom: 2.3rem;
}
&.academic {
align-items: flex-start;
flex-direction: column;
> div {
margin-bottom: 0.9rem;
font-size: 3.6rem;
line-height: 1;
2025-11-27 10:13:54 +08:00
2025-11-26 17:00:09 +08:00
@media (max-width: 767px) {
font-size: 3.1rem;
margin-bottom: 0.5rem;
}
}
> span {
margin: 0;
}
}
> div {
font-weight: 500;
font-size: 3.6rem;
2025-11-27 10:13:54 +08:00
letter-spacing: -0.06rem;
2025-11-26 17:00:09 +08:00
color: #1b223c;
2025-11-27 11:36:50 +08:00
margin: 0.3rem 0;
2025-11-26 17:00:09 +08:00
@media (max-width: 767px) {
2025-11-28 10:50:39 +08:00
font-size: 3rem;
2025-11-26 17:00:09 +08:00
}
}
> span {
font-weight: 500;
font-size: 1.3rem;
color: #797878;
// margin-bottom: 1.5rem;
// margin-left: 1rem;
&.yearl {
font-size: 1.3rem;
}
@media (max-width: 767px) {
font-size: 1.2rem;
2026-01-05 15:25:26 +08:00
margin-top: 1rem;
2025-11-26 17:00:09 +08:00
// margin-left: 0.7rem;
// margin-bottom: 1rem;
}
}
}
.detail,
.gallery_btn {
font-size: 1.6rem;
}
.highlight {
2025-11-27 10:13:54 +08:00
font-size: 1.4rem;
2025-11-26 17:00:09 +08:00
position: absolute;
2025-11-27 10:13:54 +08:00
width: 12.41rem;
line-height: 3.4rem;
text-align: center;
2025-11-26 17:00:09 +08:00
top: 0;
right: 0;
background: linear-gradient(
88.13deg,
#fbd2ff 0.91%,
#e6d3ff 52.5%,
#b694ff 101.09%
);
// border-radius: .5rem 1.5rem 0px 1.5rem;
border-top-right-radius: 1.5rem;
2025-11-26 14:37:53 +08:00
border-bottom-left-radius: 0.5rem;
2025-11-26 17:00:09 +08:00
@media (max-width: 767px) {
// border-radius: .46rem .36rem 0px .9rem;
border-top-right-radius: 1.1rem;
border-bottom-left-radius: 0.4rem;
font-size: 1rem;
2026-01-05 15:25:26 +08:00
line-height: 2.5rem;
font-weight: 500;
width: 9rem;
2025-11-26 17:00:09 +08:00
}
}
.product_detail {
padding-left: 3.1rem;
flex: 1;
display: flex;
flex-direction: column;
justify-content: flex-end;
overflow-y: auto;
&.academic {
justify-content: flex-start;
}
li {
list-style: disc;
// margin-bottom: 0.3rem;
font-size: 1.3rem;
font-weight: 500;
}
2025-11-27 13:38:30 +08:00
// li:last-child {
// margin-bottom: 0;
// }
2025-11-26 17:00:09 +08:00
}
.gallery_btn {
line-height: 4.6rem;
width: 100%;
padding: 0;
margin-top: auto;
font-size: 1.7rem;
font-weight: 500;
background-color: #1b223c;
2025-11-27 13:38:30 +08:00
&:hover {
background-color: #fff;
}
2025-11-26 17:00:09 +08:00
@media (max-width: 767px) {
margin-top: 2.5rem;
font-size: 1.25rem;
line-height: 3.4rem;
border-radius: 0.62rem;
}
}
}
2025-11-27 10:13:54 +08:00
.yearly {
width: 44.1rem;
height: 56.9rem;
padding: 2.89rem 2.89rem 3.31rem;
box-sizing: border-box;
.product_signUp_box {
.title {
font-size: 3.1rem;
margin-bottom: 1rem;
}
.info {
font-size: 1.7rem;
}
.price {
> div {
font-size: 4.34rem;
letter-spacing: -1px;
}
span {
font-size: 1.4rem;
}
}
.product_detail {
padding-top: 3.1rem;
justify-content: space-evenly;
2025-11-27 13:38:30 +08:00
li {
font-size: 1.6rem;
}
}
}
@media (max-width: 767px) {
width: 31.9rem;
height: 41.1rem;
padding: 2.09rem 2.09rem 2.11rem;
&.academic {
height: 52rem;
}
.product_signUp_box {
.img {
width: 3.4rem;
height: 3.4rem;
}
.title {
font-size: 2.3rem;
margin-bottom: 0;
letter-spacing: 0.05rem;
}
.info {
font-size: 1.2rem;
}
.price {
margin-bottom: 0;
div {
font-size: 3.1rem;
}
span {
font-size: 1.26rem;
&.personal {
font-size: 0.95rem;
}
}
}
.product_detail {
padding-top: 2rem;
2025-11-27 10:13:54 +08:00
justify-content: flex-end;
2025-11-27 13:38:30 +08:00
margin-bottom: 0;
2026-01-05 15:25:26 +08:00
&.chinese {
2025-11-27 13:38:30 +08:00
justify-content: space-evenly;
}
li {
font-size: 1.15rem;
}
2025-11-27 10:13:54 +08:00
}
2025-11-27 13:38:30 +08:00
.submit {
margin-top: 2rem;
2025-11-27 11:36:50 +08:00
}
2025-11-27 10:13:54 +08:00
}
}
}
2025-11-27 13:38:30 +08:00
.submit {
@media (max-width: 767px) {
margin-top: 2rem;
}
}
2025-11-26 17:00:09 +08:00
}
2024-12-11 16:26:36 +08:00
}
</style>