Maison > interface Web > tutoriel CSS > Comment utiliser CSS pour implémenter une page qui surveille l'état de la connexion réseau

Comment utiliser CSS pour implémenter une page qui surveille l'état de la connexion réseau

不言
Libérer: 2018-08-25 17:54:47
original
2693 Les gens l'ont consulté

Cet article vous propose une page sur la façon d'utiliser CSS pour surveiller l'état de la connexion réseau. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Aperçu de l'effet

Comment utiliser CSS pour implémenter une page qui surveille létat de la connexion réseau

Téléchargement du code source

https://github.com/comehope/front- end-daily-challenges

Interprétation du code

l'attribut navigateur.onLine est utilisé pour obtenir le statut en ligne, puis avec le déclencheur d'événement correspondant, vous pouvez développer un outil de détection en ligne. L'ensemble du processus est divisé en deux parties : dessiner d'abord l'effet visuel, puis détecter l'état en ligne/hors ligne.

Définir dom, le conteneur contient client, signal et serveur :

<div class="detector">
    <div class="client"></div>
    <div class="signal"></div>
    <div class="server"></div>
</div>
Copier après la connexion

Affichage centré :

body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
}
Copier après la connexion

Ajouter une barre horizontale en haut pour l'affichage Si le l'état actuel est en ligne ou hors ligne, le vert indique en ligne :

:root {
    --status-color: green;
}

body {
    background: linear-gradient(var(--status-color) 5vh, #ccc 5vh);
}
Copier après la connexion

Définir la taille du conteneur :

.detector {
    width: 40em;
    height: 14em;
    font-size: 10px;
}
Copier après la connexion

Définir la disposition générale et la disposition principale des sous-éléments (client, signal, serveur) Couleur :

.detector {
    display: flex;
    justify-content: space-between;
    align-items: center;
    color: #333;
}
Copier après la connexion

Définir les attributs communs des sous-éléments (client, signal, serveur) et leurs pseudo-éléments :

.detector > * {
    position: relative;
    box-sizing: border-box;
}

.detector > *::before,
.detector > *::after {
    content: &#39;&#39;;
    position: absolute;
    box-sizing: border-box;
}
Copier après la connexion

Dessiner l'affichage du client :

.client {
    width: 17em;
    height: 10em;
    border: 0.5em solid;
    border-radius: 0.5em;
}
Copier après la connexion

Utilisez des pseudo éléments pour dessiner la base du moniteur :

.client {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-top: -4em;
}

.client::before {
    width: 1.5em;
    height: 3em;
    background-color: currentColor;
    top: 9.5em;
}

.client::after {
    width: 5em;
    height: 1em;
    background-color: currentColor;
    border-radius: 0.3em;
    top: 12.5em;
}
Copier après la connexion

Dessinez le châssis du serveur :

.server {
    width: 7em;
    height: 14em;
    border: 0.5em solid;
    border-radius: 0.5em;
}
Copier après la connexion

Utilisez des pseudo éléments pour dessiner le disque dur, faites attention à l'ombre ici Utilisation, utilisez l'ombre pour dessiner le deuxième disque dur :

.server::before {
    width: 5em;
    height: 1em;
    background-color: currentColor;
    border-radius: 0.2em;
    top: 8em;
    left: 0.5em;
    box-shadow: 0 1.5em 0;
}
Copier après la connexion

Utilisez des pseudo-éléments pour dessiner le bouton, le même usage que l'ombre ci-dessus, cette fois utilisez l'ombre pour dessiner le deuxième bouton :

.server::after {
    width: 0.6em;
    height: 0.6em;
    background-color: currentColor;
    border-radius: 50%;
    right: 1.5em;
    bottom: 0.5em;
    box-shadow: 1em 0 0 0.1em;
}
Copier après la connexion

Dessinez le signal. Notez que la palette de couleurs utilise la couleur représentant en ligne/hors ligne, qui est actuellement verte :

.signal,
.signal::before,
.signal::after {
    width: 1em;
    height: 1em;
    background-color: var(--status-color);
    border-radius: 50%;
}

.signal::before {
    right: 2.5em;
}

.signal::after {
    left: 2.5em;
}
Copier après la connexion

Ajoutez des effets d'animation au signal :

.signal,
.signal::before,
.signal::after {
    animation: blink 0.6s infinite;
}

@keyframes blink {
    50% {
        filter: opacity(0.1);
    }
}
Copier après la connexion

Définissez le délai d'animation pour le deuxième signal et le troisième signal. La valeur du retard est définie avec des variables :

:root {
    --second-signal-delay: 0.2s;
    --third-signal-delay: 0.4s;
}

.signal::before {
    animation-delay: var(--second-signal-delay);
}

.signal::after {
    animation-delay: var(--third-signal-delay);
}
Copier après la connexion

À ce stade, l'effet visuel est terminé. Il s'agit actuellement d'un effet en ligne. Dans :root Un total de 3 variables sont définies dans , la barre horizontale supérieure et le signal sont verts, et les voyants clignotent en séquence pour indiquer que les données sont en cours de transmission :

:root {
    --status-color: green;
    --second-signal-delay: 0.2s;
    --third-signal-delay: 0.4s;
}
Copier après la connexion

En modifiant les valeurs​​de ces 3 variables, vous pouvez obtenir l'effet visuel de l'état hors ligne. La barre horizontale supérieure et le signal deviennent rouges, et les voyants clignotent ensemble pour indiquer que la ligne est indisponible :

:root {
    --status-color: orangered;
    --second-signal-delay: 0s;
    --third-signal-delay: 0s;
}
Copier après la connexion

Ensuite, en détectant le statut en ligne/hors ligne, ces deux effets sont appliqués dynamiquement.

Définissez le thème du statut en ligne :

const ONLINE_THEME = {
    statusColor: &#39;green&#39;,
    secondSignalDelay: &#39;0.2s&#39;,
    thirdSignalDelay: &#39;0.4s&#39;
}
Copier après la connexion

De même, définissez le thème du statut hors ligne :

const OFFLINE_THEME = {
    statusColor: &#39;orangered&#39;,
    secondSignalDelay: &#39;0s&#39;,
    thirdSignalDelay: &#39;0s&#39;
}
Copier après la connexion

Créez une fonction pour afficher différemment en fonction du statut en ligne/hors ligne Thème :

function detectOnlineStatus() {
    let theme = navigator.onLine ? ONLINE_THEME : OFFLINE_THEME
    let root = document.documentElement
    root.style.setProperty(&#39;--status-color&#39;, theme.statusColor)
    root.style.setProperty(&#39;--second-signal-delay&#39;, theme.secondSignalDelay)
    root.style.setProperty(&#39;--third-signal-delay&#39;, theme.thirdSignalDelay)
}

detectOnlineStatus()
Copier après la connexion

Maintenant, éteignez la connexion wifi, puis rafraîchissez la page, la page adoptera un thème rouge ; rallumez la connexion wifi, puis rafraîchissez la page, la page adoptera un thème vert ; thème.

Ensuite, liez la fonction de détection à l'événement système. Lorsque la connexion est déconnectée ou reconnectée, la page définira automatiquement le thème. Il n'est pas nécessaire d'actualiser la page manuellement :

window.addEventListener(&#39;online&#39;, detectOnlineStatus)
window.addEventListener(&#39;offline&#39;, detectOnlineStatus)
Copier après la connexion
<.>Vous avez terminé !

Recommandations associées :

Comment utiliser du CSS pur pour implémenter l'effet d'animation de chargement d'une voiture de course (avec code)

Comment utiliser du CSS pur pour implémenter un effet arc-en-ciel de texte rayé (avec code)


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal