Themabewertung:
  • 1 Bewertung(en) - 4 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
OpenSim.Webinterface
#24
Das Astro 5.5 Web Framework
Astro ist ein modernes Web-Framework, das sich auf die Erstellung von schnellen, statischen Websites konzentriert.
Es verwendet keine traditionellen CSS-Frameworks wie Bootstrap, sondern setzt auf moderne Web-Standards und ermöglicht die Integration von verschiedenen UI-Bibliotheken.

1. Astro-Projekt erstellen
Zuerst musst du ein neues Astro-Projekt erstellen. Führe dazu die folgenden Befehle aus:

bash
Code:
npm create astro@latest
cd dein-projekt
npm install


2. Astro-Komponenten erstellen
Erstelle eine neue Astro-Komponente für deine Seite, z.B. `src/pages/index.astro`.

3. Angepasster Code für Astro
Hier ist der angepasste Code für deine Seite in Astro:

astro
---
PHP-Code:
import '../styles/global.css';

const 
title = 'Deine Seite';
const 
SITE_NAME = 'Deine Seite';
const 
FONT_FAMILY = 'Arial, sans-serif';
const 
BACKGROUND_IMAGE = '/images/background.jpg';
const 
FOREGROUND_IMAGE = '/images/foreground.png';
const 
BACKGROUND_OPACITY = 0.9;
const 
FOREGROUND_OPACITY = 0.8;
const 
INITIAL_COLOR_SCHEME = 'default';

const 
colorSchemes = {
    default: {
        
header: '#007bff',
        
footer: '#343a40',
        
secondary: '#f8f9fa',
        
primary: '#212529'
    
},
    
dark: {
        
header: '#343a40',
        
footer: '#212529',
        
secondary: '#121212',
        
primary: '#ffffff'
    
}
};

function 
setColorScheme(scheme) {
    
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
    
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
    
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
    
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
}
---

<!
DOCTYPE html>
<
html lang="de">
<
head>
    <
meta charset="UTF-8">
    <
meta name="viewport" content="width=device-width, initial-scale=1">
    <
title>{title}</title>
    <
link rel="icon" type="image/x-icon" href="/favicon.ico">
    <
style>
        
body {
            
font-family: {FONT_FAMILY};
            
background-color: var(--secondary-color);
            
color: var(--primary-color);
            
background-image: url({BACKGROUND_IMAGE});
            
background-size: cover;
            
background-repeat: no-repeat;
            
background-position: center;
            
height: 100vh;
            
width: 100vw;
            
opacity: {BACKGROUND_OPACITY};
        }
        
header {
            
background-color: var(--header-color);
            
padding: 10px;
            
text-align: center;
            
color: white;
        }
        
footer {
            
background-color: var(--footer-color);
            
margin: 0;
            
padding: 0;
            
text-align: center;
            
color: white;
            
position: fixed;
            
width: 100%;
            
bottom: 0;
            
line-height: 0;
        }
        .
container {
            
background-image: url({FOREGROUND_IMAGE});
            
background-size: 50%;
            
background-repeat: no-repeat;
            
background-position: center;
            
padding: 20px;
            
border-radius: 8px;
            
opacity: {FOREGROUND_OPACITY};
        }
        .
color-button {
            
margin: 1px;
            
padding: 1px;
            
border: none;
            
cursor: pointer;
            
border-radius: 4px;
            
font-size: 10px;
            
color: white;
        }
    </
style>
    <
script>
        const 
colorSchemes = {JSON.stringify(colorSchemes)};

        function 
setColorScheme(scheme) {
            
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
            
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
            
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
            
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
        }

        
document.addEventListener('DOMContentLoaded', function() {
            
document.querySelectorAll('.color-button').forEach(function(button) {
                
button.addEventListener('click', function() {
                    
setColorScheme(this.dataset.scheme);
                });
            });
            
// Set the initial color scheme
            
setColorScheme('{INITIAL_COLOR_SCHEME}');
        });
    </
script>
</
head>
<
body>
<
header class="bg-primary text-white p-3">
    <
h1>Welcome to {SITE_NAME}</h1>
</
header>
<
nav class="navbar navbar-expand-lg navbar-dark bg-dark">
    <
div class="container-fluid">
        <
a class="navbar-brand" href="/">{SITE_NAME}</a>
        <
div class="collapse navbar-collapse" id="navbarNav">
            <
