Module 101 - Réaliser et publier un site web

Contenu

Préparation au cours HTML / CSS
Logiciels à télécharger
Réaliser un site web - généralités
Types de sites
Etapes de création d'un site web
Objectifs et évaluation du cours
Objectifs
Evaluation
Rendu
HTML - La structure d'une page
Structure d'une page
Les images
Les titres
Les paragraphes
Les listes à puces
Les liens
CSS - Les bases
Définition du CSS
Propriétés du CSS
Les liens
Les outils de validation CSS
Exemples de CSS - Style interne
Intégrer une feuille de style dans une page HTML
TEXTES : Couleur et police
TEXTES : Alignement
TEXTES : Décoration
TEXTES : Transformation (capitales)
TEXTES : Espacement entre les lettres et les mots
TEXTES : Poids et style (graisse)
TEXTES : Ombres
TEXTES : Dégradés
Bonus : Animation
BLOCS : Dimension
BLOCS : Couleur de fond et bordure
BLOCS : Espacements
BLOCS : Ombres et reliefs
BLOCS : Survol
BLOCS : Image de fond
BLOCS : Animation
IMAGES : Dimension
IMAGES : Image ronde
IMAGES : Bordure
IMAGES : Ombre portée
IMAGES : Effet au survol
IMAGES : En arrière-plan
IMAGES : Responsive dans un bloc
IMAGES : Filtre
IMAGES : Avec superposition de texte
IMAGES : Animation
IMAGES : Découpage
IMAGES : Mosaïque
Bootstrap - les bases de la grille
Qu'est-ce que Bootstrap ?
Avantages de Bootstrap
Installation
Liens
Exemples de code pour 3 colonnes
Exemple de formulaire HTML avec Bootstrap
Les marges (padding et margin) avec bootstrap
Les couleurs avec Bootstrap
Les images avec Bootstrap

Support de cours

Préparation au cours HTML / CSS

Logiciels à télécharger

Filezilla Client FTP - Pour Windows, Linux et Mac

Visual Studio Code - Pour Windows. Linux et Mac

 

Réaliser un site web - généralités

Types de sites

Globallement il existe 3 types d'outils pour créer des sites web. Chaque solution présente des caractéristiques qui peuvent s'adapter aux besoins réels du client, du budget et des fonctionalitées demandées.

 

  1. Site 100% personnalisé en code
  2. Site avec CMS (WordPress, Joomla)
  3. Site en Cloud (Wix, Weebly, Jimdo… )

Etapes de création d'un site web

  1. Discussion avec le client
  2. Définition du public cible
  3. Création de la charte graphique
  4. Inventaire des textes, images et vidéos (droits)
  5. Créer le site (codage)
  6. Tester liens / images / navigateurs
  7. Publier le site (page index.html, FTP)
  8. Référencer ( Google Analytics, Search tools )
  9. Suivre le référencement
  10. Suivre les mises à jour techniques
  11. Maintenir le contenu / mise à jour réseaux sociaux

Objectifs et évaluation du cours

Objectifs

Réaliser un site web conforme aux objectifs définis au moyens des langages de programmation HTML, CSS etJavascript

Evaluation

[1] Choix des contenus [15% à 25%]
- Choix correspondant aux directives avec des graphiques et images appropriées.
- Choix approprié d’éléments de texte et correspondant aux directives.
- Choix approprié des médias.
[2] Traitement de la proposition de solution [15% à 25%]
- Choix approprié d’une structure du site.
- Choix approprié de la navigation.
- Prise en compte des directives techniques, juridiques et des contenus.
- Choix approprié des formats des médias.
[3] Implémentation de la proposition de solution [20% à 50%]
- Respect d’une structure clair des fichiers du programme.
- Conversion et/ou conditionnement des médias selon les directives et proposition de solution.
- Mise en œuvre pratique des fonctionnalités imposées.
[4] Test du site web [15% à 25%]
- Garantie de la conformité standard du code source (Validation).
- Elaboration des cas de tests.
- Vérification des cas de tests.

Rendu

Dossier de présentation

  • Buts du site
  • Public visé
  • Contenu du site
  • Site présenté aujourd'hui
  • Travail à effectuer encore

Site web

  • 1 page de garde
  • 1 page de contenu au minimum
  • 1 page de formulaires
  • Être responsive
  • Contenir les informations légales
  • Correspondre aux objectifs et au public cible

 

 

 

 

HTML - La structure d'une page

Structure d'une page

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ma page de test</title>
</head>
<body>
<!-- contenu de la page -->
</body>
</html>

