


Disposition en grille dynamique avec propriétés personnalisées et éléments redimensionnables (@properties)
Dec 26, 2024 pm 02:33 PMInformations 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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

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?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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.

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

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.

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

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.

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

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.

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