Add home module and transition mixin to stylesheets

Included a new `@import 'modules/home';` and added a re-usable `@mixin transition` for smoother animations. Updated button styling with padding, hover effects, and transitions to enhance UI. Adjusted max-width in `.team__inner` for better layout consistency.
This commit is contained in:
tfw
2025-04-24 15:12:39 +02:00
parent cbb7086e09
commit bafb40a966
22 changed files with 364 additions and 49 deletions
@@ -0,0 +1,82 @@
document.addEventListener('DOMContentLoaded', function() {
// Funktion zum Formatieren der Zahlen mit Kommas und Plus-Zeichen
function formatNumber(num, includePlus = true) {
const formatted = num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,');
return includePlus ? formatted + '+' : formatted;
}
// Funktion zum Extrahieren der Zahl aus dem Text (entfernt das '+' und Kommas)
function extractNumber(text) {
return parseInt(text.replace(/,/g, '').replace('+', ''), 10);
}
// Funktion zum Animieren der Zähler
function animateCounter(counterElement, target) {
// Startpunkt
let start = 0;
// Dauer der Animation in Millisekunden (angepasst an die Größe der Zahl)
const duration = Math.min(2000 + Math.log10(target) * 300, 3000);
// Zeitpunkt des Starts
const startTime = performance.now();
// Funktion für die Animation
function updateCounter(currentTime) {
// Berechne den verstrichenen Zeitanteil (0 bis 1)
const elapsedTime = Math.min((currentTime - startTime) / duration, 1);
// Easing-Funktion für eine natürlichere Animation
const progress = easeOutQuart(elapsedTime);
// Berechne den aktuellen Wert
const currentValue = Math.floor(progress * target);
// Aktualisiere den Zähler mit dem Plus-Zeichen
counterElement.textContent = formatNumber(currentValue, true);
// Wenn die Animation noch nicht abgeschlossen ist, nächsten Frame anfordern
if (elapsedTime < 1) {
requestAnimationFrame(updateCounter);
} else {
// Stelle sicher, dass der endgültige Wert exakt dem Zielwert entspricht
counterElement.textContent = formatNumber(target, true);
}
}
// Easing-Funktion für eine natürlichere Animation
function easeOutQuart(t) {
return 1 - Math.pow(1 - t, 4);
}
// Starte die Animation
requestAnimationFrame(updateCounter);
}
// Intersection Observer zum Erkennen, wann die Zähler sichtbar werden
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
// Wenn der Zähler sichtbar wird
if (entry.isIntersecting) {
const counterElement = entry.target;
// Extrahiere die Zielnummer aus dem Text
const targetText = counterElement.textContent;
const target = extractNumber(targetText);
// Setze den Anfangswert auf 0 mit Plus-Zeichen
counterElement.textContent = '0+';
// Starte die Animation
animateCounter(counterElement, target);
// Beobachtung beenden, damit die Animation nur einmal ausgeführt wird
observer.unobserve(counterElement);
}
});
}, {
threshold: 0.1 // 10% des Elements müssen sichtbar sein
});
// Alle Zähler beobachten
document.querySelectorAll('.satag--home-counter-number').forEach(counter => {
observer.observe(counter);
});
});
+98 -23
View File
@@ -4,33 +4,108 @@ hide:
- toc - toc
--- ---
# <span class="satag-trademark">satware®</span> AI
<div class="satag--home-landing">
<!-- Section entry -->
<div class="satag--home-hero entry">
<h1>Willkommen zu<br /> <span class="satag-trademark">satware®</span> AI</h1>
<div class="entry-text">
<span class="satag-trademark">satware®</span> AI bietet zukunftsweisende KI-Lösungen, die Unternehmen dabei
unterstützen, ihre Prozesse zu optimieren, Daten effektiver zu nutzen und intelligente Entscheidungen zu treffen. Unsere
Technologien sind darauf ausgerichtet, Ihren Geschäftserfolg durch moderne, KI-gestützte Lösungen zu steigern.
</div>
<p class="hero-buttons"><a class="md-button md-button--primary" href="/demo/">Demo buchen</a> <a class="md-button" href="/zugang/">Zugang bestellen</a></p>
## KI-gestützte Automatisierung <p class="screenshot-container">
<img src="../assets/images/home/satware-ai-chat-screenshot.jpg" />
Intelligente Lösungen für die automatisierte Verarbeitung und Analyse von Daten. </p>
## Smarte Datenverarbeitung
Verwandeln Sie rohe Daten in verwertbare Erkenntnisse mit modernsten KI-Algorithmen.
## Sicherheit & Datenschutz
Alle unsere Lösungen setzen auf höchste Sicherheitsstandards und DSGVO-Konformität.
## Maßgeschneiderte Entwicklung
Individuelle KI-Lösungen, die exakt auf Ihre Geschäftsanforderungen zugeschnitten sind.
## Willkommen bei <span class="satag-trademark">satware®</span> AI
<span class="satag-trademark">satware®</span> AI bietet zukunftsweisende KI-Lösungen, die Unternehmen dabei unterstützen, ihre Prozesse zu optimieren, Daten effektiver zu nutzen und intelligente Entscheidungen zu treffen. Unsere Technologien sind darauf ausgerichtet, Ihren Geschäftserfolg durch moderne, KI-gestützte Lösungen zu steigern. </div>
<!-- end Section entry -->
<!-- Section Companies -->
<div class="satag--home-companies">
<h2>Trusted by the world's top organizations across industries</h2>
<div class="satag--home-companies-logo-container">
<div class="satag--home-companies-logo">
<img src="../assets/images/home/company-logos/hammel.png" />
</div>
<div class="satag--home-companies-logo">
<img src="../assets/images/home/company-logos/ocupro.png" />
</div>
<div class="satag--home-companies-logo">
<img src="../assets/images/home/company-logos/satware-ag.png" />
</div>
<div class="satag--home-companies-logo">
<img src="../assets/images/home/company-logos/klinikum-worms.png" />
</div>
</div>
<br />
<div class="satag--home-companies-logo-container">
<div class="satag--home-companies-logo">
<img src="../assets/images/home/company-logos/hammel.png" />
</div>
<div class="satag--home-companies-logo">
<img src="../assets/images/home/company-logos/ocupro.png" />
</div>
<div class="satag--home-companies-logo">
<img src="../assets/images/home/company-logos/satware-ag.png" />
</div>
<div class="satag--home-companies-logo">
<img src="../assets/images/home/company-logos/klinikum-worms.png" />
</div>
</div>
</div>
<!-- end Section Companies -->
<!-- Section Counters -->
<div class="satag--home-counters">
<div class="satag--home-counters-container">
<div class="satag--home-counter">
<span class="satag--home-counter-icon"><i class="fa-thin fa-globe"></i></span>
<span class="satag--home-counter-number">602+</span>
Company AI platforms created
</div>
<div class="satag--home-counter">
<span class="satag--home-counter-icon"><i class="fa-thin fa-layer-group"></i></span>
<span class="satag--home-counter-number">7,199+</span>
Specialized AI agents built
</div>
<div class="satag--home-counter">
<span class="satag--home-counter-icon"><i class="fa-thin fa-arrow-trend-up"></i></span>
<span class="satag--home-counter-number">132,853+</span>
Monthly active users
</div>
<div class="satag--home-counter">
<span class="satag--home-counter-icon"><i class="fa-thin fa-message-smile"></i></span>
<span class="satag--home-counter-number">785,862+</span>
Monthly messages sent
</div>
</div>
</div>
<!-- end Section Counters -->
</div>
[Lösungen entdecken](#){ .md-button .md-button--primary }
[Kontakt aufnehmen](#){ .md-button }
File diff suppressed because one or more lines are too long
+19
View File
@@ -11,6 +11,11 @@
// Module importieren // Module importieren
@import 'modules/team'; @import 'modules/team';
@import 'modules/footer'; @import 'modules/footer';
@import 'modules/home';
@mixin transition{
transition: all 0.5s ease;
}
// satware.ai CI-Anpassungen // satware.ai CI-Anpassungen
@@ -206,6 +211,19 @@ a.headerlink{
color: #fff !important; color: #fff !important;
border-color: var(--md-primary-fg-color) !important; border-color: var(--md-primary-fg-color) !important;
padding: 1.7em 2.9em !important;
letter-spacing: 0.2rem !important;
font-weight: 400 !important;
@include transition;
&:hover{
border-color: var(--md-primary-fg-color) !important;
transform: translateY(8px);
@include transition;
}
&.md-button--primary { &.md-button--primary {
background-color: var(--md-primary-fg-color); background-color: var(--md-primary-fg-color);
border-color: var(--md-primary-fg-color); border-color: var(--md-primary-fg-color);
@@ -299,5 +317,6 @@ a.headerlink{
&__inner { &__inner {
padding: 0.5rem; padding: 0.5rem;
max-width: 98%;
} }
} }
+116
View File
@@ -0,0 +1,116 @@
.satag--home-landing{
@mixin ohne-balken{
h1,h2,h3,h4,h5,h6{
&:after{
display: none;
}
}
}
.satag--home-hero{
.entry-text{
font-size: 1.2rem;
line-height: 2rem;
padding-bottom: 1rem;
}
//@include ohne-balken;
h1{
font-size: 5rem;
margin-bottom: 1.75rem;
text-align: left;
line-height: 100%;
&:after{
height: 12px;
width: 85px;
margin-top: 1.5rem;
margin-bottom: -0.2rem;
}
}
.hero-buttons{
text-align: left;
padding-bottom: 3rem;
}
//text-align: center;
.screenshot-container{
padding: 2rem 0;
text-align: center;
}
img{
border: 1px solid var(--md-primary-fg-color--light);
width: 100%;
}
}
.satag--home-companies{
width: 100vw;
position: relative;
left: 50%;
right: 50%;
margin-left: -50vw;
margin-right: -50vw;
padding: 2rem 0 4rem 0;
background-color: var(--md-primary-fg-color);
h2{
padding-bottom: 1rem;
}
@include ohne-balken;
text-align: center;
.satag--home-companies-logo-container{
display: flex;
max-width: 75%;
margin: 0 auto;
.satag--home-companies-logo{
flex: auto;
img{
width: 80%;
}
}
}
}
.satag--home-counters{
width: 100%;
padding: 2rem 0 4rem 0;
h2{
padding-bottom: 1rem;
}
@include ohne-balken;
text-align: center;
.satag--home-counters-container{
display: flex;
.satag--home-counter{
flex: auto;
display: block;
.satag--home-counter-icon{
display: block;
font-size: 2rem;
color: var(--md-primary-fg-color--light);
}
.satag--home-counter-number{
display: block;
font-weight: 700;
font-size: 3rem;
}
}
}
}
}
+4
View File
@@ -146,10 +146,14 @@ extra:
extra_css: extra_css:
- stylesheets/extra.css - stylesheets/extra.css
extra_javascript:
- assets/javascript/counter-animation.js
# Navigation # Navigation
nav: nav:
- Kostenlose Webinare: webinare.md
- Demo buchen: demo.md - Demo buchen: demo.md
- Zugang bestellen: zugang.md - Zugang bestellen: zugang.md
- KI-Agenten: - KI-Agenten:
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+19
View File
@@ -11,6 +11,11 @@
// Module importieren // Module importieren
@import 'modules/team'; @import 'modules/team';
@import 'modules/footer'; @import 'modules/footer';
@import 'modules/home';
@mixin transition{
transition: all 0.5s ease;
}
// satware.ai CI-Anpassungen // satware.ai CI-Anpassungen
@@ -206,6 +211,19 @@ a.headerlink{
color: #fff !important; color: #fff !important;
border-color: var(--md-primary-fg-color) !important; border-color: var(--md-primary-fg-color) !important;
padding: 1.7em 2.9em !important;
letter-spacing: 0.2rem !important;
font-weight: 400 !important;
@include transition;
&:hover{
border-color: var(--md-primary-fg-color) !important;
transform: translateY(8px);
@include transition;
}
&.md-button--primary { &.md-button--primary {
background-color: var(--md-primary-fg-color); background-color: var(--md-primary-fg-color);
border-color: var(--md-primary-fg-color); border-color: var(--md-primary-fg-color);
@@ -299,5 +317,6 @@ a.headerlink{
&__inner { &__inner {
padding: 0.5rem; padding: 0.5rem;
max-width: 98%;
} }
} }