ADD: Skills
This commit is contained in:
parent
c04f9e66ca
commit
8d282499bd
8 changed files with 103 additions and 29 deletions
18
Globals.css
18
Globals.css
|
@ -7,8 +7,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
::selection {
|
::selection {
|
||||||
background: #6c5ce7;
|
background: var(--color-orange);
|
||||||
color: #dfe6e9;
|
color: var(--color-black);
|
||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
|
@ -37,15 +37,18 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--spacing-standard: 25px;
|
--spacing-standard: 3rem;
|
||||||
--transition-time: 250ms;
|
--transition-time: 250ms;
|
||||||
--radius-standard: 4px;
|
--radius-standard: 4px;
|
||||||
|
|
||||||
--color-white: #ecf0f1;
|
--color-white: #ecf0f1;
|
||||||
--color-white-transparent: rgba(236, 240, 241, 0.8);
|
--color-white-transparent: rgba(236, 240, 241, 0.8);
|
||||||
|
|
||||||
--color-black: #2a2723;
|
--color-black: #2a2723;
|
||||||
|
--color-black-transparent: #2a2723aa;
|
||||||
|
|
||||||
--color-orange: #ff9100;
|
--color-orange: #ff9100;
|
||||||
|
--color-orange-black: #332b22;
|
||||||
|
|
||||||
--color-red: #822419;
|
--color-red: #822419;
|
||||||
--color-green: #236b40;
|
--color-green: #236b40;
|
||||||
|
@ -104,6 +107,10 @@ h1, h2, h3, h4, h5, h6 {
|
||||||
font-family: 'Roboto Condensed', sans-serif;
|
font-family: 'Roboto Condensed', sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 4rem;
|
||||||
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
}
|
}
|
||||||
|
@ -117,7 +124,6 @@ a {
|
||||||
.content {
|
.content {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
min-height: 100vh;
|
|
||||||
padding: 150px 15vw;
|
padding: 150px 15vw;
|
||||||
|
|
||||||
& h2 {
|
& h2 {
|
||||||
|
@ -125,6 +131,10 @@ a {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.full {
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
.z-0 {
|
.z-0 {
|
||||||
box-shadow: 0 0 0 rgba(0, 0, 0, 0), 0 0 0 rgba(0, 0, 0, 0);
|
box-shadow: 0 0 0 rgba(0, 0, 0, 0), 0 0 0 rgba(0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
1
app.vue
1
app.vue
|
@ -4,6 +4,7 @@
|
||||||
<div>
|
<div>
|
||||||
<Header />
|
<Header />
|
||||||
<Intro />
|
<Intro />
|
||||||
|
<Skills />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
|
@ -32,11 +32,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
& h1 {
|
& h1 {
|
||||||
|
flex: 2;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
flex: 4;
|
|
||||||
|
|
||||||
& svg {
|
& svg {
|
||||||
--size: 40px;
|
--size: 40px;
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
& nav {
|
& nav {
|
||||||
flex: 5;
|
flex: 3;
|
||||||
position: relative;
|
position: relative;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
|
@ -119,16 +119,10 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.sticks {
|
&.sticks > .wrapper {
|
||||||
--color-burger: var(--color-black);
|
background: var(--color-black-transparent);
|
||||||
--color-link: var(--color-black);
|
|
||||||
--color-header: var(--color-black);
|
|
||||||
|
|
||||||
& > .wrapper {
|
|
||||||
background: var(--color-white-transparent);
|
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
& input[type="checkbox"] {
|
& input[type="checkbox"] {
|
||||||
display: none;
|
display: none;
|
||||||
|
@ -164,17 +158,8 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@media screen and (width < 990px) {
|
@media screen and (width < 1180px) {
|
||||||
.Header {
|
.Header {
|
||||||
& .wrapper {
|
|
||||||
background: var(--color-black);
|
|
||||||
border-radius: 15px;
|
|
||||||
|
|
||||||
& > label > span {
|
|
||||||
color: var(--color-black);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
& > .wrapper.wrapper > label {
|
& > .wrapper.wrapper > label {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,8 +61,8 @@ const burgerLabel = computed(() => isBurgerOpen.value ? burgerCloseLabel : burge
|
||||||
|
|
||||||
const nav = [
|
const nav = [
|
||||||
{
|
{
|
||||||
href: '#about',
|
href: '#intro',
|
||||||
label: 'About',
|
label: 'Über mich',
|
||||||
'aria-label': 'Link dieser Seite: About'
|
'aria-label': 'Link dieser Seite: About'
|
||||||
}, {
|
}, {
|
||||||
href: '#customers',
|
href: '#customers',
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
.intro-img {
|
.intro-img {
|
||||||
width: 750px;
|
width: 750px;
|
||||||
|
display: flex;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
|
@ -32,7 +33,6 @@
|
||||||
h2 {
|
h2 {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
font-size: 4rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
h3,
|
h3,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<style scoped src="./Intro.css"/>
|
<style scoped src="./Intro.css"/>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<section class="Intro content">
|
<section id="intro" class="Intro content full">
|
||||||
<div class="intro-text">
|
<div class="intro-text">
|
||||||
<h2>
|
<h2>
|
||||||
<span class="greeting">Moin.</span>
|
<span class="greeting">Moin.</span>
|
||||||
|
|
32
components/Skills/Skills.css
Normal file
32
components/Skills/Skills.css
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
.Skills {
|
||||||
|
background: var(--color-orange-black);
|
||||||
|
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;
|
||||||
|
|
||||||
|
& .skills-wrapper {
|
||||||
|
margin-top: 3rem;
|
||||||
|
display: flex;
|
||||||
|
gap: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
& article {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 2rem;
|
||||||
|
padding: 2rem;
|
||||||
|
background: var(--color-black);
|
||||||
|
border-radius: 20px;
|
||||||
|
|
||||||
|
& p:last-of-type {
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& .bottom {
|
||||||
|
margin-top: 3rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 3rem;
|
||||||
|
}
|
||||||
|
}
|
46
components/Skills/Skills.vue
Normal file
46
components/Skills/Skills.vue
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
<style scoped src="./Skills.css"/>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<section class="Skills content">
|
||||||
|
<h2>Meine Expertise.</h2>
|
||||||
|
<div class="skills-wrapper">
|
||||||
|
<article class="z-2" v-for="skill in skills">
|
||||||
|
<h3>{{skill.title}}</h3>
|
||||||
|
<main>
|
||||||
|
<p v-for="t in skill.text">{{t}}</p>
|
||||||
|
</main>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
<div class="bottom">
|
||||||
|
<h3>Du brauchst was davon? Kein Ding.</h3>
|
||||||
|
<Button class="cta" label="Lass mal reden" />
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
const skills = [
|
||||||
|
{
|
||||||
|
title: 'Komponenten',
|
||||||
|
text: [
|
||||||
|
'Komponenten sind die Teile in deiner Applikation, die alles ansehnlich machen.',
|
||||||
|
'Mit sauber implementierten, responsiven Bausteinen kannst du deine Seite gut Strukturieren, Daten sauber darstellen und den User einspannen.',
|
||||||
|
'Vom kleinen Button bis hin zur Umfangreichen Tabelle bau ich dir (fast) alles.'
|
||||||
|
],
|
||||||
|
}, {
|
||||||
|
title: 'APIs',
|
||||||
|
text: [
|
||||||
|
'Du hast Daten in einer Datenbank liegen, aber keine Ahnung, wie du da gescheit rankommen sollst?',
|
||||||
|
'Liegen deine Daten eventuell sogar verstreut an mehreren Orten, über Datenbanken, Dateien und anderen Storagemöglichkeiten verteilt?',
|
||||||
|
'Kein Ding. Ich bau dir eine Schnittstelle, die alles easy zusammenträgt.'
|
||||||
|
],
|
||||||
|
}, {
|
||||||
|
title: 'Headless CMS Anbindung',
|
||||||
|
text: [
|
||||||
|
'Wenn man ein Headless CMS anbinden will, dann verknüpft das Komponenten und APIs.',
|
||||||
|
'Für eine saubere und dynamische Einbindung reicht die Library, die euch vom Hersteller zur Verfügung gestellt wird, oft nicht aus.',
|
||||||
|
'Übersichtliche Projektstruktur und saubere Auflösung der Daten - das gibt\'s bei mir.'
|
||||||
|
],
|
||||||
|
}
|
||||||
|
]
|
||||||
|
</script>
|
Loading…
Add table
Add a link
Reference in a new issue