Vous pouvez utilisez ce guide de démarage rapide si vous etes débutant. Il va vous guider pas à pas pour la création de la structure de votre site Internet avec l'aide du Framework Bootstrap.
Vous pouvez utilisez ce guide de démarage rapide si vous etes débutant. Il va vous guider pas à pas pour la création de la structure de votre site Internet avec l'aide du Framework Bootstrap.
À l’instar de sa grande sœur « La Webcup », la Webcup Junior repose sur un format unique et original. Vous devez créer avec votre équipe une page web sur un sujet que vous decouvrez au lancement du concours.
La durée de la compétition, habituellement de 24h non-stop, a été adaptée pour la Webcup Junior : vous avez 5 heures pour réaliser votre travail, avec comme langage de programmation le HTML / HTML 5 et le CSS.
L’objectif de la Webcup Junior est de susciter des vocations, de détecter les futurs talents grâce à la promotion et à l’initiation des langages de programmation.
Ce tutoriel se focalise sur le Framework Bootstrap, il vous permet de rapidement créer au minimum une page web. Des notions de bases du HTML et du CSS ne seront pas abordées. Vous n’avez que peux de temps, nous allons donc commencer directement avec Bootstrap, mais sachez que de bien nombreuses notions pourront vous paraître abstraites voire complètement obscures.
En informatique, un framework désigne un ensemble cohérent de composants, qui sert à créer les fondations d'un logiciel, programme ou application. Bootstrap est un framework HTML/CSS qui permet de créer facilement et rapidement des sites et applications web responsives. Il a été conçu pour aider les développeurs dans leurs travaux quotidiens sur les langages que sont le HTML et le CSS.
Pour coder et afficher une page html5 vous aurez au minimum besoin de :
Cela peut sembler bête, pourtant sans un ordinateur, il sera difficile de faire travailler un code sur du papier :-)
Un simple éditeur de texte comme le bloc-note de windows peut suffire pour éditer du code HTML, mais certains éditeurs (gratuits ou payants) ont la particularité de colorer le code et d’offrir de nombreuses aides à la saisie et au débogage, ce qui décuplera vos performances en matière de création.
Voici 2 logiciels que nous vous recommandons (fournis dans votre dossier Éditeur de texte ). Bien entendu il en existe beaucoup d’autres à découvrir sur Internet.
Pour visualiser le rendu des codes HTML que vous allez créer, il vous faut un navigateur Internet pour afficher votre site web. Par exemple : Google Chrome, Mozilla, Microsoft Edge ou Safari.
Les pages HTML ou HTML5 sont remplies de ce qu'on appelle des balises. Celles-ci sont invisibles à l'écran pour vos visiteurs, mais elles permettent au navigateur de comprendre ce qu'il doit afficher. Les balises se repèrent facilement. Elles sont entourées de < >
, c'est-à-dire des symboles < et >, comme ceci : <balise>
Elles indiquent la nature du texte qu'elles encadrent. Elles veulent dire par exemple : <Ceci est le titre de la page>
, <Ceci est une image>
, <Ceci est un paragraphe de texte>
, etc.
On distingue les fermetures des balises avec le symbole /
On distingue deux types de balises : les balises normales et les balises auto-fermantes.
Une balise normale s'ouvre et se ferme. On a donc une balise ouvrante et une balise fermante. Elle indique au navigateur web les délimitations de l'impact de la balise. Ci-dessous un exemple de balise normale.
<balise>Hello</balise>
Une balise normale qui s'ouvre doit obligatoirement se fermer quelque part sur votre page, sinon c'est le bug !
Ces balises n'ont pas de balise ouvrante ni fermante. Elle servent le plus souvent à insérer un élément autonome à un emplacement précis. C'est pourquoi il n'est pas nécessaire de délimiter le début et la fin de la balise. Ci-après l'exemple d'une balise auto-fermante.
<balise />
Il est important de préciser que le slash (/) et l'espace de fin ne sont pas obligatoires. En effet, on peut écrire une balise auto-fermante sans ces derniers, ça marche également. Cependant, la bonne pratique recommande d'ajouter un slash pour éviter de confondre avec une balise ouvrante. L'espace permet de mieux localiser ces balises dans les fichiers.
Les attributs sont en quelques sortes les options des balises. Ils apportent des informations supplémentaires sur les balises pour offrir davantage de possibilités.
Les attributs se placent toujours de la même manière sur toutes les balises. Ils sont situés au niveau de la balise ouvrante. Une balise peut avoir une infinité d'attributs.
Par contre, on ne retrouve qu'un attribut de même nom par balise. Une balise auto-fermante peut également avoir des attributs. Dans ce cas, ils sont contenus au niveau de la balise auto-fermante. Ci-dessous un exemple d'une balise et d'une balise auto-fermante avec un attribut. Les attributs s'écrivent également toujours en minuscule.
<balise attribut="1">Hello</balise>
<balise attribut="2" />
Toutes les balises et attributs que nous venons de voir sont purement fictifs. Ils servaient d'exemple. Les balises HTML sont en anglais, nous allons les découvrir par la suite.
Le schéma ci-dessous, vous indique l’arborescence de votre dossier qui vous a été donné par un des animateurs de la Webcup Junior. Il est composé de 3 sous-dossiers principaux :
Contient votre dossier de travaille, c’est dans le fichier index.html
que vous devrais coder votre site web. Le fichier custom.css
, vous permet d'ajouter votre propre code css (modifier les couleurs, la police, la taille des titres, etc.
Contient les 2 logiciels vous permettant d’éditer du code, faites votre choix.
C’est ce fichier que vous lisez et ses dossiers nécessaires à son exécution. Cliquez sur index.html dans le dossier « Documentation » pour afficher ce tutoriel à tout moment.
Nous allons commencer par créer une simple page html de base qui va afficher un message : Hello Rodrigues !
Ouvrez avec votre éditeur de texte le fichier index.html
se trouvant dans le repertoire site-web .
Maintenant copier coler le code ci-dessous dans ce fichier et enregistrez le sans le renomer.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<title> Titre de la page affiché dans la barre du navigateur </title>
<link rel="stylesheet" href="./css/bootstrap.bundle.min.css" />
<link rel="stylesheet" href="./custom.css" />
</head>
<body>
<header>
</header>
<main>
<h1> Hello Rodrigues ! </h1>
</main>
<footer>
</footer>
<script src="./js/bootstrap.bundle.min.js"></script>
</body>
</html>
Il s’agit d’une page Web classique avec quelques éléments spécifiques :
<link>
, une vers la feuille de style Bootstrap et une autre vers le fichier custom.css
dans lequel vous pouvez ajouter votre code css personalisé, si besoin;<meta name="viewport">
définissant le viewport, c’est-à-dire la surface de la fenêtre du navigateur qui affiche la page. Cela va permettre à la page de s’adapter à la dimension du terminal client ;<meta charset="utf-8">
permettant un affichage correct des accents sur les navigateurs;<header>
<main>
<footer>
sont des balises sémantiques, ils permettent aux navigateurs internet de mieux comprendre la structure (ou l'organisation) du site et aide au référencement. la balise <header>
désigne l'en tête du site, la balise <main>
représente le contenu principal et la balise <footer>
correspond au pied de page. Plus d'informations sur les balises sémantiques ici. <script>
qui activent les plugins Bootstrap. Ce plugins sont nécessaires pour animer les composants Bootstrap.Ouvrez cette page dans votre navigateur Web favori (double clic sur le fichier index.html
pour le lancer dans un navigateur). Vous obtenez le résultat ci-dessous.
Le framework Bootstrap repose sur un système de grille. On entend par système de grille, une structure de colonnes et de lignes permettant d'organiser le contenu et la mise en forme de la page web. C'est l'élément essentiel et le cœur même de Bootstrap. Cependant, ce système n'est pas seulement utilisé par ce dernier. On retrouve le même fonctionnement dans d'autres frameworks.
Avant de pouvoir jouir du système de grille, il est primordial et requis de définir le containeur. Il y en a deux types :
.container
.container-fluid
Les containeurs sont les composants les plus basiques de Bootstrap. Ils permettent de structurer la grille. En utilisant la classe .container, on centre la grille sur une largeur maximale fixe. Celle-ci est variable suivant la largeur de la page. Tandis qu'en utilisant .container-fluid, on permet à la grille d'occuper 100 % de la largeur de la page. La subtile différence entre les deux est essentielle.
Bootstrap est responsive design. En effet, Bootstrap adapte la mise en forme de la page en fonction de la taille de l'écran. Il permet un affichage optimisé aussi bien sur un écran géant que sur un smartphone. On parle généralement d'affichage desktop, qui correspond à l'affichage sur les ordinateurs de bureau standard, et d'affichage mobile pour les tablettes et smartphones. Il est très facile de simuler un affichage mobile depuis un ordinateur, en redimensionnant tout simplement la fenêtre du navigateur web.
Comment se comportent les éléments quand la taille de la page évolue ? Il y a deux cas de figures : soit les éléments se redimensionnent, soit ils s'empilent. Afin de ne pas rendre les éléments illisibles, Bootstrap permet de les empiler quand la place devient vraiment trop étroite.
La classe .container possède une largeur maximale fixe suivant la largeur de la page web. En effet, Bootstrap réagit suivant plusieurs formats. Bootstrap réagit suivant 5 formats. Le tableau ci-après récapitule les points clés.
Bootstrap découpe le corps de la page web en une multitude de lignes, on parle alors de row.
Chaque ligne est découpée en 12 colonnes de largeur égale.
Le terme associé est col. Il n'est pas obligatoire de toutes les utiliser individuellement, il est possible de les regrouper pour en former des plus larges. Toutefois, attention à ne pas dépasser 12 colonnes.
Il est grand temps de récapituler en exemple toutes les notions que nous venons d'aborder. Ci-après un exemple qui contient un .container-fluid avec un .row et plusieurs .col.
Éditez le fichier index.html
comme indiqué ci-dessous. Dans le fichier , cherchez la balise <main> </main>
et remplacer la par le code ci-dessous pour essayer par vous-même.
<main>
<div class="container">
<div class="row">
<div id="main" class="col-md-8">col-md-8</div>
<div id="sidebar" class="col-md-4">col-md-4</div>
</div>
</div>
</main>
Dans l'exemple, nous avons donc une ligne avec deux zones, réparties en 2/3 et 1/3. La partie principale, identifiée par #main, occupe donc 8 colonnes, tandis que la plus petite partie, #sidebar, occupe 4 colonnes.
Comme dans chaque ligne, la taille totale des colonnes doit être égale à 12, on peut donc choisir de diviser la surface d’affichage en 12 colonnes de taille 1, ou bien en 3 colonnes de taille 4, ou encore en une colonne de taille 4 et une colonne de taille 8.
Voici un autre exemple avec un placement d'une petite colonne à gauche, une grande au milieu et une petite à droite.
<main>
<div class="container">
<div class="row">
<div id="first_sidebar" class="col-md-3">col-md-3</div>
<div id="main" class="col-md-6">col-md-6</div>
<div id="second_sidebar" class="col-md-3">col-md-3</div>
</div>
</div>
</main>
On remarque au passage que le total des tailles des colonnes (3 + 6 + 3) est bien égal à 12. Ouvrez cette page dans un navigateur Web. Le placement des colonnes s’adapte à la surface d’affichage disponible.
Voici le rendu.
Nous allons maintenant réalisé une page compléte que vous pourrez personalisé avec vos images, couleurs, police, etc... Voici le rendu finale de votre futur page web.
Pour commencer nettoyez votre fichier index.html
en supprimant tout le contenu entre les balises <main>
et <main>
.
Ensuite, collez les bouts de codes ci-dessous, un après l'autre, en suivant les étapes indiquées.
Nous allons commencer par ajouter une barre de navigation en haut du site. Voici le code. Collez le juste après la balise ouvrante <header> ici </header>
.
Puis faites un test pour voir le rendu.
<!-- NAVBAR Barre de navigation ================================================== -->
<header>
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
<div class="container">
<a class="navbar-brand" href="#">Logo</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="offcanvas offcanvas-end text-bg-dark" tabindex="-1" id="offcanvasNavbarDark" aria-labelledby="offcanvasNavbarDarkLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasNavbarDarkLabel">Offcanvas</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-light" type="submit">Search</button>
</form>
</div>
</div>
</nav>
</header>
<!-- END Barre de navigation ====================== -->
Mainenant nous allons ajouter un slider avec trois images. C'est notre première section. Vous pourez modifier les images par la suite. Toutes les images sont stocké dans votre dossier site-web >> images.
Ensuite, collez le code juste après la balise ouvrante <main> ici </main>
.
<!-- Carousel ================================================== -->
<section id="carouselExampleDark" class="carousel carousel-dark slide" data-bs-ride="carousel">
<!-- Indicators -->
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<!-- Slide 1 -->
<div class="carousel-inner">
<div class="carousel-item active" data-bs-interval="10000">
<img src="./images/landing-21.jpg" class="d-block w-100" alt="First slide">
<div class="carousel-caption d-none d-md-block text-white">
<h5>First slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Link</a></p>
</div>
</div>
<!-- END Slide 1 -->
<!-- Slide 2 -->
<div class="carousel-item" data-bs-interval="2000">
<img src="./images/landing-6.jpg" class="d-block w-100" alt="Second slide">
<div class="carousel-caption d-none d-md-block text-white">
<h5>Second slide label</h5>
<p>Some representative placeholder content for the second slide.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Link</a></p>
</div>
</div>
<!-- END Slide 2 -->
<!-- Slide 3 -->
<div class="carousel-item">
<img src="./images/blog-2.jpg" class="d-block w-100" alt="Third slide">
<div class="carousel-caption d-none d-md-block text-white">
<h5>Third slide label</h5>
<p>Some representative placeholder content for the third slide.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Link</a></p>
</div>
</div>
<!-- END Slide 3 -->
</div>
<!-- Arrows -->
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</section>
<!-- END carousel -->
Notez que pour modifier les images , il faut repérer la balise auto-fermante <img>
<img src="./images/blog-2.jpg" class="d-block w-100" alt="Third slide">
La source de l'image se trouve dans le dossier images de votre dossier site-web. Modifier le code pour faire pointer le lien vers une autre image.
src="./images/mon-images.jpg"
Voici le rendu.
Ajoutons maintenant une présentation du groupe, qui correspond à notre deuxieme <section>
. Collez ce code en dessous de l'autre.
<!-- 3 columns of text below the carousel -->
<section class="container marketing">
<div class="row text-center py-5 my-5">
<div class="col-lg-4">
<img class="rounded-circle" src="images/landiniog-roi21.jpg" alt="Generic placeholder image" >
<h2>Heading</h2>
<p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p>
<p><a class="btn btn-outline-dark" href="#" role="button">View details »</a></p>
</div><!-- /.col-lg-4 -->
<div class="col-lg-4">
<img class="rounded-circle" src="images/landing-roi21.jpg" alt="Generic placeholder image" >
<h2>Heading</h2>
<p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p>
<p><a class="btn btn-outline-dark" href="#" role="button">View details »</a></p>
</div><!-- /.col-lg-4 -->
<div class="col-lg-4">
<img class="rounded-circle" src="images/landing-oi21.jpg" alt="Generic placeholder image" >
<h2>Heading</h2>
<p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p>
<p><a class="btn btn-outline-dark" href="#" role="button">View details »</a></p>
</div><!-- /.col-lg-4 -->
</div><!-- /.row -->
<section>
Voici le résultat
Nous allons ajouter une troisième <section>
"Dates de tournées".
<!-- Tour dates ================================================== -->
<section class="container marketing">
<div id="tour" class="bg-1">
<div class="container text-dark">
<hr class="featurette-divider">
<div class="text-light">
<h3 class="text-center">TOUR DATES</h3>
<p class="text-center">Lorem ipsum we'll play you some music.<br> Remember to book your tickets!</p>
</div>
<ul class="list-group">
<li class="list-group-item">September <span class="badge bg-danger">Sold Out!</span></li>
<li class="list-group-item">October <span class="badge bg-danger">Sold Out!</span></li>
<li class="list-group-item">November <span class="badge bg-secondary">3</span></li>
</ul>
<div class="row text-center">
<article class="col-sm-4 mt-3">
<div class="card">
<img src="images/nonprofit-6.jpg" alt="Paris" >
<div class="card-body">
<p class="card-text"><strong>Paris</strong></p>
<p class="card-text">Friday 25 September 2022</p>
<button class="btn btn-dark" data-bs-toggle="modal" data-bs-target="#myModal">Buy Tickets</button>
</div>
</div>
</article>
<article class="col-sm-4 mt-3">
<div class="card">
<img src="images/landing-17.jpg" alt="New York">
<div class="card-body">
<p class="card-text"><strong>New York</strong></p>
<p class="card-text">Saturday 26 September 2022</p>
<button class="btn btn-dark" data-bs-toggle="modal" data-bs-target="#myModal">Buy Tickets</button>
</div>
</div>
</article>
<article class="col-sm-4 mt-3">
<div class="card">
<img src="images/landing-23.jpg" alt="San Francisco" >
<div class="card-body">
<p class="card-text"><strong>San Francisco</strong></p>
<p class="card-text">Sunday 27 September 2022</p>
<button class="btn btn-dark" data-bs-toggle="modal" data-bs-target="#myModal">Buy Tickets</button>
</div>
</div>
</article>
</div>
<hr class="featurette-divider">
</div>
<!-- Modal
================================================== -->
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content text-dark">
<div class="modal-header">
<h5 class="modal-title">Tickets</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form role="form">
<div class="form-group py-3">
<label for="psw"><span class="glyphicon glyphicon-shopping-cart"></span> Tickets, $23 per person</label>
<input type="number" class="form-control" id="psw" placeholder="How many?">
</div>
<div class="form-group py-3">
<label for="usrname"><span class="glyphicon glyphicon-user"></span> Send To</label>
<input type="text" class="form-control" id="usrname" placeholder="Enter email">
</div>
</form>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-success">Pay<span class="glyphicon glyphicon-ok"></span>
</button>
<button type="submit" class="btn btn-danger btn-default pull-left" data-dismiss="modal">
<span class="glyphicon glyphicon-remove"></span> Cancel
</button>
<p>Need <a href="#">help?</a></p>
</div>
</div>
</div>
</div>
<!-- END Modal ======================== -->
</div>
<section>
<!-- END Tour dates ==================== -->
Voici le résultat
Avez remarqué une fonctionnalité intéressante du Framework Bootstrap. Les Modals permettent d’afficher du contenu dans une fenêtre qui s’ouvre par-dessus la page et ceci sans la quitter. Quand vous aurez ajouté le code ci-dessus, cliquez sur le bouton « Buy Tickets » pour l’afficher.
Ajoutons maintenant une quatrième <section>
de présentation.
<!-- FEATURETTES ================================================== -->
<section class="container marketing">
<div class="row align-items-end featurette py-5 my-5">
<div class="col-md-7">
<h2 class="featurette-heading">First featurette heading. <span class="text-muted">It'll blow your mind.</span></h2>
<p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
</div>
<div class="col-md-5">
<img src="images/blog-3.jpg" alt="Generic placeholder image" class="featurette-image img-responsive center-block" data-src="holder.js/500x500/auto">
</div>
</div>
<section>
<!-- END FEATURETTES ======================== -->
Voici le résultat
Avant dernière étape, nous allons ajouter une <section>
appelée « Jumbotron » avec un bouton Appel à l'action
<!-- Album example ================================================== -->
<section class="jumbotron text-center bg-light py-5 my-5">
<div id="contact" class="container">
<h1 class="jumbotron-heading">Album example</h1>
<p class="lead text-muted">Something short and leading about the collection below—its contents, the creator, etc. Make it short and sweet, but not too short so folks don't simply skip over it entirely.</p>
<p>
<a href="#" class="btn btn-primary my-2">Main call to action</a>
<a href="#" class="btn btn-secondary my-2">Secondary action</a>
</p>
</div>
</section>
<!-- END Album example ===================== -->
Dernière étapes, nous allons ajouter le pied de page (footer), visible en bas de l'image ci-dessus.
<!-- FOOTER -->
<footer class="container py-1">
<p class="float-end"><a href="#">Back to top</a></p>
<p>© 2017–2022 Company, Inc. · <a href="#">Privacy</a> · <a href="#">Terms</a></p>
</footer>
<!-- END FOOTER -->
Si vous avez bien suivi les étapes, voici donc le résultat final que vous devriez voir apparaitre dans votre navigateur.
Voici le code dans son intégralité.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<title> Titre de la page affiché dans la barre du navigateur </title>
<link rel="stylesheet" href="css/bootstrap.min.css" />
<link rel="stylesheet" href="custom.css" />
</head>
<body>
<!-- NAVBAR Barre de navigation ================================================== -->
<header>
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
<div class="container">
<a class="navbar-brand" href="#">Logo</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="offcanvas offcanvas-end text-bg-dark" tabindex="-1" id="offcanvasNavbarDark" aria-labelledby="offcanvasNavbarDarkLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasNavbarDarkLabel">Offcanvas</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-light" type="submit">Search</button>
</form>
</div>
</div>
</nav>
</header>
<!-- END Barre de navigation ====================== -->
<main>
<!-- Carousel ================================================== -->
<section id="carouselExampleDark" class="carousel carousel-dark slide" data-bs-ride="carousel">
<!-- Indicators -->
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<!-- Slide 1 -->
<div class="carousel-inner">
<div class="carousel-item active" data-bs-interval="10000">
<img src="./images/landing-21.jpg" class="d-block w-100" alt="First slide">
<div class="carousel-caption d-none d-md-block text-white">
<h5>First slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Link</a></p>
</div>
</div>
<!-- END Slide 1 -->
<!-- Slide 2 -->
<div class="carousel-item" data-bs-interval="2000">
<img src="./images/landing-6.jpg" class="d-block w-100" alt="Second slide">
<div class="carousel-caption d-none d-md-block text-white">
<h5>Second slide label</h5>
<p>Some representative placeholder content for the second slide.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Link</a></p>
</div>
</div>
<!-- END Slide 2 -->
<!-- Slide 3 -->
<div class="carousel-item">
<img src="./images/blog-2.jpg" class="d-block w-100" alt="Third slide">
<div class="carousel-caption d-none d-md-block text-white">
<h5>Third slide label</h5>
<p>Some representative placeholder content for the third slide.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Link</a></p>
</div>
</div>
<!-- END Slide 3 -->
</div>
<!-- Arrows -->
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</section>
<!-- END carousel -->
<!-- Marketing messaging and featurettes ================================================== -->
<!-- 3 columns of text below the carousel -->
<section class="container marketing">
<div class="row text-center py-5 my-5">
<div class="col-lg-4">
<img class="rounded-circle" src="images/landiniog-roi21.jpg" alt="Generic placeholder image" >
<h2>Heading</h2>
<p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p>
<p><a class="btn btn-outline-dark" href="#" role="button">View details »</a></p>
</div><!-- /.col-lg-4 -->
<div class="col-lg-4">
<img class="rounded-circle" src="images/landing-roi21.jpg" alt="Generic placeholder image" >
<h2>Heading</h2>
<p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p>
<p><a class="btn btn-outline-dark" href="#" role="button">View details »</a></p>
</div><!-- /.col-lg-4 -->
<div class="col-lg-4">
<img class="rounded-circle" src="images/landing-oi21.jpg" alt="Generic placeholder image" >
<h2>Heading</h2>
<p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p>
<p><a class="btn btn-outline-dark" href="#" role="button">View details »</a></p>
</div><!-- /.col-lg-4 -->
</div><!-- /.row -->
</section>
<!-- Tour dates ================================================== -->
<section class="container marketing">
<div id="tour" class="bg-1">
<div class="container text-dark">
<hr class="featurette-divider">
<div class="text-light">
<h3 class="text-center">TOUR DATES</h3>
<p class="text-center">Lorem ipsum we'll play you some music.<br> Remember to book your tickets!</p>
</div>
<ul class="list-group">
<li class="list-group-item">September <span class="badge bg-danger">Sold Out!</span></li>
<li class="list-group-item">October <span class="badge bg-danger">Sold Out!</span></li>
<li class="list-group-item">November <span class="badge bg-secondary">3</span></li>
</ul>
<div class="row text-center">
<article class="col-sm-4 mt-3">
<div class="card">
<img src="images/nonprofit-6.jpg" alt="Paris" >
<div class="card-body">
<p class="card-text"><strong>Paris</strong></p>
<p class="card-text">Friday 25 September 2022</p>
<button class="btn btn-dark" data-bs-toggle="modal" data-bs-target="#myModal">Buy Tickets</button>
</div>
</div>
</article>
<article class="col-sm-4 mt-3">
<div class="card">
<img src="images/landing-17.jpg" alt="New York">
<div class="card-body">
<p class="card-text"><strong>New York</strong></p>
<p class="card-text">Saturday 26 September 2022</p>
<button class="btn btn-dark" data-bs-toggle="modal" data-bs-target="#myModal">Buy Tickets</button>
</div>
</div>
</article>
<article class="col-sm-4 mt-3">
<div class="card">
<img src="images/landing-23.jpg" alt="San Francisco" >
<div class="card-body">
<p class="card-text"><strong>San Francisco</strong></p>
<p class="card-text">Sunday 27 September 2022</p>
<button class="btn btn-dark" data-bs-toggle="modal" data-bs-target="#myModal">Buy Tickets</button>
</div>
</div>
</article>
</div>
<hr class="featurette-divider">
</div>
<!-- Modal
================================================== -->
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content text-dark">
<div class="modal-header">
<h5 class="modal-title">Tickets</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form role="form">
<div class="form-group py-3">
<label for="psw"><span class="glyphicon glyphicon-shopping-cart"></span> Tickets, $23 per person</label>
<input type="number" class="form-control" id="psw" placeholder="How many?">
</div>
<div class="form-group py-3">
<label for="usrname"><span class="glyphicon glyphicon-user"></span> Send To</label>
<input type="text" class="form-control" id="usrname" placeholder="Enter email">
</div>
</form>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-success">Pay<span class="glyphicon glyphicon-ok"></span>
</button>
<button type="submit" class="btn btn-danger btn-default pull-left" data-dismiss="modal">
<span class="glyphicon glyphicon-remove"></span> Cancel
</button>
<p>Need <a href="#">help?</a></p>
</div>
</div>
</div>
</div>
<!-- END Modal ======================== -->
</div>
</section>
<!-- END Tour dates ==================== -->
<!-- FEATURETTES ================================================== -->
<section class="container marketing">
<div class="row align-items-end featurette py-5 my-5">
<div class="col-md-7">
<h2 class="featurette-heading">First featurette heading. <span class="text-muted">It'll blow your mind.</span></h2>
<p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
</div>
<div class="col-md-5">
<img src="images/blog-3.jpg" alt="Generic placeholder image" class="featurette-image img-responsive center-block" data-src="holder.js/500x500/auto">
</div>
</div>
</section>
<!-- END FEATURETTES ======================== -->
<!-- END Marketing messaging and featurettes ======= -->
<!-- Album example ================================================== -->
<section class="jumbotron text-center bg-light py-5 my-5">
<div id="contact" class="container">
<h1 class="jumbotron-heading">Album example</h1>
<p class="lead text-muted">Something short and leading about the collection below—its contents, the creator, etc. Make it short and sweet, but not too short so folks don't simply skip over it entirely.</p>
<p>
<a href="#" class="btn btn-primary my-2">Main call to action</a>
<a href="#" class="btn btn-secondary my-2">Secondary action</a>
</p>
</div>
</section>
<!-- END Album example ===================== -->
</main>
<!-- FOOTER -->
<footer class="container py-1">
<p class="float-end"><a href="#">Back to top</a></p>
<p>© 2017–2022 Company, Inc. · <a href="#">Privacy</a> · <a href="#">Terms</a></p>
</footer>
<!-- END FOOTER -->
<script src="./js/bootstrap.bundle.min.js"></script>
</body>
</html>
Vous avez maintenant une base pour personnaliser votre page web en rapport avec le sujet de la Webcup Junior 2022. Modifiez les images et les textes, ajoutez votre propre style dans le fichier custom.css si vous voulez allez plus loin !
Boostrap est populaire, vous pourrez trouver sur le web de nombreux bouts de codes (Snippets : Un Snippet est un terme de programmation informatique désignant une petite portion réutilisable de code source ou de texte ) vous permettant d'aller encore plus loin dans la personalisation de votre page web Webcup Junior. Voici une liste simple et non exaustive.
Ce guide est basé sur Bootstrap 5 (v5.2)
Vous pouvez également passer à la nouvelle version :
Quelques guides Bootstrap
Les exemples que nous avons utilisé.
Conformément à ses statuts, l’association Webcup a pour objectifs de : Dynamiser et promouvoir le rayonnement et l’excellence de la filière TIC et de ses acteurs.
Dynamiser et promouvoir l’esprit d’innovation et d’entrepreneuriat. Susciter des vocations et contribuer à l’enseignement ou l’apprentissage dans le domaine des TIC, de l’entrepreneuriat et de l’innovation.
Favoriser la coopération régionale et internationale dans le domaine des TIC, de l’entrepreneuriat et de l’innovation, mettre à profit la solidarité numérique et soutenir les échanges culturels et économiques entre les différents acteurs.