!DOCTYPE html — juste présent pour s'assurer que la page puisse fonctionner y compris sur les anciens navigateurs.
html — encadre tout le contenu de la page. Cet élément est parfois appelé l'élément racine.
head - est utilisé comme un container pour toutes les choses qui font partie de la page HTML mais qui ne sont pas du contenu affiché.
body - est celui qui contient tout le contenu que vous souhaitez afficher pour qu'il soit vu par les visiteurs.
meta charset="utf-8" — définit le jeu de caractères qui devrait être utilisé pour le document et indique que c'est utf-8. utf-8 regroupe l'ensemble des caractères connus utilisés dans les différents langages humains.
title - définit le titre de votre page. C'est ce titre qui apparaîtra sur l'onglet lorsque la page sera chargée. Il sera utilisé pour décrire la page lorsque vous la placez dans vos marques-pages

Les images

<img src="images/firefox-icon.png" alt="Mon image de test">

L'image utilisée est définie via l'attribut src (pour source) qui contient le chemin vers le fichier de l'image.

L'attribut alt (pour alternatif)contient un texte descriptif de l'image à l'intention des utilisateurs qui ne peuvent pas voir l'image.

Les titres

<h1>Mon titre principal</h1>
<h2>Mon titre de section</h2>
<h3>Mon sous-titre</h3>
<h4>Mon sous-sous-titre</h4>

HTML contient des éléments pour 6 niveaux de titres : h1 à h6. La plupart du temps, 3-4 niveaux suffisent amplement.

Les paragraphes

<p>Voici un paragraphe</p>

Vous pouvez placer votre texte dans un ou plusieurs paragraphes,

Les listes à puces

<ul>
<li>technologues</li>
<li>chercheurs</li>
<li>bâtisseurs</li>
</ul>

<ol>
<li>technologues</li>
<li>chercheurs</li>
<li>bâtisseurs</li>
</ol>

Les listes non-ordonnées construites avec l'élément ul (ul signifie unordered list)
Les listes ordonnées sont construites avec l'élément ol (ol signifie ordered list)
Chaque élément d'une liste est balisé avec un élément li (list item).

Les liens

<a href="https://cie.mozilla.org/fr/about/manifesto/">Manifeste Mozilla</a>

Pour créer un lien, il suffit d'utiliser l'élément a (le a est un raccourci pour ancre ).

Ne pas oublier la partie avec https:// ou http:// qui représente le protocole utilisé, au début de l'adresse.

CSS - Les bases

Définition du CSS

Le CSS (Cascading Style Sheets), ou "Feuilles de Style en Cascade" en français, est un langage utilisé pour décrire la présentation visuelle d'un document écrit en HTML ou XML. Il permet de contrôler l'apparence et la mise en page des pages web, séparant ainsi la structure (HTML) de la présentation (CSS)

Propriétés du CSS

1. Fonctionnalité principale :

  • Mise en forme : CSS est utilisé pour styliser le contenu, en définissant des propriétés comme les couleurs, les polices, les marges, les espacements, les bordures, et bien plus.
  • Mise en page : Il permet de positionner les éléments sur une page à l'aide de modèles comme le "box model", les grilles (CSS Grid), ou les flexbox.
  • Réactivité : Avec des concepts comme les "media queries", CSS permet de créer des designs adaptatifs (responsive) qui s'ajustent à différents écrans et appareils.

2. Structure des règles CSS :

