added contact page, fixed image size in kosen-x, improved Dropdown component
This commit is contained in:
@@ -59,8 +59,8 @@ const handleFocusOutEvent = () => {
|
|||||||
>
|
>
|
||||||
{{ property.label }}
|
{{ property.label }}
|
||||||
</button>
|
</button>
|
||||||
<Transition name="dropdown-fade">
|
<div class="dropdown-item-list-wrapper">
|
||||||
<div class="dropdown-item-list" v-if="isOpen">
|
<div class="dropdown-item-list" :class="{ 'show-list': isOpen }">
|
||||||
<ul>
|
<ul>
|
||||||
<li
|
<li
|
||||||
v-for="entry in property.entries"
|
v-for="entry in property.entries"
|
||||||
@@ -70,7 +70,7 @@ const handleFocusOutEvent = () => {
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</Transition>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -86,25 +86,27 @@ const handleFocusOutEvent = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
display: inline-block;
|
display: inline-flex;
|
||||||
width: fit-content;
|
flex-direction: column;
|
||||||
position: relative;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-label {
|
.dropdown-label {
|
||||||
background: none;
|
background: none;
|
||||||
width: fit-content;
|
width: 100%;
|
||||||
padding: 1rem 2rem;
|
padding: 1rem 2rem;
|
||||||
border: transparent solid 3px;
|
border-top: currentColor solid 3px;
|
||||||
|
border-inline: transparent solid 3px;
|
||||||
|
border-bottom: transparent solid 3px;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: var(--neptune1);
|
color: var(--neptune1);
|
||||||
|
transition: 0.2s linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-label:hover {
|
.dropdown-label:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: var(--andromeda);
|
color: var(--andromeda);
|
||||||
border-top: currentColor solid 3px;
|
border: currentColor solid 3px;
|
||||||
transition: 0.2s linear;
|
transition: 0.2s linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,24 +125,35 @@ const handleFocusOutEvent = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropdown-item-list-wrapper {
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.dropdown-item-list {
|
.dropdown-item-list {
|
||||||
display: block;
|
display: block;
|
||||||
background: var(--neptune1);
|
background: var(--neptune1);
|
||||||
color: var(--starlight);
|
color: var(--starlight);
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
position: absolute;
|
position: relative;
|
||||||
top: auto;
|
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
min-width: 100%;
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
transition: all 0.2s ease;
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
|
min-width: 9rem;
|
||||||
text-wrap: nowrap;
|
text-wrap: nowrap;
|
||||||
|
line-height: 2.125rem;
|
||||||
& ul {
|
& ul {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
padding: 0 0.25rem;
|
padding: 0 0.25rem;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding-top: 1rem;
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
padding-inline: 0.5rem;
|
||||||
}
|
}
|
||||||
& ul li {
|
& ul li {
|
||||||
margin: 0.5rem 0;
|
margin: 0.5rem 0;
|
||||||
transition: 0.2s linear;
|
|
||||||
}
|
}
|
||||||
& ul li:first-child {
|
& ul li:first-child {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
@@ -160,4 +173,10 @@ const handleFocusOutEvent = () => {
|
|||||||
text-decoration-thickness: 2px;
|
text-decoration-thickness: 2px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.show-list {
|
||||||
|
visibility: visible;
|
||||||
|
opacity: 1;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -328,6 +328,7 @@ ul {
|
|||||||
scale: 90%;
|
scale: 90%;
|
||||||
&:hover {
|
&:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
scale: 1.01;
|
||||||
}
|
}
|
||||||
& svg {
|
& svg {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|||||||
@@ -52,6 +52,12 @@ const showThePast = (event: Event) => {
|
|||||||
<li>
|
<li>
|
||||||
<NuxtLink to="/news"> News </NuxtLink>
|
<NuxtLink to="/news"> News </NuxtLink>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<NuxtLink to="/contact">
|
||||||
|
Contact
|
||||||
|
{{ SiteInfo.clubNameAbbreviation }}
|
||||||
|
</NuxtLink>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
|||||||
@@ -20,6 +20,15 @@ const mediaDropDownEntries: Array<DropDownEntry> = [
|
|||||||
{ text: "Gallery", link: "/about/gallery" },
|
{ text: "Gallery", link: "/about/gallery" },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const informationDropDownEntries: Array<DropDownEntry> = [
|
||||||
|
{ text: `About ${SiteInfo.clubNameAbbreviation}`, link: "/about/sera" },
|
||||||
|
{
|
||||||
|
text: "中学生・新入生向け",
|
||||||
|
link: "/about/for-middle-schoolers-and-new-comers",
|
||||||
|
},
|
||||||
|
{ text: "Contact", link: "/contact" },
|
||||||
|
];
|
||||||
|
|
||||||
const hamburgerMenuEntries: Array<DropDownEntry> = [
|
const hamburgerMenuEntries: Array<DropDownEntry> = [
|
||||||
{ text: "Home", link: "/" },
|
{ text: "Home", link: "/" },
|
||||||
{ text: "News", link: "/news" },
|
{ text: "News", link: "/news" },
|
||||||
@@ -35,6 +44,7 @@ const hamburgerMenuEntries: Array<DropDownEntry> = [
|
|||||||
text: "中学生・新入生向け",
|
text: "中学生・新入生向け",
|
||||||
link: "/about/for-middle-schoolers-and-new-comers",
|
link: "/about/for-middle-schoolers-and-new-comers",
|
||||||
},
|
},
|
||||||
|
{ text: "Contact SERA", link: "/contact" },
|
||||||
];
|
];
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -47,7 +57,7 @@ const hamburgerMenuEntries: Array<DropDownEntry> = [
|
|||||||
:mode="DropDownMode.onClick"
|
:mode="DropDownMode.onClick"
|
||||||
:alignment="DropDownAlignment.Left"
|
:alignment="DropDownAlignment.Left"
|
||||||
:entries="exploreDropDownEntries"
|
:entries="exploreDropDownEntries"
|
||||||
class="left-dropdown"
|
class="explore-dropdown"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div id="logo-link">
|
<div id="logo-link">
|
||||||
@@ -56,12 +66,19 @@ const hamburgerMenuEntries: Array<DropDownEntry> = [
|
|||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
</div>
|
</div>
|
||||||
<div id="header-right">
|
<div id="header-right">
|
||||||
|
<DropDown
|
||||||
|
label="Info"
|
||||||
|
:mode="DropDownMode.onClick"
|
||||||
|
:alignment="DropDownAlignment.Right"
|
||||||
|
:entries="informationDropDownEntries"
|
||||||
|
class="info-dropdown"
|
||||||
|
/>
|
||||||
<DropDown
|
<DropDown
|
||||||
label="Media"
|
label="Media"
|
||||||
:mode="DropDownMode.onClick"
|
:mode="DropDownMode.onClick"
|
||||||
:alignment="DropDownAlignment.Right"
|
:alignment="DropDownAlignment.Right"
|
||||||
:entries="mediaDropDownEntries"
|
:entries="mediaDropDownEntries"
|
||||||
class="right-dropdown"
|
class="media-dropdown"
|
||||||
/>
|
/>
|
||||||
<HamburgerMenu
|
<HamburgerMenu
|
||||||
:entries="hamburgerMenuEntries"
|
:entries="hamburgerMenuEntries"
|
||||||
@@ -97,6 +114,9 @@ header {
|
|||||||
#header-left,
|
#header-left,
|
||||||
#header-right {
|
#header-right {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
& > * {
|
||||||
|
margin-inline: 0.25rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#header-left {
|
#header-left {
|
||||||
@@ -140,8 +160,9 @@ header {
|
|||||||
padding-inline: 1rem;
|
padding-inline: 1rem;
|
||||||
width: calc(100% - 2rem);
|
width: calc(100% - 2rem);
|
||||||
}
|
}
|
||||||
.left-dropdown,
|
.explore-dropdown,
|
||||||
.right-dropdown {
|
.info-dropdown,
|
||||||
|
.media-dropdown {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
41
pages/contact.vue
Normal file
41
pages/contact.vue
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import SiteInfo from "~/assets/siteinfo.json";
|
||||||
|
const WebsiteMetaData = generateSeoMeta(
|
||||||
|
"Contact SERA",
|
||||||
|
`${SiteInfo.clubNameAbbreviation}へのお問い合わせ`,
|
||||||
|
"/sera-logo-text.svg"
|
||||||
|
);
|
||||||
|
|
||||||
|
useSeoMeta(WebsiteMetaData);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<PageTop text="Contact" image-path="/images/page-top.jpg" />
|
||||||
|
<PankuzuList
|
||||||
|
:currentPageName="`Contact ${SiteInfo.clubNameAbbreviation}`"
|
||||||
|
/>
|
||||||
|
<main>
|
||||||
|
<section>
|
||||||
|
<h1>{{ SiteInfo.clubNameAbbreviation }}へのお問い合わせ</h1>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<iframe
|
||||||
|
src="https://docs.google.com/forms/d/e/1FAIpQLSd2a8WMfu4v5potmKbwIPJ7fKfL2xpVhaTN6ys2J1A-dRU3sw/viewform?embedded=true"
|
||||||
|
width="100%"
|
||||||
|
height="950"
|
||||||
|
frameborder="0"
|
||||||
|
marginheight="0"
|
||||||
|
marginwidth="0"
|
||||||
|
>読み込んでいます…</iframe
|
||||||
|
>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
main {
|
||||||
|
width: clamp(300px, 70%, 36rem);
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
import { marked } from "marked";
|
import { marked } from "marked";
|
||||||
import { EntryType, type NewsEntry } from "~/utils/types/news";
|
import { EntryType, type NewsEntry } from "~/utils/types/news";
|
||||||
import type { SlideEntry } from "~/utils/types/slide";
|
import type { SlideEntry } from "~/utils/types/slide";
|
||||||
|
import SiteInfo from "~/assets/siteinfo.json";
|
||||||
|
|
||||||
const { data } = await useFetch("/api/getNewsList");
|
const { data } = await useFetch("/api/getNewsList");
|
||||||
|
|
||||||
@@ -31,7 +32,7 @@ const welcomeSlide: Array<SlideEntry> = [
|
|||||||
{
|
{
|
||||||
imagePath: "/images/welcome.jpg",
|
imagePath: "/images/welcome.jpg",
|
||||||
title: "ようこそ!",
|
title: "ようこそ!",
|
||||||
content: "岐阜高専宇宙工学研究会【SERA】のホームページです。",
|
content: `岐阜高専宇宙工学研究会【${SiteInfo.clubNameAbbreviation}】のホームページです。`,
|
||||||
link: undefined,
|
link: undefined,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
@@ -213,19 +214,20 @@ main:last-child {
|
|||||||
#quick-links {
|
#quick-links {
|
||||||
--quick-link-margin: 1rem;
|
--quick-link-margin: 1rem;
|
||||||
display: grid;
|
display: grid;
|
||||||
width: calc(100vw - 40 * var(--quick-link-margin));
|
width: calc(100vw - 2 * var(--quick-link-margin));
|
||||||
height: calc(100vw / 3 * 1 / 3);
|
height: calc(100vw / 9);
|
||||||
|
min-height: 10rem;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: repeat(3, 1fr);
|
||||||
grid-template-rows: 1fr;
|
grid-template-rows: 1fr;
|
||||||
margin: var(--quick-link-margin) calc(20 * var(--quick-link-margin));
|
margin: var(--quick-link-margin);
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.quick-link-entry {
|
.quick-link-entry {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: auto;
|
height: 100%;
|
||||||
aspect-ratio: 3/1;
|
min-height: 10rem;
|
||||||
background-position: center;
|
background-position: center;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
background-color: #414141cb;
|
background-color: #414141cb;
|
||||||
@@ -334,6 +336,7 @@ main:last-child {
|
|||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
grid-area: twitter;
|
grid-area: twitter;
|
||||||
|
margin-top: 1rem;
|
||||||
& > .twitter-timeline {
|
& > .twitter-timeline {
|
||||||
display: unset !important;
|
display: unset !important;
|
||||||
width: unset !important;
|
width: unset !important;
|
||||||
|
|||||||
@@ -83,6 +83,6 @@ section:last-of-type {
|
|||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
width: 60rem;
|
width: clamp(300px, 40vw, 60rem);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user