fix: optimize CSS

This commit is contained in:
webfussel 2024-05-30 08:52:28 +02:00
parent b9e9e2d691
commit 282e2086b0
21 changed files with 217 additions and 258 deletions

219
app.vue
View file

@ -25,222 +25,3 @@ useSeoMeta({
twitterUrl: 'https://webfussel.de', twitterUrl: 'https://webfussel.de',
}) })
</script> </script>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
::selection {
background: var(--color-orange);
color: var(--color-black);
}
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
::-webkit-scrollbar-button {
display: none;
}
::-webkit-scrollbar-thumb {
border-radius: 20px;
background: #b2bec3;
transition: var(--transition-time);
}
::-webkit-scrollbar-track {
border-radius: 20px;
background: rgba(0, 0, 0, 0.3);
}
::-webkit-scrollbar-corner {
border-radius: 100%;
background: #b2bec3;
}
:root {
--spacing-standard: 3rem;
--transition-time: 250ms;
--radius-standard: 4px;
--color-white: #ecf0f1;
--color-white-transparent: rgba(236, 240, 241, 0.7);
--color-black: #2a2723;
--color-black-transparent: #2a2723aa;
--color-orange: #ff9100;
--color-orange-black: #332b22;
--color-red: #822419;
--color-green: #236b40;
--color-yellow: #f1c40f;
}
.label {
font-size: 0.75rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 1px;
border-radius: 999px;
padding: 0.25rem 0.5rem;
text-align: center;
}
.label.available {
background: var(--color-green);
color: #fff;
}
.label.busy {
background: var(--color-yellow);
color: #000;
}
.label.booked {
background: var(--color-red);
color: #fff;
}
html,
body {
min-height: 100vh;
width: 100vw;
}
html {
scroll-behavior: smooth;
scrollbar-gutter: auto;
overflow-y: auto;
overflow-x: hidden;
&.layer {
overflow: hidden;
}
}
body {
font-family: 'Open Sans', sans-serif;
color: var(--color-white);
background: var(--color-black);
}
h1, h2, h3, h4, h5, h6 {
text-align: left;
font-family: 'Roboto Condensed', sans-serif;
}
h2 {
font-size: 4rem;
}
h3 {
font-size: 1.5rem;
}
a {
text-decoration: none;
color: var(--color-white);
transition: var(--transition-time);
}
ul {
list-style: none;
display: flex;
}
span.highlight {
color: var(--color-orange);
}
span.chip {
background: var(--color-orange);
border-radius: 999px;
font-size: 1rem;
color: var(--color-black);
height: max-content;
padding: .5em 1em;
user-select: none;
}
.card {
padding: 2rem;
background: var(--color-black);
border-radius: 20px;
min-width: 300px;
flex: 1;
}
.color-icon {
filter: invert(50%) sepia(84%) saturate(868%) hue-rotate(1deg) brightness(103%) contrast(100%);
}
.content {
position: relative;
z-index: 100;
padding: 150px 15vw;
}
.full {
min-height: 100vh;
}
.margin-top {
margin-top: 3rem;
}
.margin-top-big {
margin-top: 6rem;
}
.flex-col {
display: flex;
flex-direction: column;
}
.default-gap {
gap: 3rem;
}
.z-0 {
box-shadow: 0 0 0 rgba(0, 0, 0, 0), 0 0 0 rgba(0, 0, 0, 0);
}
.z-1 {
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
}
.z-2 {
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
}
.z-3 {
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
}
.z-4 {
box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}
.z-5 {
box-shadow: 0 19px 38px rgba(0, 0, 0, 0.30), 0 15px 12px rgba(0, 0, 0, 0.22);
}
@media (width <= 780px) {
h1, h2, h3, h4, h5, h6, p {
text-align: center;
}
}
@media (width <= 450px) {
.content {
padding: 150px 10vw;
}
}
</style>

20
assets/css/button.css Normal file
View file

@ -0,0 +1,20 @@
.Button {
all: unset;
transition: 250ms;
background: var(--color-orange);
color: var(--color-black);
cursor: pointer;
padding: 1rem 1.5rem;
outline: 3px solid var(--color-black);
box-shadow: 0 0 0 0 var(--color-orange);
border-radius: 99999px;
text-align: center;
&:hover {
box-shadow: 0 0 0 6px var(--color-orange);
}
&.cta {
font-size: clamp(1rem, 2vw, 1.5rem);
}
}

186
assets/css/global.css Normal file
View file