Le CSS utilise des règles qui se composent de :

  • Un sélecteur : pour cibler les éléments HTML (par exemple, h1, .class, #id).
  • Une série de propriétés et leurs valeurs, définissant le style souhaité.
  • 3. Caractéristiques principales :

    • Cascading : Les styles peuvent provenir de plusieurs sources (styles internes, externes ou par défaut), et le navigateur détermine quel style appliquer selon une hiérarchie (importance, spécificité, origine).
    • Héritage : Certaines propriétés (comme la couleur et la police) sont automatiquement héritées par les éléments enfants.
    • Modularité : Les feuilles de style externes peuvent être réutilisées sur plusieurs pages web.

    4. Extensions et évolutions :

    CSS évolue constamment avec l'ajout de nouvelles fonctionnalités :

    • CSS3 : Apporte des innovations comme les transitions, les animations, les ombres, les transformations 3D et les grilles.
    • Variables CSS : Permettent d'utiliser des valeurs dynamiques et réutilisables.
    • Préprocesseurs CSS (ex. : Sass, Less) : Offrent des fonctionnalités avancées pour simplifier et enrichir l'écriture de CSS.

    5. Intégration dans une page web :

    CSS peut être intégré de trois manières :

    • En ligne : Directement dans les balises HTML via l’attribut style.
    • Interne : Dans une balise <style> dans la section <head> du document.
    • Externe : Dans un fichier séparé (ex. : styles.css) relié par une balise <link>.

Les outils de validation CSS

Exemples de CSS - Style interne

<style>

h1 {
color: blue;
font-size: 24px;
}

</style>

Intégrer une feuille de style dans une page HTML

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>Bonjour CSS</h1>
</body>
</html>

TEXTES : Couleur et police

p {
color: #2a9d8f; /* Couleur du texte */
font-family: Arial, sans-serif; /* Police utilisée */
font-size: 18px; /* Taille du texte */
}

TEXTES : Alignement

h1 {
text-align: center; /* Centre le texte */
}
p {
text-align: justify; /* Justifie le texte */
}

TEXTES : Décoration

a {
text-decoration: none; /* Supprime le soulignement des liens */
}
h2 {
text-decoration: underline; /* Souligne le texte */
}
h3 {
text-decoration: line-through; /* Barre le texte */
}

TEXTES : Transformation (capitales)

h1 {
text-transform: uppercase; /* Transforme le texte en majuscules */
}
h2 {
text-transform: lowercase; /* Transforme le texte en minuscules */
}
h3 {
text-transform: capitalize; /* Met une majuscule à chaque mot */
}

TEXTES : Espacement entre les lettres et les mots

p {
letter-spacing: 2px; /* Espacement entre les lettres */
word-spacing: 5px; /* Espacement entre les mots */
}

TEXTES : Poids et style (graisse)

h1 {
font-weight: bold; /* Texte en gras */
}
h2 {
font-weight: lighter; /* Texte plus fin */
}
h3 {
font-style: italic; /* Texte en italique */
}

TEXTES : Ombres

h1 {
text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); /* Ombre grise douce */
}

TEXTES : Dégradés

h1 {
background: linear-gradient(90deg, #ff7f50, #1e90ff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent; /* Nécessaire pour afficher le dégradé */
}

Bonus : Animation

@keyframes clignoter {
0%, 100% {
opacity: 1; /* Visible */
}
50% {
opacity: 0; /* Invisible */
}
}

h2 {
animation: clignoter 1s infinite; /* Applique l'animation au texte */
}

BLOCS : Dimension

div {
width: 300px; /* Largeur du bloc */
height: 200px; /* Hauteur du bloc */
}

BLOCS : Couleur de fond et bordure

section {
background-color: #f4a261; /* Couleur de fond */
border: 2px solid #264653; /* Bordure pleine */
border-radius: 10px; /* Bordures arrondies */
}

BLOCS : Espacements

article {
padding: 20px; /* Espacement interne */
margin: 15px; /* Espacement externe */
}

BLOCS : Ombres et reliefs

div {
box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.3); /* Ombre douce */
}

BLOCS : Survol

div {
background-color: #e9c46a;
transition: background-color 0.3s ease; /* Effet fluide */
}

div:hover {
background-color: #2a9d8f; /* Change la couleur au survol */
}

BLOCS : Image de fond

div {
background-image: url('image.jpg');
background-size: cover; /* Image ajustée pour couvrir le bloc */
background-position: center; /* Centrer l'image */
width: 300px;
height: 200px;
}

BLOCS : Animation

@keyframes slideIn {
from {
transform: translateX(-100%);
}
to {
transform: translateX(0);
}
}

div {
width: 200px;
height: 100px;
background-color: #e76f51;
animation: slideIn 1s ease-out;
}

IMAGES : Dimension

img { width: 100%; /* Image prend toute la largeur du conteneur */ height: auto; /* Préserve les proportions */ }

IMAGES : Image ronde

img {
width: 150px;
height: 150px;
border-radius: 50%; /* Rend l'image circulaire */
object-fit: cover; /* Adapte l'image au cercle sans déformation */
}

IMAGES : Bordure

img {
border: 5px solid #2a9d8f; /* Bordure pleine */
border-radius: 10px; /* Coins arrondis */
}

IMAGES : Ombre portée

img {
box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.3); /* Ombre douce */
}

IMAGES : Effet au survol

img {
transition: transform 0.3s ease; /* Animation fluide */
}

img:hover {
transform: scale(1.1); /* Agrandit légèrement l'image au survol */
}

IMAGES : En arrière-plan

div {
background-image: url('image.jpg');
background-size: cover; /* Ajuste l'image pour couvrir tout le conteneur */
background-position: center; /* Centre l'image */
width: 300px;
height: 200px;
}

