Ce que je recherche:
Une façon de coiffer une MOITIÉ d'un personnage. (Dans ce cas, la moitié de la lettre est transparente)
Ce que j'ai actuellement recherché et essayé (sans chance):
- Méthodes de stylisation de la moitié d'un caractère / d'une lettre
- Styliser une partie d'un caractère avec CSS ou JavaScript
- Appliquer CSS à 50% d'un caractère
Voici un exemple de ce que j'essaie d'obtenir.
Existe-t-il une solution CSS ou JavaScript pour cela, ou vais-je devoir recourir à des images? Je préférerais ne pas suivre la route des images car ce texte finira par être généré dynamiquement.
MISE À JOUR:
Étant donné que beaucoup ont demandé pourquoi je voudrais jamais styliser la moitié d'un personnage, c'est pourquoi. Ma ville avait récemment dépensé 250 000 $ pour définir une nouvelle «marque» pour elle-même. Ce logo est ce qu'ils ont créé. Beaucoup de gens se sont plaints de la simplicité et du manque de créativité et continuent de le faire. Mon objectif était de proposer ce site Web comme une blague. Tapez «Halifax» et vous verrez ce que je veux dire.
la source
Réponses:
Maintenant sur GitHub en tant que plugin!
N'hésitez pas à bifurquer et à vous améliorer.
Démo | Télécharger Zip | Half-Style.com (redirige vers GitHub)
Partie 1: Solution de base
Démo: http://jsfiddle.net/arbel/pd9yB/1694/
Cela fonctionne sur n'importe quel texte dynamique ou sur un seul caractère et est entièrement automatisé. Tout ce que vous avez à faire est d'ajouter une classe sur le texte cible et le reste est pris en charge.
De plus, l'accessibilité du texte original est préservée pour les lecteurs d'écran pour les aveugles ou les malvoyants.
Explication pour un seul caractère:
CSS pur. Tout ce que vous devez faire est d'appliquer une
.halfStyle
classe à chaque élément qui contient le caractère que vous souhaitez mettre en demi-style.Pour chaque élément span contenant le caractère, vous pouvez créer un attribut de données, par exemple ici
data-content="X"
, et sur le pseudo-élément utilisercontent: attr(data-content);
pour que la.halfStyle:before
classe soit dynamique et vous n'aurez pas besoin de le coder en dur pour chaque instance.Explication pour tout texte:
Ajoutez simplement une
textToHalfStyle
classe à l'élément contenant le texte.( Démo JSFiddle )
Partie 2: Solution avancée - Parties gauche et droite indépendantes
Avec cette solution, vous pouvez styliser les parties gauche et droite, individuellement et indépendamment .
Tout est pareil, seul un CSS plus avancé fait la magie.
Afficher l'extrait de code
( Démo JSFiddle )
Partie 3: Mix-Match et améliorez
Maintenant que nous savons ce qui est possible, créons quelques variantes.
- Demi-pièces horizontales
Sans ombre de texte:
Possibilité d'ombre de texte pour chaque demi-partie indépendamment:
Afficher l'extrait de code
( Démo JSFiddle )
-Vertical 1/3 Parts
Sans ombre de texte:
Possibilité d'ombre de texte pour chaque 1/3 partie indépendamment:
Afficher l'extrait de code
( Démo JSFiddle )
-Horizontal 1/3 pièces
Sans ombre de texte:
Possibilité d'ombre de texte pour chaque 1/3 partie indépendamment:
Afficher l'extrait de code
( Démo JSFiddle )
-HalfStyle Improvement Par @KevinGranger
Afficher l'extrait de code
( Démo JSFiddle )
-PeelingStyle amélioration de HalfStyle par @SamTremaine
Afficher l'extrait de code
( Démo JSFiddle et sur samtremaine.co.uk )
Partie 4: Prêt pour la production
Différents ensembles de styles demi-style personnalisés peuvent être utilisés sur les éléments souhaités sur la même page. Vous pouvez définir plusieurs jeux de styles et indiquer au plugin lequel utiliser.
Le plugin utilise l'attribut data
data-halfstyle="[-CustomClassName-]"
sur les.textToHalfStyle
éléments cibles et effectue automatiquement toutes les modifications nécessaires.Donc, simplement sur l'élément contenant le texte, ajoutez la
textToHalfStyle
classe et l'attribut datadata-halfstyle="[-CustomClassName-]"
. Le plugin fera le reste du travail.De plus, les définitions de classe des jeux de styles CSS correspondent à la
[-CustomClassName-]
partie mentionnée ci-dessus et sont chaînées.halfStyle
, nous aurons donc.halfStyle.[-CustomClassName-]
( Démo JSFiddle )
la source
Je viens de terminer le développement du plugin et il est disponible pour tout le monde! J'espère que vous apprécierez.
Voir le projet sur GitHub - Voir le site Web du projet . (afin que vous puissiez voir tous les styles séparés)
Usage
Tout d'abord, assurez-vous que la
jQuery
bibliothèque est incluse. La meilleure façon d'obtenir la dernière version de jQuery est de mettre à jour votre balise head avec:Après avoir téléchargé les fichiers, assurez-vous de les inclure dans votre projet:
Marquage
Tout ce que vous avez à faire est d'attribuer la classe
splitchar
, suivi du style souhaité à l'élément qui enveloppe votre texte. par exempleAprès tout cela, assurez-vous d'appeler la fonction jQuery dans votre fichier prêt pour le document comme ceci:
Personnalisation
Afin de rendre le texte exactement comme vous le souhaitez, tout ce que vous avez à faire est d'appliquer votre design comme ceci:
C'est ça! Maintenant, le
Splitchar
plugin est prêt. Plus d'informations à ce sujet sur http://razvanbalosin.com/Splitchar.js/ .la source
Oui, vous pouvez le faire avec un seul caractère et un seul CSS.
Webkit (et Chrome) uniquement, cependant:
http://jsbin.com/rexoyice/1/
Visuellement, tous les exemples qui utilisent deux caractères (que ce soit via JS, des pseudo-éléments CSS ou simplement HTML) semblent bien, mais notez que tout cela ajoute du contenu au DOM qui peut entraîner l'accessibilité - ainsi que la sélection / coupe / coller des problèmes.
la source
background-clip: text
c'est super génial et ils devraient le considérer (ou quelque chose de similairetext-decoration-background
) pour un module de niveau 4.JSFiddle DEMO
Nous le ferons en utilisant uniquement des pseudo-sélecteurs CSS!
Cette technique fonctionnera avec du contenu généré dynamiquement et différentes tailles et largeurs de police.
HTML:
CSS:
Pour encapsuler la chaîne générée dynamiquement, vous pouvez utiliser une fonction comme celle-ci:
la source
Cela peut ne pas être pertinent, peut-être pas, mais il y a quelque temps, j'ai créé une fonction jQuery qui fait la même chose, mais horizontalement.
Je l'ai appelé "Strippex" Pour 'stripe' + 'text', démo: http://cdpn.io/FcIBg
Je ne dis pas que c'est la solution à tous les problèmes, mais j'ai déjà essayé d'appliquer CSS à la moitié d'un personnage, mais horizontalement, donc l'idée est la même, la réalisation peut être horrible, mais ça marche.
Ah, et le plus important, je me suis amusé à le créer!
la source
pointer-events:none
à&:nth-child(2)
-&:nth-child(5)
. Ainsi, le texte ne peut être mis en surbrillance qu'une seule fois et vous n'en obtenez qu'une seule copie. Vous pouvez le voir ici: codepen.io/anon/pen/upLajSi cela vous intéresse, alors le Glitch de Lucas Bebber est un effet très similaire et super cool:
Créé à l'aide d'un simple mixin SASS tel que
Plus de détails sur les astuces CSS de Chris Coyer et la page Codepen de Lucas Bebber
la source
Voici une implémentation moche dans canvas. J'ai essayé cette solution, mais les résultats sont pires que ce à quoi je m'attendais, alors la voici quand même.
la source
0.5
pour l'arrêt de la couleur rouge.Le plus près que je peux obtenir:
Démo: http://jsfiddle.net/9wxfY/2/
Voici une version qui n'utilise qu'une seule plage: http://jsfiddle.net/9wxfY/4/
la source
$('span').width()
renvoie simplement la largeur de la première travée qu'il trouve; ce devrait être quelque chose que vous avez fait pour chaque paire. Ce qui me donne une idée ...Je viens de jouer avec la solution de @ Arbel:
la source
Une autre solution CSS uniquement (bien que l'attribut data soit nécessaire si vous ne voulez pas écrire de CSS spécifique à une lettre). Celui-ci fonctionne plus dans tous les domaines (Testé IE 9/10, Chrome dernier et FF dernier)
la source
Solution CSS et jQuery limitée
Je ne sais pas à quel point cette solution est élégante, mais elle coupe tout exactement de moitié: http://jsfiddle.net/9wxfY/11/
Sinon, j'ai créé une bonne solution pour vous ... Tout ce que vous avez à faire est d'avoir ceci pour votre HTML:
Jetez un œil à cette édition la plus récente et la plus précise du 13/06/2016: http://jsfiddle.net/9wxfY/43/
Quant au CSS, il est très limité ... Il suffit de l'appliquer à
:nth-child(even)
la source
http://experimental.samtremaine.co.uk/half-style/
Vous pouvez contraindre ce code à faire toutes sortes de choses intéressantes - ce n'est qu'une implémentation que mon associé et moi avons proposée hier soir.
la source
Une belle solution WebKit uniquement qui tire parti du
background-clip: text
support: http://jsfiddle.net/sandro_paganotti/wLkVt/la source
Que diriez-vous de quelque chose comme ça pour un texte plus court?
Cela pourrait même fonctionner pour un texte plus long si vous faisiez quelque chose avec une boucle, en répétant les caractères avec JavaScript. Quoi qu'il en soit, le résultat est quelque chose comme ceci:
la source
FWIW, voici mon point de vue sur cela en le faisant uniquement avec CSS: http://codepen.io/ricardozea/pen/uFbts/
Plusieurs notes:
La principale raison pour laquelle j'ai fait cela était de me tester et de voir si j'étais capable de styliser la moitié d'un personnage tout en fournissant une réponse significative à l'OP.
Je suis conscient que ce n'est pas une solution idéale ou la plus évolutive et les solutions proposées par les gens ici sont bien meilleures pour des scénarios "du monde réel".
Le code CSS que j'ai créé est basé sur les premières pensées qui me sont venues à l'esprit et sur ma propre approche personnelle du problème.
Ma solution ne fonctionne que sur les caractères symétriques, comme X, A, O, M. ** Elle ne fonctionne pas sur les caractères asymétriques comme B, C, F, K ou les lettres minuscules.
** CEPENDANT, cette approche crée des «formes» très intéressantes avec des caractères asymétriques. Essayez de changer le X en K ou en minuscule comme un h ou un p dans le CSS :)
HTML
SCSS
la source
Vous pouvez également le faire en utilisant SVG, si vous le souhaitez:
http://codepen.io/nicbell/pen/jGcbq
la source
Ceci peut être réalisé avec juste le
:before
sélecteur CSS etcontent property value
.>> Voir sur jsFiddle
la source
Vous pouvez utiliser le code ci-dessous. Ici, dans cet exemple, j'ai utilisé une
h1
balise et ajouté un attributdata-title-text="Display Text"
qui apparaîtra avec un texte de couleur différente surh1
l'élément de texte de la balise, ce qui donne un texte semi-coloré comme indiqué dans l'exemple ci-dessousla source
Juste pour le record de l'histoire!
J'ai trouvé une solution pour mon propre travail il y a 5-6 ans, qui est Gradext (javascript pur et css pur, pas de dépendance).
L'explication technique est que vous pouvez créer un élément comme celui-ci:
Maintenant, si vous voulez créer un dégradé sur du texte, vous devez créer plusieurs couches, chacune colorée individuellement et le spectre créé illustrera l'effet de dégradé.
par exemple regardez ceci est le mot lorem à l' intérieur d'un
<span>
et provoquera un effet de gradient horizontal ( consultez les exemples ):et vous pouvez continuer à faire ce modèle pendant longtemps et un long paragraphe également.
Mais!
Et si vous souhaitez créer un effet de dégradé vertical sur les textes?
Ensuite, il existe une autre solution qui pourrait être utile. Je décrirai en détail.
En supposant notre premier à
<span>
nouveau. mais le contenu ne doit pas être les lettres individuellement; le contenu doit être tout le texte, et maintenant nous allons copier le même<span>
encore et encore (nombre de travées définira la qualité de votre dégradé, plus étendue, un meilleur résultat, mais la mauvaise performance). jetez un oeil à ceci:Encore une fois, mais!
que faire si vous voulez que ces effets de dégradé se déplacent et en créent une animation?
eh bien, il y a aussi une autre solution. Vous devriez certainement vérifier
animation: true
ou même la.hoverable()
méthode qui conduira à un dégradé pour commencer en fonction de la position du curseur! (semble cool xD)c'est simplement ainsi que nous créons des dégradés (linéaires ou radiaux) sur les textes. Si vous avez aimé l'idée ou souhaitez en savoir plus, vous devriez vérifier les liens fournis.
Peut-être que ce n'est pas la meilleure option, peut-être pas la meilleure façon de le faire, mais cela ouvrira de l'espace pour créer des animations passionnantes et ravissantes pour inspirer d'autres personnes pour une meilleure solution.
Il vous permettra d'utiliser un style dégradé sur les textes, qui est même supporté par IE8!
Ici vous pouvez trouver une démo en direct et le référentiel d'origine est ici aussi sur GitHub, open source et prêt à recevoir des mises à jour (: D)
C'est ma première fois (ouais, après 5 ans, vous avez bien entendu) de mentionner ce référentiel n'importe où sur Internet, et j'en suis ravi!
[Mise à jour - août 2019:] Github a supprimé la démonstration des pages github de ce référentiel parce que je viens d'Iran! Seul le code source est disponible ici ...
la source