


Parlons de la fonction d'attribut CSS attr() que vous ne comprenez peut-être pas
Cet article vous présentera la fonction d'attribut CSS attr(). 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 sera utile à tout le monde.
La fonction d'attribut attr() est utilisée pour obtenir des valeurs d'attribut dans les éléments HTML et les utiliser dans les styles, mais actuellement elle ne peut être appliquée qu'aux pseudo-éléments dans les éléments CSS.
Exemple
Mise en œuvre d'une info-bulle
nbsp;html> <meta> <meta> <title>css attr函数</title> <style> .tooltip { width: 100px; position: relative; margin: 0 auto; } .tooltip:hover::after { padding: 5px; position: absolute; /* 在伪元素中作为字符串中使用 */ content: attr(data-tooltip); color: #fff; background-color: #000; border-radius: 10px; top: 25px; left: 0; } /* 箭头 */ .tooltip:hover .arrow::after { content: ""; position: absolute; bottom: -5px; left: 20%; margin-left: -5px; border-width: 5px; border-style: solid; border-color: transparent transparent black transparent; } </style> <div> Hover me <span></span> </div>
Propriétés expérimentales dans la syntaxe (actuellement non prises en charge par tous les navigateurs)
Prend en charge différents types de propriétés CSS dans la nouvelle syntaxe Pour une prise en charge spécifique, veuillez consulter le document MDN #Spécifications "Document MDN". ), par exemple, si vous devez définir une marge supérieure, vous devez généralement trouver le nom de la classe, puis le définir. Pour éviter quelques problèmes, vous pouvez vous concentrer sur l'écriture du nom de la classe CSS, puis l'introduire globalement et. puis appelez-le. Cette méthode d'écriture est dans une certaine mesure plus pratique, mais elle n'est pas assez personnalisée. Si je veux définir la marge supérieure à 15 pixels, je dois ajouter un nouveau nom de classe, ce qui est toujours très gênant.
<div></div> //style .mt10{ margin-top: 10px; }
Mais si l'attribut expérimental le prend en charge, il peut être écrit comme ceci.
<div></div> //style [mt] { margin-top: attr(mt,0); }
Cette méthode d'écriture est très similaire au développement de composants. Il n'est pas nécessaire de spécifier une valeur px d'une taille spécifique. Vous pouvez directement spécifier une valeur px de n'importe quelle taille sur l'élément HTML. basé sur CSS et n'implique pas JS, il sera donc plus léger. Cependant, il est dommage que tous les navigateurs ne le supportent pas actuellement, et on estime qu'il ne le sera pas avant longtemps. Voici un aperçu pour donner une idée de développement de composants. Heureusement, au cours du processus de recherche d'informations, j'ai découvert que Zhang Xinxu avait déjà exploré cette possibilité et avait ensuite créé Polyfill pour cette fonctionnalité.
Principe de l'attribut expérimental Polyfill attr()
Utilisez les attributs personnalisés CSS pour transmettre la valeur d'attribut de attr
.test-attr { --mbNum: attr(mb px); margin-bottom: var(--mbNum); --mlNum: attr(ml px); margin-left: var(--mlNum); }
Récupérez ensuite tous les noms d'attributs personnalisés qui contiennent l'attr() function
// 获取页面中所有的CSS自定义属性 var isSameDomain = function (styleSheet) { if (!styleSheet.href) { return true; } return styleSheet.href.indexOf(window.location.origin) === 0; }; var isStyleRule = function (rule) { return rule.type === 1; }; var arrCSSCustomProps = (function () { return [].slice.call(document.styleSheets).filter(isSameDomain).reduce(function (finalArr, sheet) { return finalArr.concat([].slice.call(sheet.cssRules).filter(isStyleRule).reduce(function (propValArr, rule) { var props = [].slice.call(rule.style).map(function (propName) { return [ propName.trim(), rule.style.getPropertyValue(propName).trim() ]; }).filter(function ([propName]) { return propName.indexOf('--') === 0; }); return [].concat(propValArr, props); }, [])); }, []); })();
Imprimez arrCSSCustomProps et get
La dernière étape consiste à parcourir le Dom Si l'attribut personnalisé correspondant est défini, il définira la valeur de l'attribut via attr et la convertira en une valeur d'attribut personnalisée qui peut être analysée par css
// attr()语法转换成目前CSS变量可识别的语法 var funAttrVar2NormalVar = function (objParseAttr, valueAttr) { // attr()语法 attr( <attr-name> <type-or-unit>? [, <attr-fallback> ]? ) // valueVar示意:attr(bgcolor color, deeppink) // valueAttr示意: 'deepskyblue'或者null var attrName = objParseAttr.attrName; var typeOrUnit = objParseAttr.typeOrUnit; // typeOrUnit值包括: // string | color | url | integer | number | length | angle | time | frequency | cap | ch | em | ex | ic | lh | rlh | rem | vb | vi | vw | vh | vmin | vmax | mm | Q | cm | in | pt | pc | px | deg | grad | rad | turn | ms | s | Hz | kHz | % var arrUnits = ['ch', 'em', 'ex', 'ic', 'lh', 'rlh', 'rem', 'vb', 'vi', 'vw', 'vh', 'vmin', 'vmax', 'mm', 'cm', 'in', 'pt', 'pc', 'px', 'deg', 'grad', 'rad', 'turn', 'ms', 's', 'Hz', 'kHz', '%']; var valueVarNormal = valueAttr; // 如果是string类型 switch (typeOrUnit) { case 'string': { valueVarNormal = '"' + valueAttr + '"'; break; } case 'url': { if (/^url\(/i.test(valueAttr) == false) { valueVarNormal = 'url(' + valueAttr + ')'; } break; } } // 数值变单位的处理 if (arrUnits.includes(typeOrUnit) && valueAttr.indexOf(typeOrUnit) == -1 && parseFloat(valueAttr) == valueAttr) { valueVarNormal = parseFloat(valueAttr) + typeOrUnit; } return valueVarNormal; }; var valueVarNormal = funAttrVar2NormalVar(objParseAttr, strHtmlAttr); console.log(valueVarNormal); //100px // 设置 node.style.setProperty(cssProp, valueVarNormal); // margin-bottom : 100px</attr-fallback></type-or-unit></attr-name>
objParseAttr est l'objet analysé par attr (mb px), et valueAttr est la valeur du. attribut personnalisé, qui est 100 dans l'exemple
Rendu
Enfin
attr() plus la fonction d'expérimentation de compatibilité est très puissante et très flexible. Plus tard, je prévois d'intégrer certains attributs couramment utilisés qui nécessitent cette méthode d'écriture et de les encapsuler dans des packages npm pour faciliter le développement de. applications quotidiennes. Pour le code correspondant de cet article, visitez : https://github.com/Kerinlin/CSS-Function/tree/main/%E5%B1%9E%E6%80%A7%E5%87%BD%E6%95 %B0
Pour plus de connaissances liées à la programmation, veuillez visiter : Enseignement de la programmation ! !
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

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.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

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)

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.

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? Introduisez Bootstrap CSS pour créer des éléments de bouton et ajoutez la classe de bouton bootstrap pour ajouter du texte du bouton

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.

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-

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.

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é.

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.
