Table des matières
Aperçu de l'effet
Téléchargement du code source
Interprétation du code
Maison interface Web tutoriel CSS Comment utiliser CSS et Vanilla.js pour implémenter des animations interactives montrant les appareils Apple (code source ci-joint)

Comment utiliser CSS et Vanilla.js pour implémenter des animations interactives montrant les appareils Apple (code source ci-joint)

Oct 22, 2018 pm 01:43 PM
css css3 html5 javascript 前端

Le contenu de cet article explique comment utiliser CSS et Vanilla.js pour implémenter des animations interactives pour afficher les appareils Apple (code source ci-joint). Les amis dans le besoin peuvent s'y référer. ça aide.

Aperçu de l'effet

Comment utiliser CSS et Vanilla.js pour implémenter des animations interactives montrant les appareils Apple (code source ci-joint)

Téléchargement du code source

https://github.com/comehope/front-end-daily -défis

Interprétation du code

Définir dom, comprenant 5 sous-éléments, représentant les cinq appareils iphone, mini, ipad, macbook, imac :

<div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</div>
Copier après la connexion

centré Affichage :

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

Définissez la disposition des éléments enfants dans le conteneur :

.container {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
}
Copier après la connexion

Définissez les propriétés communes de l'appareil, et le motif de dégradé linéaire sera utilisé comme arrière-plan de l'écran :

