ADD: Technology tip
This commit is contained in:
parent
1c86f3569e
commit
b7a11e5b84
6 changed files with 43 additions and 20 deletions
|
@ -36,7 +36,7 @@ export const css: ISkill = {name: 'CSS', img: cssImg}
|
||||||
export const html: ISkill = {name: 'HTML', img: htmlImg}
|
export const html: ISkill = {name: 'HTML', img: htmlImg}
|
||||||
export const phaser: ISkill = {name: 'Phaser 3', img: phaserImg}
|
export const phaser: ISkill = {name: 'Phaser 3', img: phaserImg}
|
||||||
export const unity: ISkill = {name: 'Unity 3D', img: unityImg}
|
export const unity: ISkill = {name: 'Unity 3D', img: unityImg}
|
||||||
export const cs: ISkill = {name: 'c sharp', img: csImg}
|
export const cs: ISkill = {name: 'C#', img: csImg}
|
||||||
export const ase: ISkill = {name: 'Aseprite', img: aseImg}
|
export const ase: ISkill = {name: 'Aseprite', img: aseImg}
|
||||||
export const gl: ISkill = {name: 'GitLab', img: glImg, link: 'https://gitlab.com'}
|
export const gl: ISkill = {name: 'GitLab', img: glImg, link: 'https://gitlab.com'}
|
||||||
export const vitest: ISkill = {name: 'Vitest', img: vitestImg, link: 'https://vitest.dev'}
|
export const vitest: ISkill = {name: 'Vitest', img: vitestImg, link: 'https://vitest.dev'}
|
||||||
|
|
|
@ -24,8 +24,10 @@
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
<h3 class="margin-top-big">Mein Netzwerk</h3>
|
<h3 class="margin-top-big">Mein Netzwerk</h3>
|
||||||
<p class="margin-top">Doch auch wenn ich mal voll ausgelastet bin - keine Sorge! Mein <span class="highlight">Netzwerk an Profis</span> kann dir sicher auch weiterhelfen!</p>
|
<p class="margin-top">Doch auch wenn ich mal voll ausgelastet bin - keine Sorge!
|
||||||
<div class="network-list default-gap margin-top" :style="{'--width': `${width}px`, '--children': network.length }">
|
Mein <span class="highlight">Netzwerk an Profis</span> kann dir sicher auch weiterhelfen.
|
||||||
|
</p>
|
||||||
|
<div class="network-list default-gap margin-top">
|
||||||
<Person ref="persons" v-for="person in network" v-bind="person" />
|
<Person ref="persons" v-for="person in network" v-bind="person" />
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
@ -35,13 +37,6 @@
|
||||||
import check from 'iconoir/icons/regular/double-check.svg'
|
import check from 'iconoir/icons/regular/double-check.svg'
|
||||||
import type { Person } from '#components'
|
import type { Person } from '#components'
|
||||||
|
|
||||||
const width = ref(0)
|
|
||||||
const persons = ref<InstanceType<typeof Person>[]>([])
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
width.value = persons.value[0].$el.getBoundingClientRect().width
|
|
||||||
})
|
|
||||||
|
|
||||||
const services = [
|
const services = [
|
||||||
{
|
{
|
||||||
title: 'Bug Research',
|
title: 'Bug Research',
|
||||||
|
|
|
@ -3,11 +3,17 @@
|
||||||
background-image: radial-gradient(circle at 90vw 0, rgba(255,145,0,0.2) 0%, rgba(0,0,0,0) 63%, rgba(0,0,0,0) 100%);
|
background-image: radial-gradient(circle at 90vw 0, rgba(255,145,0,0.2) 0%, rgba(0,0,0,0) 63%, rgba(0,0,0,0) 100%);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
|
|
||||||
& .skills-wrapper {
|
& .skill-list {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
& .tech-list ul {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
& .bottom {
|
& .bottom {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<section class="Skills content">
|
<section class="Skills content">
|
||||||
<h2>Meine Expertise.</h2>
|
<h2>Meine Expertise.</h2>
|
||||||
<h3>Dies sind meine <span class="highlight">Spezialgebiete</span> - aber ich bin flexibel!</h3>
|
<h3>Dies sind meine <span class="highlight">Spezialgebiete</span> - aber ich bin flexibel!</h3>
|
||||||
<div class="skills-wrapper margin-top default-gap">
|
<div class="skill-list margin-top default-gap">
|
||||||
<article class="z-2 card flex-col default-gap" v-for="skill in skills">
|
<article class="z-2 card flex-col default-gap" v-for="skill in skills">
|
||||||
<h3>{{skill.title}}</h3>
|
<h3>{{skill.title}}</h3>
|
||||||
<main>
|
<main>
|
||||||
|
@ -12,8 +12,9 @@
|
||||||
</main>
|
</main>
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
<article class="z-2 card flex-col default-gap margin-top">
|
<article class="tech-list z-2 card flex-col default-gap margin-top">
|
||||||
<h3>Technologien</h3>
|
<h3>Technologien</h3>
|
||||||
|
<p>Neben den klassischen Webentwicklungsstandards JavaScript, HTML und CSS biete ich außerdem folgende Technologien.</p>
|
||||||
<ul class="default-gap">
|
<ul class="default-gap">
|
||||||
<li v-for="tech in technologies">
|
<li v-for="tech in technologies">
|
||||||
<Technology v-bind="tech" size="l"/>
|
<Technology v-bind="tech" size="l"/>
|
||||||
|
@ -29,7 +30,7 @@
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
||||||
import { css, gl, html, java, jetbrains, js, njs, nuxt, pcss, react, rust, ts, vitest, vue } from '~/Skills'
|
import { gl, java, jetbrains, njs, nuxt, pcss, react, rust, ts, vitest, vue } from '~/Skills'
|
||||||
|
|
||||||
const technologies = [ts, pcss, vue, react, nuxt, njs, java, rust, vitest, gl, jetbrains]
|
const technologies = [ts, pcss, vue, react, nuxt, njs, java, rust, vitest, gl, jetbrains]
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,28 @@
|
||||||
.Technology {
|
.Technology {
|
||||||
|
position: relative;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
&.m {
|
&.m img {
|
||||||
height: 30px;
|
height: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.l {
|
&.l img {
|
||||||
height: 50px;
|
height: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
& span {
|
||||||
|
scale: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: -3rem;
|
||||||
|
width: max-content;
|
||||||
|
border: 1px solid var(--color-white);
|
||||||
|
border-radius: 999px;
|
||||||
|
background-color: var(--color-black);
|
||||||
|
padding: .5em 1.5rem;
|
||||||
|
transition: 150ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover span {
|
||||||
|
scale: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
<style scoped src="./Technology.css"/>
|
<style scoped src="./Technology.css"/>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<a v-if="link" :href="link" target="_blank" rel="noopener noreferrer">
|
<div class="Technology flex-col" :class="[size]">
|
||||||
<img class="Technology" :src="img" :alt="name" :class="[size]"/>
|
<a v-if="link" :href="link" target="_blank" rel="noopener noreferrer">
|
||||||
</a>
|
<img :src="img" :alt="name" :class="[size]"/>
|
||||||
<img v-else class="Technology" :src="img" :alt="name" :class="[size]"/>
|
</a>
|
||||||
|
<img v-else :src="img" :alt="name"/>
|
||||||
|
<span class="tip">{{name}}</span>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue