国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison interface Web tutoriel CSS Disposition en grille dynamique avec propriétés personnalisées et éléments redimensionnables (@properties)

Disposition en grille dynamique avec propriétés personnalisées et éléments redimensionnables (@properties)

Dec 26, 2024 pm 02:33 PM

Dynamic Grid-Layout with Custom Properties and Resizable Elements (@properties)

Informations copiées du CodePen?:

Grille utilisant des propriétés personnalisées pour les colonnes et les lignes. Il permet également de faire glisser pour redimensionner, à l'aide d'une simple poignée de déplacement. Le redimensionnement est aligné sur les étendues de la grille.

Statut de base de prise en charge du navigateur ajouté pour plus de transparence.


Voici la version révisée de la publication DEV.to avec des blocs de code ajoutés pour les parties clés?:


Grille avec propriétés personnalisées et éléments redimensionnables

Bonjour, communauté DEV?! ?

J'ai récemment expérimenté les grilles CSS et je souhaite partager un projet amusant?: Grille avec propriétés personnalisées et éléments redimensionnables. Ce stylo a commencé comme une tentative de créer une grille de style Bento, mais a évolué vers quelque chose de plus dynamique, avec des dimensions de grille personnalisables et des éléments redimensionnables dépla?ables. Bien qu'il y ait de la place pour grandir (le glisser pour réorganiser est le prochain sur ma liste !), je suis enthousiasmé par ce qui est déjà possible avec cette configuration.

Décomposons-le?! ?


?? Comment ?a marche

@propriété

J'ai utilisé la règle at @property pour définir des propriétés personnalisées, qui ajoutent la sécurité des types et contr?lent l'héritage. Voici un exemple du projet?:

@property --grid-cols {
  syntax: "<integer>";
  inherits: false;
  initial-value: 12;
}

@property --grid-rows {
  syntax: "<integer>";
  inherits: false;
  initial-value: 12;
}

@property --col-span {
  syntax: "<integer>";
  inherits: false;
  initial-value: 2;
}

@property --row-span {
  syntax: "<integer>";
  inherits: false;
  initial-value: 2;
}

Ces propriétés permettent d'ajuster dynamiquement la disposition de la grille avec un minimum d'effort, que ce soit via CSS ou JavaScript. Par exemple, vous pouvez définir la structure de la grille avec?:

.grid {
  display: grid;
  grid-template-columns: repeat(var(--grid-cols), 1fr);
  grid-template-rows: repeat(var(--grid-rows), 1fr);
  gap: var(--grid-gap);
}

Faites glisser pour redimensionner

Chaque élément de la grille possède une poignée de coin dépla?able qui permet aux utilisateurs de redimensionner l'élément tout en l'alignant sur la grille. La poignée de déplacement est con?ue comme ceci?:

.grid-element .drag-handle {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 20px;
  height: 20px;
  background: skyblue;
  border-radius: 50%;
  cursor: nwse-resize;
}

La logique de redimensionnement est implémentée en JavaScript, en alignant la taille de l'élément sur les étendues de la grille. Voici un extrait simplifié du fonctionnement du redimensionnement?:

dragHandle.addEventListener('mousedown', (event) => {
  const startX = event.clientX;
  const startY = event.clientY;

  document.addEventListener('mousemove', onMouseMove);
  document.addEventListener('mouseup', onMouseUp);

  function onMouseMove(e) {
    const deltaX = e.clientX - startX;
    const deltaY = e.clientY - startY;

    // Calculate new spans based on the grid dimensions
    const colSpan = Math.max(1, Math.round(deltaX / gridCellWidth));
    const rowSpan = Math.max(1, Math.round(deltaY / gridCellHeight));

    gridElement.style.gridColumnEnd = `span ${colSpan}`;
    gridElement.style.gridRowEnd = `span ${rowSpan}`;
  }

  function onMouseUp() {
    document.removeEventListener('mousemove', onMouseMove);
    document.removeEventListener('mouseup', onMouseUp);
  }
});

col-span et row-span

Les propriétés personnalisées --col-span et --row-span contr?lent la taille par défaut de chaque élément de la grille. Voici comment ils sont appliqués?:

.grid-element {
  grid-column: span var(--col-span);
  grid-row: span var(--row-span);
}

Cette approche simplifie le style et facilite l'ajout ou le redimensionnement dynamique d'éléments par programmation.


Testez-le vous-même?!


? Conclusion

Ce projet met en valeur la puissance du CSS moderne combiné à du JavaScript léger pour créer des mises en page interactives et dynamiques. En utilisant @property et les fonctionnalités de grille CSS, nous avons créé les bases d'un système de grille personnalisable et redimensionnable.

Les projets futurs incluent l'ajout d'une fonctionnalité de glisser-réorganiser afin que les utilisateurs puissent réorganiser les éléments, rendant la grille encore plus interactive.

Par souci de transparence, j'ai inclus des éléments d'état de base pour montrer la prise en charge du navigateur pour les fonctionnalités expérimentales utilisées.


? Ressources

Voici quelques liens utiles pour en savoir plus sur les fonctionnalités CSS utilisées dans ce projet?:

  • MDN?: @propriété
  • MDN?: disposition de la grille CSS
  • MDN?: Couches en cascade
  • MDN?:?Styles de départ
  • MDN : Relative Colors : Simplifiez les ajustements de couleurs directement dans CSS.
  • MDN?: Propriétés logiques?: écrivez du CSS indépendant de la direction pour une prise en charge multilingue.
  • MDN?: Requêtes de conteneur?: adaptez les mises en page en fonction de la taille d'un conteneur plut?t que de la fenêtre d'affichage.
  • MDN?: currentColor Mot-clé?: utilisez la couleur actuelle du texte dans d'autres propriétés CSS telles que les bordures ou les arrière-plans.
  • MDN?: -web-kit-Line Clamp?: Contr?lez le nombre maximum de lignes affichées dans un élément de bloc.
  • MDN?: Transition Behaviour - Allow-Discrete?:?Définissez comment les valeurs discrètes changent pendant les transitions.