IMAGES : Responsive dans un bloc

img {
max-width: 100%; /* Limite la largeur de l'image à celle de son conteneur */
height: auto; /* Maintient les proportions */
}

IMAGES : Filtre

img {
filter: grayscale(100%); /* Passe l'image en noir et blanc */
}

img:hover {
filter: none; /* Rétablit les couleurs au survol */
}

IMAGES : Avec superposition de texte

<div class="image-container">
<img src="image.jpg" alt="Description">
<div class="overlay">Texte sur l'image</div>
</div>

.image-container {
position: relative;
width: 300px;
height: 200px;
}

img {
width: 100%;
height: 100%;
object-fit: cover;
}

.overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background: rgba(0, 0, 0, 0.5); /* Superposition semi-transparente */
color: white; /* Couleur du texte */
font-size: 18px;
}

IMAGES : Animation

@keyframes rotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

img {
width: 150px;
height: 150px;
animation: rotate 5s linear infinite; /* Rotation continue */
}

IMAGES : Découpage

img {
width: 200px;
height: auto;
clip-path: polygon(50% 0%, 100% 100%, 0% 100%); /* Découpe l'image en forme de triangle */
}

IMAGES : Mosaïque

.container {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 3 colonnes égales */
gap: 10px;
}

.container img {
width: 100%;
height: auto;
}

Bootstrap - les bases de la grille

Qu'est-ce que Bootstrap ?

Bootstrap est une plateforme front-end open source développée initialement par Twitter pour faciliter la création rapide et cohérente de sites web et d'applications web. Lancée en 2011, elle fournit un cadre riche en fonctionnalités pour construire des interfaces utilisateur modernes et responsives.

Depuis sa création, Bootstrap a évolué pour répondre aux besoins modernes du développement web, la version actuelle étant Bootstrap 5, qui met davantage l'accent sur la performance et supprime la dépendance à jQuery.

Avantages de Bootstrap

Caractéristiques principales :

  1. Framework responsive :
    • Utilise un système de grille flexible qui permet de concevoir des interfaces adaptées à différents écrans (ordinateurs, tablettes, smartphones).
    • Gère automatiquement les proportions et les alignements pour créer des designs fluides.
  2. Composants réutilisables :
    • Inclut des éléments préconçus tels que des boutons, des menus déroulants, des formulaires, des barres de navigation, des carrousels, et bien plus encore.
    • Ces composants sont personnalisables et faciles à intégrer dans tout projet.
  3. Styles CSS modernes :
    • Fournit une bibliothèque CSS basée sur des règles modernes pour appliquer rapidement des thèmes, des couleurs, des polices et des mises en page standardisées.
  4. JavaScript intégré :
    • Comprend des plugins JavaScript pour des fonctionnalités dynamiques, comme les modals, les onglets ou les animations interactives.
  5. Compatibilité avec les navigateurs :
    • Conçu pour fonctionner sur tous les navigateurs modernes, offrant une expérience utilisateur cohérente.
  6. Extensibilité et personnalisation :
    • Les développeurs peuvent modifier ou surcharger les styles par défaut pour répondre à leurs besoins spécifiques.
    • Prend en charge l'intégration avec des préprocesseurs comme Sass ou Less.

Utilisations :

  • Bootstrap est idéal pour les développeurs souhaitant gagner du temps dans la conception d'interfaces tout en maintenant un haut niveau de cohérence.
  • Utilisé dans des projets allant de petits sites web personnels à des applications d'entreprise complexes.

Pourquoi choisir Bootstrap ?

  • Facilité d'apprentissage : Une documentation complète et détaillée facilite la prise en main.
  • Communauté active : Une large communauté de développeurs assure un support constant et l'accès à de nombreuses ressources et extensions.
  • Gratuit et open source : Disponible sous licence MIT, ce qui le rend accessible à tous.

Installation

Dans chaque page il faut coller  ce code pour activer les fonctions de bootstrap :

Dans la balise <head> :

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">

 

Juste avant  </body> :

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>

 

Il s'agit du CDN (Content Delivery Network) fourni par jsDelivr

Exemples de code pour 3 colonnes

Voici un exemple simple d'utilisation de Bootstrap pour afficher un contenu sur trois colonnes. Cet exemple utilise le système de grille de Bootstrap, qui divise l'espace en 12 colonnes.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exemple Bootstrap 3 Colonnes</title>
<!-- Lien vers Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-4">
<div class="row">
<div class="col-md-4">
<div class="p-3 border bg-light">Colonne 1</div>
</div>
<div class="col-md-4">
<div class="p-3 border bg-light">Colonne 2</div>
</div>
<div class="col-md-4">
<div class="p-3 border bg-light">Colonne 3</div>
</div>
</div>
</div>
<!-- Lien vers Bootstrap JS (optionnel si des composants interactifs sont nécessaires) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

