les meilleurs de la programmation avec Sen Dev Tech
programmation
Dans ce tutoriel je vous apprends à créer un Dashboard Admin tout responsive avec du HTML et CSS uniquement.
En effet vous allez découvrir dans cet article des notions solide pour créer une interface admin adaptée à votre besoin et vous allez aussi apprendre en profondeur HTML et CSS sur les animations, les grid, flex-box, comment créer un sidebar, un menu…
Dans un premier temps vous devez télécharger Fontawesome pour les icons ou bien utilisé le lien cdn cliquez ici , si vous avez de la connexion bien évidement.
Apres avoir télécharger les outils nécessaire nous allons maintenant créer notre Sidebar en premier :
Learn Programming
le code CSS de notre Sidebar:
*{
padding: 0;
margin: 0;
box-sizing: border-box;
list-style-type: none;
text-decoration: none;
font-family: 'verdana';
}
.sidebar{
width: 300px;
position: fixed;
left: 0;
top: 0;
height: 100vh;
background: #008ea1;
z-index: 100;
transition: width 300ms;
}
.sidebar-brand{
height: 90px;
padding: 1rem 0rem 1rem 2rem;
color: #fff;
}
.sidebar-brand span{
display: inline-block;
margin-right: 1rem;
}
.sidebar-menu{
margin-top: 1rem;
}
.sidebar-menu a{
padding-left: 1rem;
display: block;
color: #fff;
font-size: 1.1rem;
}
.sidebar-menu li{
width: 100%;
margin-bottom: 2rem;
padding-left: 10%;
}
.sidebar-menu a span:first-child{
padding-left: 1rem;
font-size: 1.5rem;
}
.sidebar-menu a.active{
background: #fff;
padding-top: 1rem;
padding-bottom: 1rem;
color: #008ea1;
border-radius: 30px 0px 0px 0px;
}
.content{
transition: margin-left 300ms;
margin-left: 22%;
}
NB: Apres la creation de notre sidebar, nous avons crée une div avec la classe content qui va englober notre contenu mais ce dernier est aussi accompagné d’une balise main. donc cela veut dire que tout le reste de notre code se trouve entre ces deux.
Pour plus de compréhension, vous pouvez aussi suivre la vidéo sur YouTube en cliquant ici
Creation de notre navbaar:
Accueil
Alassane
Admin
Profil
Deconnexion
Remarque: si vous constatez bien le code, j’ai crée la div mais je ne les pas fermé; c’est à la fin du code global que vous allez le fermé.
Code CSS du navbar :
header{
background-color: #fff;
display: flex;
justify-content: space-between;
padding: 1rem;
box-shadow: 2px 5px 15px 2px rgb(0 0 0 / 10%);
position: fixed;
left: 22%;
width: calc(100% - 22%);
top: 0;
z-index: 100;
transition: left 300ms;
}
.accueil{
font-size: 1.5rem;
padding-right: 1rem;
margin-left: 15px;
color: #008ea1;
}
.search-wrapp{
border: 1px solid #008ea1;
border-radius: 20px;
height: 38px;
display: flex;
align-items: center;
overflow-x: hidden;
}
.search-wrapp input{
height: 100%;
padding: .5rem;
border: none;
outline: none;
}
.search-wrapp span{
display: inline-block;
padding: 0rem 1rem;
font-size: 1.5rem;
color: #008ea1;
}
.user-wrapp{
display: flex;
align-items: center;
}
.user-wrapp img{
border-radius: 50%;
margin-right: 5rem;
}
.user-wrapp small{
color: #ccc;
display: inline-block;
}
.logo-admin{
cursor: pointer;
}
#dropdown{
position: relative;
display: inline-block;
}
.dropdown-content{
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
height: 80px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
padding: 5px;
z-index: 1;
}
#dropdown:hover .dropdown-content{
display: block;
cursor: pointer;
}
.dropdown-content p{
padding: .5rem;
}
Ainsi je vais maintenant crée la balise main qui lui aussi va se fermé à la fin du code.
2.000.000
Ventes
+30
Stock
58
Fournisseur
20k
Communauté
code CSS des cards:
main{
margin-top: 80px;
background-color: #ebf6ff;
padding: 2rem 1.5rem;
min-height: calc(100vh);
}
.cards{
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 2rem;
margin-top: 1rem;
}
.card-single{
display: flex;
background-color: #fff;
justify-content: space-between;
padding: 2rem;
border-radius: 10px;
box-shadow: 2px 5px 10px 2px rgb(0 0 0 / 10%);
}
.card-single span:first-child{
color: #f8e80c;
}
.card-single span:last-child{
font-size: 2rem;
}
.card-single small{
color: grey;
}
.card-single:hover{
background-color: #008ea1;
color: #fff;
}
Nb: vous devez aussi savoir que le code est une continuité.
Code des deux tableaux et les statistiques :
Listes produits
modou
pathe
demba
modou
dmeba
mass
modou
dmeba
mass
modou
dmeba
mass
modou
dmeba
mass
modou
dmeba
mass
Clients fideles
Omar
Embulant
Omar
Embulant
Omar
Embulant
Omar
Embulant
Omar
Embulant
Legende
Riz
Mil
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
code CSS.
.composant{
margin-top: 3.5rem;
display: grid;
grid-gap: 2rem;
grid-template-columns: 69% auto;
}
.case{
background-color: #fff;
border-radius: 10px;
}
.header-case, .body-case{
padding: .5rem
}
.header-case{
display: flex;
justify-content: space-between;
align-items: center;
}
.header-case button{
background-color: #008ea1;
border-radius: 10px;
color: #fff;
font-size: .8rem;
padding: .5rem 1rem;
border: none;
cursor: pointer;
}
.btn{
background-color: #008ea1;
border-radius: 10px;
color: #fff;
font-size: .8rem;
padding: .5rem 1rem;
border: none;
cursor: pointer;
margin-bottom: 1rem;
margin-left: 5px;
}
table{
border-collapse: collapse;
}
thead tr{
border-top: 1px solid #ccc;
border-bottom: 1px solid #ccc;
}
thead td{
font-weight: 700;
}
td{
padding: .5rem 1rem;
}
td .status-produit{
display: inline-block;
height: 15px;
width: 15px;
margin-right: 1rem;
border-radius: 50%;
}
.status-produit.color-one{
background-color: #ec1c24;
}
.status-produit.color-two{
background-color: #fff200;
}
.status-produit.color-three{
background-color: #b83dba;
}
.status-produit.color-four{
background-color: #00a8f3;
}
.status-produit.color-five{
background-color: #b83dba;
}
tr td:last-child{
display: flex;
align-items: center;
}
.tableau{
overflow-x: auto;
width: 100%;
}
.all-users{
display: flex;
justify-content: space-between;
align-items: center;
padding: .5rem .7rem;
}
.infos{
display: flex;
align-items: center;
}
.infos img{
border-radius: 50%;
margin-right: 1rem;
}
.user-contact span{
font-size: 1.2rem;
display: inline-block;
margin-left: .5rem;
}
.fa-facebook{
color: #4267B2;
cursor: pointer;
}
.fa-whatsapp{
color: #128C7E;
cursor: pointer;
}
.fa-phone{
color: #1DB954;
cursor: pointer;
}
.fa-bars{
cursor: pointer;
}
.statistiques{
background-color: #fff;
display: flex;
height: 300px;
align-items: flex-end;
}
.statistique-barre{
flex-grow: 1;
border: 1px solid #ccc;
margin: 6px;
}
.bar1{
height: 95%;
background-color: #ec1c24;
}
.bar2{
height: 55%;
background-color: #00a8f3;
}
.bar3{
height: 45%;
background-color: #ec1c24;
}
.bar4{
height: 85%;
background-color: #00a8f3;
}
.bar5{
height: 35%;
background-color: #ec1c24;
}
.bar6{
height: 95%;
background-color: #00a8f3;
}
.legende{
background-color: #fff;
border-radius: 10px;
}
.legende h4{
padding: 1rem;
}
td .evolution{
display: inline-block;
height: 15px;
width: 15px;
margin-right: 1rem;
border-radius: 50%;
}
.evolution.color-one{
background-color: #ec1c24;
}
.evolution.color-two{
background-color: #00a8f3;
}
.txt-deco{
padding: 1rem;
font-weight: 500;
color: grey;
}
Vous savez quand on vous créez votre admin vous aurez forcément besoin d’un calendrier pour pourvoir dater vos évènements et autres. ainsi nous avons à ce que vous en aurez besoin.
alors voici le code du calendrier :
- ❮
- ❯
- Mai
2021
- Mo
- Tu
- We
- Th
- Fr
- Sa
- Su
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 27
- 28
- 29
- 30
- 31
Nb: vous avez tous remarqué que c’est à la fin que j’ai fermé la balise main ainsi que la div qui contient la class content.
code CSS du calendrier :
.calendar{
padding-top: 2rem;
}
.mois-annee{
padding: 70px 25px;
width: 100%;
background-color: #008ea1;
text-align: center;
}
.mois-annee ul{
margin: 0;
padding: 0;
}
.mois-annee ul li{
color: #fff;
font-size: 20px;
text-transform: uppercase;
letter-spacing: 3px;
}
.mois-annee .prev{
float: left;
padding-top: 10px;
}
.mois-annee .next{
float: right;
padding-top: 10px;
}
.mois{
margin: 0;
padding: 10px 0;
background-color: #ddd;
}
.mois li{
display: inline-block;
width: 13%;
color: #666;
text-align: center;
}
.jours{
padding: 10px 0;
background-color: #eee;
margin: 0;
}
.jours li{
display: inline-block;
width: 13%;
text-align: center;
margin-bottom: 5px;
font-size: 12px;
color: #777;
}
.jours li .active{
padding: 5px;
background-color: #008ea1;
color: #fff !important;
}
code de notre toggle barre, c’est à dire les trois barre à coté. Nb: vous devez le mettre en haut de votre code après la balise body :
code css :
#menu:checked ~ .sidebar{
width: 60px;
}
#menu:checked ~ .sidebar .sidebar-brand, h2 span:last-child,
#menu:checked ~ .sidebar li a span:last-child{
display: none;
}
#menu:checked ~ .content{
margin-left: 60px;
}
#menu:checked ~ .content header{
width: calc(100% - 60px);
left: 60px;
}
code pour gérer la responsivité avec les média queries :
@media only screen and (max-width: 960px){
.cards{
grid-template-columns: repeat(3, 1fr);
}
.recent-grid{
grid-template-columns: 60% 40%;
}
}
@media only screen and (max-width: 768px){
.cards{
grid-template-columns: 100%;
}
.composant{
grid-template-columns: repeat(1, 1fr);
}
.search-wrapp{
display: none;
}
.sidebar{
left: -100% !important;
}
header p{
display: flex;
align-items: center;
}
header p label{
display: flex;
padding-right: 0rem;
margin-right: 1rem;
height: 40px;
width: 40px;
border-radius: 50%;
color: #fff;
align-items: center;
justify-content: center !important;
background-color: #008ea1;
}
header p span{
text-align: center;
padding-right: 0rem;
}
.content{
width: 100%;
margin-left: 0rem !important;
}
header{
width: 100% !important;
left: 0 !important;
}
#menu:checked ~ .sidebar {
left: 0 !important;
z-index: 100;
width: 45%;
}
#menu:checked ~ .sidebar li a{
padding-left: 1rem;
}
#menu:checked ~ .sidebar .sidebar-brand,
#menu:checked ~ .sidebar li{
padding-left: 2rem;
text-align: left;
}
#menu:checked ~ .sidebar .sidebar-brand, h2 span:last-child,
#menu:checked ~ .sidebar li a span:last-child{
display: inline;
}
#menu:checked ~ .content{
margin-left: 0rem !important;
}
}
@media only screen and (max-width: 560px){
.cards{
grid-template-columns: 100%;
}
}
@media only screen and (max-width: 1200px){
.sidebar{
width: 60px;
}
.sidebar .sidebar-brand, h2 span:last-child,
.sidebar li a span:last-child{
display: none;
}
.content{
margin-left: 60px;
}
.content header{
width: calc(100% - 60px);
left: 60px;
}
}
Salut les amis, aujourd’hui, dans ce blog, vous apprendrez à créer des icones des réseaux sociaux en HTML et CSS puis de créer des animations avec la propriété hover, rotation …
Vous pouvez aussi regarder la vidéo complète disponible sur ma chaine YouTube :
Tout d’abord, créez une page qui aura pour extension .html puis copiez le code et collez le :
animate icon css
Maintenant nous allons créer notre fichier CSS qui nous permettra de faire les animations avec differentes propiete CSS.
copiez le code et collez le dans le fichier CSS que vous allez créer et n’oubliez pas aussi de le linker avec le fichier HTML si non ça ne marchera pas.
*{
padding: 0;
margin: 0;
text-decoration: none;
list-style: none;
user-select: none;
}
body{
background-color: lightgray;
margin: 10%;
margin-left: 35%;
}
.icons{
position: relative;
right: 1em;
}
.icons ul li{
position: relative;
display: inline-block;
font-size: 35px;
margin: 0 12px;
}
.icons ul li .fa{
padding: 10px;
color: #fff;
background: #0f056b;
border-radius: 50%;
transition: .3s;
}
.icons ul li .fa:hover{
transform: scale(1.2) rotate(360deg);
color: orange;
background: transparent;
}
Bonjour les amies aujourd’hui nous allons voir comment valider un formulaire html en javascript. alors ce post est destiné aux débutants ainsi qu’aux intermédiaires.
En effet lors de la saisie dans un formulaire, vous avez toujours besoin de contrôler les champs de saisie pour que l’utilisateur ne met pas de mauvaises données. c’est ainsi que vous devez mettre en place des règles de sécurité pour empêcher les malveillants à compromettre votre application ou votre site internet.
Dans ce cas vous aurez besoin de contrôler est ce que les données saisies par l’utilisateur sont bonne, est ce que l’utilisateur a rempli tous les champs ? ensuite les données seront envoyées au serveur qui va faire le traitement. ce qui permet au server de ne pas avoir à travailler trop et d’augmenter les performances de l’application.
C’est pour cela que nous avons pensé qu’il serait utile de faire un post sur la validation de formulaire en Javascript. vous pouvez suivre la video entiere disponible sur ma chaine Youtube :
Comme vous le voyez au niveau de l’image sur la vidéo, tant que les champs ne sont pas valide le formulaire envoie une erreur. et c’est tout à fait normal.
Pour créer ce magnifique formulaire et de procéder à la validation, vous aurez besoin de créer trois fichiers. Un fichier de type HTML pour mettre le code html, un fichier de type CSS pour mettre du style au niveau du formulaire et un fichier Javascript qui va nous permettre de contrôler le formulaire.
Premièrement Créez un fichier avec le nom index.html , copiez et collez les codes donnés dans votre fichier html. N’oubliez pas que vous devez créer un fichier avec une extension .html
form validation
Ensuite Créez un fichier avec le nom style.css , copiez et collez les codes donnés dans votre fichier CSS. N’oubliez pas que vous devez créer un fichier avec une extension .css
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@500&display=swap');
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: sans-serif;
font-family: 'Poppins';
background: #9ba0f6;
}
.container {
display: flex;
flex-direction: row;
}
form {
display: flex;
flex-direction: column;
justify-content: center;
width: 45%;
margin: 0 auto;
box-shadow: 0 .5rem 1.5rem rgba(0, 0, 0, 0.1);
padding: 50px;
background-color: #fff;
margin-top: 2rem;
border-radius: 10px;
}
.title {
font-size: 25px;
font-weight: bold;
margin-bottom: 20px;
}
form div input {
width: 100%;
height: 8vh;
border-radius: 8px;
outline: none;
border: 2px solid #c4c4c4;
padding: 0 30px;
box-shadow: 0 .5rem 1.5rem rgba(0, 0, 0, 0.1);
}
label {
display: block;
margin-bottom: 5px;
}
form div {
position: relative;
margin-bottom: 15px;
}
input:focus {
border: 2px solid #f2796e;
}
.question {
font-size: 15px;
}
span {
color: #f2796e;
cursor: pointer;
}
form div i {
position: absolute;
padding: 13px;
}
.success-icon,
.failure-icon {
right: 0;
opacity: 0;
}
.failure-icon,
.error {
color: red;
}
.success-icon {
color: green;
}
.error {
font-size: 14.5px;
margin-top: 5px;
}
button {
margin-top: 15px;
width: 100%;
height: 45px;
background-color: #9ba0f6;
border: none;
border-radius: 8px;
color: #fff;
font-size: 20px;
cursor: pointer;
transition: all 0.1s ease;
}
button:hover {
opacity: 0.8;
}
/**
* ! Media Queries are here
**/
@media (max-width: 900px) {
.container {
flex-direction: column;
margin: 2rem;
}
form,
.content {
width: 100%;
}
}
@media (max-width: 425px) {
form {
padding: 20px;
}
}
En fin Créez un fichier avec le nom form.js , copiez et collez les codes donnés dans votre fichier javascript. N’oubliez pas que vous devez créer un fichier avec une extension .js
Nb: assurez vous que ce fichier est linké avec le fichier HTML. et si vous remarquez bien le code HTML, j’ai déjà lié les deux fichiers. Attention au nom des fichiers.
let id = (id) => document.getElementById(id);
let formClass = (formClass) => document.getElementsByClassName(formClass);
let username = id("username"),
email = id("email"),
password = id("password"),
form = id("form"),
errorMsg = formClass("error"),
successIcon = formClass("success-icon"),
failureIcon = formClass("failure-icon");
form.addEventListener("submit", (e) => {
e.preventDefault();
invalForm(username, 0, "le champ ne doit pas etre vide");
invalForm(email, 1, "le champ ne doit pas etre vide");
invalForm(password, 2, "le champ ne doit pas etre vide");
});
let invalForm = (id, serial, message) => {
if (id.value.trim() === "") {
errorMsg[serial].innerHTML = message;
id.style.border = "2px solid red";
// icons
failureIcon[serial].style.opacity = "1";
successIcon[serial].style.opacity = "0";
} else {
errorMsg[serial].innerHTML = "";
id.style.border = "2px solid green";
// icons
failureIcon[serial].style.opacity = "0";
successIcon[serial].style.opacity = "1";
}
};