@ -0,0 +1,186 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
::selection {
background: var(--color-orange);
color: var(--color-black);
}
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
::-webkit-scrollbar-button {
display: none;
}
::-webkit-scrollbar-thumb {
border-radius: 20px;
background: #b2bec3;
transition: var(--transition-time);
}
::-webkit-scrollbar-track {
border-radius: 20px;
background: rgba(0, 0, 0, 0.3);
}
::-webkit-scrollbar-corner {
border-radius: 100%;
background: #b2bec3;
}
:root {
--spacing-standard: 3rem;
--transition-time: 250ms;
--radius-standard: 4px;
--color-white: #ecf0f1;
--color-white-transparent: rgba(236, 240, 241, 0.7);
--color-black: #2a2723;
--color-black-transparent: #2a2723aa;
--color-orange: #ff9100;
--color-orange-black: #332b22;
}
html,
body {
min-height: 100vh;
width: 100vw;
}
html {
scroll-behavior: smooth;
scrollbar-gutter: auto;
overflow-y: auto;
overflow-x: hidden;
&.layer {
overflow: hidden;
}
}
body {
font-family: 'Open Sans', sans-serif;
color: var(--color-white);
background: var(--color-black);
}
h1, h2, h3, h4, h5, h6 {
text-align: left;
font-family: 'Roboto Condensed', sans-serif;
}
h2 {
font-size: 4rem;
}
h3 {
font-size: 1.5rem;
}
a {
text-decoration: none;
color: var(--color-white);
transition: var(--transition-time);
}
ul {
list-style: none;
display: flex;
}
span.highlight {
color: var(--color-orange);
}
span.chip {
background: var(--color-orange);
border-radius: 999px;
font-size: 1rem;
color: var(--color-black);
height: max-content;
padding: .5em 1em;
user-select: none;
}
.card {
padding: 2rem;
background: var(--color-black);
border-radius: 20px;
min-width: 300px;
flex: 1;
}
.color-icon {
filter: invert(50%) sepia(84%) saturate(868%) hue-rotate(1deg) brightness(103%) contrast(100%);
}
.content {
position: relative;
z-index: 100;
padding: 150px 15vw;
}
.full {
min-height: 100vh;
}
.margin-top {
margin-top: 3rem;
}
.margin-top-big {
margin-top: 6rem;
}
.flex-col {
display: flex;
flex-direction: column;
}
.default-gap {
gap: 3rem;
}
.z-0 {
box-shadow: 0 0 0 rgba(0, 0, 0, 0), 0 0 0 rgba(0, 0, 0, 0);
}
.z-1 {
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
}
.z-2 {
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
}
.z-3 {
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
}
.z-4 {
box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}
.z-5 {
box-shadow: 0 19px 38px rgba(0, 0, 0, 0.30), 0 15px 12px rgba(0, 0, 0, 0.22);
}
@media (width <= 780px) {
h1, h2, h3, h4, h5, h6, p {
text-align: center;
}
}
@media (width <= 450px) {
.content {
padding: 150px 10vw;
}
}

View file

@ -25,26 +25,3 @@ const actualProps = () => {
} }
} }
</script> </script>
<style>
.Button {
all: unset;
transition: 250ms;
background: var(--color-orange);
color: var(--color-black);
cursor: pointer;
padding: 1rem 1.5rem;
outline: 3px solid var(--color-black);
box-shadow: 0 0 0 0 var(--color-orange);
border-radius: 99999px;
text-align: center;
&:hover {
box-shadow: 0 0 0 6px var(--color-orange);
}
&.cta {
font-size: clamp(1rem, 2vw, 1.5rem);
}
}
</style>

View file

@ -1,5 +1,3 @@
<style scoped src="./Customers.css"/>
<template> <template>
<section id="customers" class="Customers content"> <section id="customers" class="Customers content">
<h2>Kunden <span class="highlight">&</span> Projekte.</h2> <h2>Kunden <span class="highlight">&</span> Projekte.</h2>

View file

@ -1,5 +1,3 @@
<style scoped src="./Footer.css"/>
<template> <template>
<footer class="Footer flex-col default-gap"> <footer class="Footer flex-col default-gap">
<ul class="sitemap default-gap"> <ul class="sitemap default-gap">

View file

@ -1,4 +1,3 @@
<style scoped src="./Header.css"/>
<template> <template>
<div ref="stickyWatch" /> <div ref="stickyWatch" />
<header ref="header" class="Header"> <header ref="header" class="Header">

View file

@ -1,5 +1,3 @@
<style scoped src="./Intro.css"/>
<template> <template>
<section id="intro" class="Intro content full default-gap"> <section id="intro" class="Intro content full default-gap">
<div class="intro-text flex-col default-gap"> <div class="intro-text flex-col default-gap">

View file

@ -1,5 +1,3 @@
<style scoped src="./Person.css"/>
<template> <template>
<article class="Person flex-col"> <article class="Person flex-col">
<img loading="lazy" width="150" height="150" :src="img" :alt="`Bild von ${name}`" /> <img loading="lazy" width="150" height="150" :src="img" :alt="`Bild von ${name}`" />

View file

@ -1,5 +1,3 @@
<style scoped src="./Services.css"/>
<template> <template>
<section id="services" class="Services content"> <section id="services" class="Services content">
<h2>Services.</h2> <h2>Services.</h2>

View file

@ -1,5 +1,3 @@
<style scoped src="./Skills.css"/>
<template> <template>
<section id="skills" class="Skills content"> <section id="skills" class="Skills content">
<h2>Meine Expertise.</h2> <h2>Meine Expertise.</h2>

View file

@ -1,5 +1,3 @@
<style scoped src="./Technology.css"/>
<template> <template>
<div class="Technology flex-col" :class="[size]"> <div class="Technology flex-col" :class="[size]">
<a v-if="link" :href="link" target="_blank" rel="noopener noreferrer"> <a v-if="link" :href="link" target="_blank" rel="noopener noreferrer">

View file

@ -9,7 +9,17 @@ export default defineNuxtConfig({
} }
}, },
css: [ css: [
'~/assets/css/fonts.css' '~/assets/css/fonts.css',
'~/assets/css/global.css',
'~/assets/css/header.css',
'~/assets/css/intro.css',
'~/assets/css/skills.css',
'~/assets/css/customers.css',
'~/assets/css/services.css',
'~/assets/css/footer.css',
'~/assets/css/technology.css',
'~/assets/css/person.css',
'~/assets/css/button.css',
], ],
routeRules: { routeRules: {
'/': { prerender: true }, '/': { prerender: true },