.device {
    box-sizing: border-box;
    position: relative;
    display: flex;
    justify-content: center;
    background: linear-gradient(120deg, #ddd 30%, #ccc 30%);
}

.device::before,
.device::after {
    content: '';
    position: absolute;
}
Copier après la connexion

iphone, mini et ipad ont des formes similaires. Ils ont tous des caméras supérieures, des ouvertures de capteur et des boutons inférieurs, ces attributs communs peuvent donc être définis ensemble. Utilisez le pseudo ::before. pour dessiner les détails du haut et le pseudo-élément ::after pour dessiner le bas Boutons :

.iphone::before,
.mini::before,
.ipad::before {
    width: 2px;
    height: 2px;
    border-style: solid;
    border-color: #a5adbe;
    border-width: 0 12px 0 2px;
}

.iphone::after,
.mini::after,
.ipad::after {
    width: 8px;
    height: 8px;
    background-color: white;
    border-radius: 50%;
}
Copier après la connexion

Dessinez ensuite les appareils un par un. Dessinez d'abord le contour de l'iPhone :

.iphone {
    width: 59px;
    height: 124px;
    border: #484f5e solid;
    border-width: 18px 4px;
    border-radius: 6px;
}
Copier après la connexion

Positionnez les détails du haut et du bas de l'iPhone :

.iphone::before {
    top: -10px;
}

.iphone::after {
    bottom: -13px;
}
Copier après la connexion

De même, dessinez le mini :

.mini {
    width: 93px;
    height: 138px;
    border: #484f5e solid;
    border-width: 14px 5px;
    border-radius: 10px;
}

.mini::before {
    top: -8px;
}

.mini::after {
    bottom: -11px;
}
Copier après la connexion

Ensuite, dessinez l'iPad :

.ipad {
    width: 134px;
    height: 176px;
    border: #484f5e solid;
    border-width: 18px 13px;
    border-radius: 12px;
}

.ipad::before {
    top: -10px;
}

.ipad::after {
    bottom: -13px;
}
Copier après la connexion

Dessinez ensuite le macbook, dessinez d'abord l'écran :

.macbook {
    width: 234px;
    height: 155px;
    border: 8px solid #484f5e;
    border-radius: 7px 7px 0 0;
}
Copier après la connexion

Utilisez le pseudo-élément ::before pour dessiner l'appareil photo :

.macbook::before {
    width: 294px;
    height: 14px;
    background-color: #e8ebf0;
    top: calc(100% + 8px);
    border-radius: 0 0 14px 14px;
}
Copier après la connexion

Utilisez le pseudo-élément ::after pour dessiner l'hôte :

.macbook::after {
    width: 3px;
    height: 3px;
    background-color: #a5adbe;
    top: -6px;
    border-radius: 50%;
}
Copier après la connexion

Ensuite, dessinez l'imac et dessinez d'abord l'écran. Les bordures noires à gauche, en haut et à droite. de l'écran ne sont pas dessinés avec l'attribut border car la bordure sera au point final. Il reste un biseau, utilisez donc box-shadow à la place :

.imac {
    width: 360px;
    height: 215px;
    border-radius: 10px;
    box-shadow: 
        inset 0 14px #484f5e,
        inset 14px 0 #484f5e,
        inset -14px 0 #484f5e;
    border-bottom: 33px solid #e8ebf1;
    transform: translateY(14px);
}
Copier après la connexion

Utilisez le pseudo-élément ::before pour. dessinez la base du trapèze :

.imac::before {
    width: 90px;
    height: 0;
    top: calc(100% + 33px);
    border: solid transparent;
    border-bottom-color: #e2e4e8;
    border-width: 0 10px 47px 10px;
}
Copier après la connexion

Utilisez le pseudo-élément ::after Dessinez la caméra en haut et les boutons en bas de l'écran. Notez que les boutons sont implémentés avec box-shadow. :

.imac::after {
    width: 4px;
    height: 4px;
    background-color: #a5adbe;
    top: 5px;
    border-radius: 50%;
    box-shadow: 0 191px 0 4px #464e5d;
}
Copier après la connexion

À ce stade, l'ensemble de l'appareil est dessiné.
Supprimez les éléments dom des autres appareils à l'exception de l'iPhone, en ne laissant qu'un seul élément dom. Tous les effets d'animation ultérieurs changeront sur cet élément dom :

<div>
        <div></div>
        <!-- <div class="device mini"></div>
        <div class="device ipad"></div>
        <div class="device macbook"></div>
        <div class="device imac"></div> -->
    </div>
Copier après la connexion

Définissez la taille du conteneur et les éléments enfants seront. Centrée verticalement, la hauteur de l'appareil représente 75% de la hauteur du conteneur :

.container {
    width: 360px;
    height: 350px;
    justify-content: center;
}

.device {
    transform: translateY(-25%);
}
Copier après la connexion

Ajoutez 2 éléments bouton dans le dom, représentés respectivement par .left et .right :

<div>
    <div></div>
    <div>
        <span></span>
        <span></span>
    </div>
</div>
Copier après la connexion

Positionner le bouton :

.buttons {
    position: absolute;
    width: inherit;
    font-size: 30px;
    height: 2em;
    bottom: 0;
    display: flex;
    justify-content: space-around;
}

.buttons > * {
    position: relative;
    width: 4em;
}
Copier après la connexion

Les boutons sont des flèches gauche et droite :

.buttons > *::before {
    position: absolute;
}

.buttons .left::before {
    content: '←';
    right: 0;
}

.buttons .right::before {
    content: '→';
}
Copier après la connexion

Définir le style du bouton sur un cercle :

.buttons > *t::before {
    position: absolute;
    width: 2em;
    height: 2em;
    background-color: #484f5e;
    color: silver;
    text-align: center;
    line-height: 2em;
    border-radius: 1em;
    cursor: pointer;
}
Copier après la connexion

Ajouter une souris survoler l'effet d'arrêt :

.buttons > *::before {
    transition: 0.2s;
}

.buttons .left:hover::before {
    width: 4em;
    content: '⟵';
}

.buttons .right:hover::before {
    width: 4em;
    content: '⟶';
}
Copier après la connexion

Ajouter un effet de clic sur le bouton :

.buttons > *:active {
    transform: scale(0.9);
    filter: brightness(0.8);
}
Copier après la connexion

À ce stade, le bouton est créé et le script d'interaction est ensuite créé.

Définir une fonction pour obtenir des éléments $ :

const $ = (className) => document.getElementsByClassName(className)[0]
Copier après la connexion

Définir un tableau pour stocker les noms d'appareils :

let devices = ['iphone', 'mini', 'ipad', 'macbook', 'imac']
Copier après la connexion

Définir la méthode de traitement des données du comportement des clics , lorsque vous cliquez sur le bouton gauche, l'élément le plus à gauche du tableau est déplacé vers l'extrême droite. Au contraire, lorsque vous cliquez sur le bouton droit, l'élément le plus à droite du tableau est déplacé vers l'extrême gauche, de sorte que 2 La direction fait une boucle. le tableau :

let loop = {
    'left': () => devices.unshift(devices.pop()),
    'right': () => devices.push(devices.shift())
}
Copier après la connexion

Définissez l'événement de clic et changez d'appareil en fonction des changements dans le tableau :

Array.from($('buttons').children).forEach(element =>
    element.addEventListener('click', function(e) {
        loop[e.target.className]()
        $('device').className = 'device ' + devices[0]
    })
)
Copier après la connexion

Enfin, définissez l'effet d'assouplissement du changement d'appareil :

.device,
.device::before,
.device::after {
    transition: 0.4s cubic-bezier(0.5, 1.7, 0.5, 1.2);
}
Copier après la connexion

Fait !

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment écrire des lignes fendues sur bootstrap Comment écrire des lignes fendues sur bootstrap Apr 07, 2025 pm 03:12 PM

Il existe deux façons de créer une ligne divisée bootstrap: en utilisant la balise, qui crée une ligne divisée horizontale. Utilisez la propriété CSS Border pour créer des lignes de fractionnement de style personnalisées.

Les rôles de HTML, CSS et JavaScript: responsabilités de base Les rôles de HTML, CSS et JavaScript: responsabilités de base Apr 08, 2025 pm 07:05 PM

HTML définit la structure Web, CSS est responsable du style et de la mise en page, et JavaScript donne une interaction dynamique. Les trois exercent leurs fonctions dans le développement Web et construisent conjointement un site Web coloré.

Comment utiliser Bootstrap en Vue Comment utiliser Bootstrap en Vue Apr 07, 2025 pm 11:33 PM

L'utilisation de bootstrap dans vue.js est divisée en cinq étapes: installer bootstrap. Importer un bootstrap dans main.js. Utilisez le composant bootstrap directement dans le modèle. Facultatif: style personnalisé. Facultatif: utilisez des plug-ins.

Comment insérer des photos sur bootstrap Comment insérer des photos sur bootstrap Apr 07, 2025 pm 03:30 PM

Il existe plusieurs façons d'insérer des images dans Bootstrap: insérer directement les images, en utilisant la balise HTML IMG. Avec le composant d'image bootstrap, vous pouvez fournir des images réactives et plus de styles. Définissez la taille de l'image, utilisez la classe IMG-FLUID pour rendre l'image adaptable. Réglez la bordure en utilisant la classe IMG-border. Réglez les coins arrondis et utilisez la classe Roundée IMG. Réglez l'ombre, utilisez la classe Shadow. Redimensionner et positionner l'image, en utilisant le style CSS. À l'aide de l'image d'arrière-plan, utilisez la propriété CSS d'image d'arrière-plan.

Comment redimensionner le bootstrap Comment redimensionner le bootstrap Apr 07, 2025 pm 03:18 PM

Pour ajuster la taille des éléments dans Bootstrap, vous pouvez utiliser la classe de dimension, qui comprend: ajuster la largeur: .col-, .w-, .mw-ajustement Hauteur: .h-, .min-h-, .max-h-

Comment configurer le cadre de bootstrap Comment configurer le cadre de bootstrap Apr 07, 2025 pm 03:27 PM

Pour configurer le framework Bootstrap, vous devez suivre ces étapes: 1. Référez le fichier bootstrap via CDN; 2. Téléchargez et hébergez le fichier sur votre propre serveur; 3. Incluez le fichier bootstrap dans HTML; 4. Compiler les sass / moins au besoin; 5. Importer un fichier personnalisé (facultatif). Une fois la configuration terminée, vous pouvez utiliser les systèmes, composants et styles de grille de Bootstrap pour créer des sites Web et des applications réactifs.

Comment utiliser le bouton bootstrap Comment utiliser le bouton bootstrap Apr 07, 2025 pm 03:09 PM

Comment utiliser le bouton bootstrap? Introduisez Bootstrap CSS pour créer des éléments de bouton et ajoutez la classe de bouton bootstrap pour ajouter du texte du bouton

Comment afficher la date de bootstrap Comment afficher la date de bootstrap Apr 07, 2025 pm 03:03 PM

Réponse: Vous pouvez utiliser le composant de sélecteur de date de bootstrap pour afficher les dates dans la page. Étapes: Présentez le framework bootstrap. Créez une boîte d'entrée de sélecteur de date dans HTML. Bootstrap ajoutera automatiquement des styles au sélecteur. Utilisez JavaScript pour obtenir la date sélectionnée.

See all articles