J'aimerais entendre vos commentaires ou vos idées d'améliorations supplémentaires?! Faites-moi savoir ce que vous pensez dans les commentaires, ou n'hésitez pas à créer le stylo et à vous l'approprier. ?

Bon codage?! ??

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

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)

Qu'est-ce que le ?rendu CSS bloquant le rendu?? Qu'est-ce que le ?rendu CSS bloquant le rendu?? Jun 24, 2025 am 12:42 AM

CSS bloque le rendu de la page car les navigateurs affichent le CSS en ligne et le CSS externe comme des ressources clés par défaut, en particulier avec les feuilles de styles importées, les grandes quantités de CSS en ligne et les styles de requête multimédia non optimisés. 1. Extraire CSS critique et l'intégrez-la dans HTML; 2. Retard Chargement CSS non critique via JavaScript; 3. Utilisez des attributs multimédias pour optimiser le chargement tel que les styles d'impression; 4. Comprimer et fusionner CSS pour réduire les demandes. Il est recommandé d'utiliser des outils pour extraire les CS de clé, combiner le chargement asynchrone rel = "précharge" et utiliser le chargement retardé des médias raisonnablement pour éviter une division excessive et un contr?le de script complexe.

CSS externe vs interne: quelle est la meilleure approche? CSS externe vs interne: quelle est la meilleure approche? Jun 20, 2025 am 12:45 AM

TheBestApproachForCSSDependSonTheproject'sspecificneeds.ForLargerProjects, externalcsisBetterDueTomaintainiabilityAndReUsability; ForsmallerProjectsorSingle-pageApplications, internecssigh

Mon CSS doit-il être en minuscules? Mon CSS doit-il être en minuscules? Jun 19, 2025 am 12:29 AM

NON, CSSDOOSNOTHAVETOBEINLOWLOWERCASE.CI, USING USINGERCASERASERISROMEND pour: 1) Cohérence et réadaptation, 2) évitant les technologies de perception liées à la pertinence, 3) Potentiel PerformanceBenefits, and4) Amélioration de la collaboration.

CSS Sensibilité aux cas: comprendre ce qui compte CSS Sensibilité aux cas: comprendre ce qui compte Jun 20, 2025 am 12:09 AM

CSSismostlyCase-insensible, buturlsandfontfamilyNamesaSaSase-sensible.1) Propriéties andvaluesLikEcolor: Red; arenotcase-sensible.2) UrlSMustMatchTheServer'scase, par exemple, / images / Logo.png.3) FontFamilyNamesliNe'apensans's'mUstBeexact.

Qu'est-ce que l'autoprefixer et comment ?a marche? Qu'est-ce que l'autoprefixer et comment ?a marche? Jul 02, 2025 am 01:15 AM

AutoPrefixer est un outil qui ajoute automatiquement les préfixes des fournisseurs aux attributs CSS en fonction de la portée du navigateur cible. 1. Il résout le problème de maintenir manuellement les préfixes avec des erreurs; 2. Travaillez le formulaire de plug-in PostCSS, analyse CSS, analysez les attributs qui doivent être préfixés et générer du code en fonction de la configuration; 3. Les étapes d'utilisation incluent l'installation de plug-ins, la définition de la liste de navigateurs et leur permettant dans le processus de construction; 4. Les notes ne comprennent pas manuellement les préfixes, le maintien des mises à jour de la configuration, les préfixes pas tous des attributs, et il est recommandé de les utiliser avec le préprocesseur.

Que sont les compteurs CSS? Que sont les compteurs CSS? Jun 19, 2025 am 12:34 AM

CSSCOUNTERSCANAUTOMAMATIQUE UNEUXESECTIONS ET LISTS.1) USECOUNTER-RESEDTOINITINALIALIALISE, COMPTENDREMENTTOINCREAD, andCounter () Orcounters () toDisplayValues.2) combinewithjavascriptfordynamiccontentoenSureAcurateupdates.

CSS: Quand l'affaire est importante (et quand ne pas)? CSS: Quand l'affaire est importante (et quand ne pas)? Jun 19, 2025 am 12:27 AM

Dans CSS, les noms de sélecteur et d'attribut sont sensibles à la casse, tandis que les valeurs, les couleurs nommées, les URL et les attributs personnalisés sont sensibles à la casse. 1. Les noms de sélecteur et d'attribut sont insensibles à la casse, tels que la couleur arrière et la couleur arrière-plan sont les mêmes. 2. La couleur hexadécimale de la valeur est sensible à la casse, mais la couleur nommée est sensible à la casse, comme le rouge et le rouge n'est pas valide. 3. Les URL sont sensibles à la casse et peuvent causer des problèmes de chargement de fichiers. 4. Les propriétés personnalisées (variables) sont sensibles à la caisse, et vous devez faire attention à la cohérence du cas lorsque vous les utilisez.

Quelle est la fonction conique-gradient ()? Quelle est la fonction conique-gradient ()? Jul 01, 2025 am 01:16 AM

THECONCON-GRADIENT () FURMATINGEnSSSCREATSCICLULARD GRODIENTSTHATATATECOLORSTOPSAROUNDacentralpoint.1.IiSIDEALFORPIECHARTS, PROGRESSINDICATEURS, Colorweels, andDecorativeBackgrounds.2.itworksByDefiningColOrStopSatSpiecificangles, FactuallylyTartingfromadefinin

See all articles