Explication :

  1. Structure principale :
    • La classe container est utilisée pour centrer le contenu et ajouter des marges latérales.
    • La classe row crée une ligne contenant les colonnes.
  2. Disposition des colonnes :
    • La classe col-md-4 signifie que chaque colonne occupe 4/12 de la largeur de l'écran sur les appareils de taille moyenne (ou plus grand). Ainsi, 3 colonnes prennent exactement 12/12.
  3. Contenu des colonnes :
    • Chaque colonne contient une division avec des styles supplémentaires (p-3 pour ajouter du padding, border pour une bordure, et bg-light pour un fond clair).

Résultat attendu :

  • Sur des écrans moyens (≥ 768px) ou plus larges, les colonnes seront affichées côte à côte.
  • Sur des écrans plus petits, chaque colonne occupera toute la largeur (par défaut, Bootstrap les empile automatiquement).

Personnalisation :

Vous pouvez ajuster les classes des colonnes (par exemple, col-sm-6, col-lg-3, etc.) pour modifier le comportement selon les tailles d'écran.

Exemple de formulaire HTML avec Bootstrap

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formulaire Complet</title>
<!-- Lien vers Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<h2 class="mb-4">Formulaire de Contact</h2>
<form>
<!-- Nom -->
<div class="mb-3">
<label for="nom" class="form-label">Nom</label>
<input type="text" class="form-control" id="nom" placeholder="Entrez votre nom">
</div>

<!-- Email -->
<div class="mb-3">
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control" id="email" placeholder="Entrez votre email">
</div>

<!-- Téléphone -->
<div class="mb-3">
<label for="telephone" class="form-label">Téléphone</label>
<input type="tel" class="form-control" id="telephone" placeholder="Entrez votre numéro de téléphone">
</div>

<!-- Mot de passe -->
<div class="mb-3">
<label for="password" class="form-label">Mot de passe</label>
<input type="password" class="form-control" id="password" placeholder="Entrez votre mot de passe">
</div>

<!-- Sélection -->
<div class="mb-3">
<label for="selection" class="form-label">Sujet</label>
<select class="form-select" id="selection">
<option value="">Choisissez un sujet</option>
<option value="support">Support technique</option>
<option value="vente">Demande commerciale</option>
<option value="autre">Autre</option>
</select>
</div>

<!-- Boutons radio -->
<div class="mb-3">
<label class="form-label">Genre</label><br>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="genre" id="homme" value="homme">
<label class="form-check-label" for="homme">Homme</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="genre" id="femme" value="femme">
<label class="form-check-label" for="femme">Femme</label>
</div>
</div>

<!-- Cases à cocher -->
<div class="mb-3">
<label class="form-label">Préférences</label><br>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="newsletter">
<label class="form-check-label" for="newsletter">Recevoir la newsletter</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="offres">
<label class="form-check-label" for="offres">Recevoir des offres promotionnelles</label>
</div>
</div>

<!-- Zone de texte -->
<div class="mb-3">
<label for="message" class="form-label">Message</label>
<textarea class="form-control" id="message" rows="4" placeholder="Écrivez votre message ici"></textarea>
</div>

<!-- Bouton de soumission -->
<button type="submit" class="btn btn-primary">Envoyer</button>
<button type="reset" class="btn btn-secondary">Réinitialiser</button>
</form>
</div>

<!-- Lien vers Bootstrap JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

Fonctionnalités :

  1. Champs de base : Nom, email, téléphone, et mot de passe.
  2. Liste déroulante : Permet de sélectionner un sujet.
  3. Boutons radio : Pour sélectionner un genre.
  4. Cases à cocher : Options multiples pour les préférences.
  5. Zone de texte : Pour rédiger un message.
  6. Boutons :
    • Un bouton pour soumettre le formulaire.
    • Un bouton pour réinitialiser les champs.

Personnalisation :

  • Vous pouvez changer les textes, ajouter des validations côté client avec les attributs HTML5 (required, maxlength, etc.), ou utiliser les fonctionnalités JavaScript de Bootstrap pour valider ou améliorer l'interactivité.

Les marges (padding et margin) avec bootstrap

Les couleurs avec Bootstrap

Les images avec Bootstrap

Topbee Sàrl
Rte de la Plantaz 8
1870 Monthey

info@topbee.ch
crossmenuchevron-down