ul class="navbar-nav">
                {
Object.entries(colorSchemes).map(([scheme, colors]) => (
                    <
li class="nav-item">
                        <
button class="btn btn-sm btn-secondary color-button" data-scheme={scheme} style={`background-color: ${colors.header};`}>{scheme.charAt(0).toUpperCase() + scheme.slice(1)}</button>
                    </
li>
                ))}
            </
ul>
        </
div>
    </
div>
</
nav>
<
div class="container mt-5">
    <!-- 
Inhalt der Seite -->
</
div>
<
footer class="bg-dark text-white text-center py-3">
    &
copy; {new Date().getFullYear()} {SITE_NAME}
</
footer>
</
body>
</
html> 


### 4. Globale CSS-Datei
Erstelle eine globale CSS-Datei `src/styles/global.css`, um die CSS-Variablen zu definieren:

css
Code:
:root {
    --header-color: #007bff;
    --footer-color: #343a40;
    --secondary-color: #f8f9fa;
    --primary-color: #212529;
}


5. Bilder hinzufügen
Lege die Bilder `background.jpg` und `foreground.png` in den `public/images`-Ordner.

6. Astro-Projekt starten
Starte das Astro-Projekt mit:

bash
Code:
npm run dev


Erläuterungen:
- Astro-Komponenten: Astro verwendet `.astro`-Dateien, die eine Mischung aus HTML, CSS und JavaScript sind.
- CSS-Variablen: Wir verwenden CSS-Variablen, um die Farben dynamisch zu ändern.
- JavaScript: Das JavaScript wird direkt in der Astro-Komponente eingebettet, um die Farben zu ändern.
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.



Zitieren


Nachrichten in diesem Thema
OpenSim.Webinterface - von Manfred Aabye - 09.02.2025, 11:59
RE: OpenSim.Webinterface - von Manfred Aabye - 10.02.2025, 20:16
RE: OpenSim.Webinterface - von Manfred Aabye - 11.02.2025, 15:19
RE: OpenSim.Webinterface - von Bogus Curry - 12.02.2025, 00:30
RE: OpenSim.Webinterface - von Manfred Aabye - 12.02.2025, 16:02
RE: OpenSim.Webinterface - von Manfred Aabye - 12.02.2025, 16:12
RE: OpenSim.Webinterface - von Bogus Curry - 12.02.2025, 17:25
RE: OpenSim.Webinterface - von Manfred Aabye - 15.02.2025, 13:08
RE: OpenSim.Webinterface - von Manfred Aabye - 16.02.2025, 19:35
RE: OpenSim.Webinterface - von Bogus Curry - 17.02.2025, 00:04
RE: OpenSim.Webinterface - von Manfred Aabye - 17.02.2025, 22:40
RE: OpenSim.Webinterface - von Manfred Aabye - 20.02.2025, 23:17
RE: OpenSim.Webinterface - von Bogus Curry - 21.02.2025, 10:01
RE: OpenSim.Webinterface - von Manfred Aabye - 22.02.2025, 14:13
RE: OpenSim.Webinterface - von Manfred Aabye - 23.02.2025, 13:55
RE: OpenSim.Webinterface - von Manfred Aabye - 24.02.2025, 12:05
RE: OpenSim.Webinterface - von Manfred Aabye - 26.02.2025, 16:35
RE: OpenSim.Webinterface - von Manfred Aabye - 12.03.2025, 16:07
RE: OpenSim.Webinterface - von Manfred Aabye - 14.03.2025, 13:07
RE: OpenSim.Webinterface - von Bogus Curry - 14.03.2025, 13:18
RE: OpenSim.Webinterface - von Manfred Aabye - 14.03.2025, 14:41
RE: OpenSim.Webinterface - von Bogus Curry - 14.03.2025, 23:51
RE: OpenSim.Webinterface - von Manfred Aabye - 15.03.2025, 14:00
RE: OpenSim.Webinterface - von Manfred Aabye - 15.03.2025, 14:20
RE: OpenSim.Webinterface - von Bogus Curry - 15.03.2025, 19:51
RE: OpenSim.Webinterface - von Manfred Aabye - 24.03.2025, 12:16

Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  opensim-baby kommt mit den grids nicht klar (manchmal) Nightshade Ceres 8 4.574 16.04.2025, 21:37
Letzter Beitrag: Anachron
  OpenSim RemoteAdmin 2025 Webinterface Manfred Aabye 1 2.165 01.02.2025, 15:34
Letzter Beitrag: Manfred Aabye

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste