Was ich suche:
Eine Möglichkeit, eine HÄLFTE eines Charakters zu stylen . (In diesem Fall ist die Hälfte des Buchstabens transparent)
Was ich aktuell gesucht und ausprobiert habe (ohne Glück):
- Methoden zum Stylen eines halben Zeichens / Buchstabens
- Styling eines Teils eines Zeichens mit CSS oder JavaScript
- Wenden Sie CSS auf 50% eines Zeichens an
Unten ist ein Beispiel dafür, was ich versuche zu erhalten.
Gibt es dafür eine CSS- oder JavaScript-Lösung oder muss ich auf Bilder zurückgreifen? Ich würde es vorziehen, nicht auf die Bildroute zu gehen, da dieser Text dynamisch generiert wird.
AKTUALISIEREN:
Da viele gefragt haben, warum ich jemals einen halben Charakter stylen möchte, ist dies der Grund. Meine Stadt hatte kürzlich 250.000 US-Dollar ausgegeben, um eine neue "Marke" für sich selbst zu definieren. Dieses Logo haben sie sich ausgedacht. Viele Menschen haben sich über die Einfachheit und den Mangel an Kreativität beschwert und tun dies auch weiterhin. Mein Ziel war es, diese Website als Witz zu erfinden. Geben Sie 'Halifax' ein und Sie werden sehen, was ich meine.
quelle
Antworten:
Jetzt auf GitHub als Plugin!
Fühlen Sie sich frei zu gabeln und zu verbessern.
Demo | Laden Sie Zip | herunter Half-Style.com (Weiterleitung zu GitHub)
Teil 1: Grundlösung
Demo: http://jsfiddle.net/arbel/pd9yB/1694/
Dies funktioniert mit jedem dynamischen Text oder einem einzelnen Zeichen und ist allesamt automatisiert. Alles was Sie tun müssen, ist eine Klasse zum Zieltext hinzuzufügen und der Rest ist erledigt.
Auch für Bildschirmleser für Blinde oder Sehbehinderte bleibt die Zugänglichkeit des Originaltextes erhalten.
Erklärung für ein einzelnes Zeichen:
Reines CSS. Alles, was Sie tun müssen, ist,
.halfStyle
Klasse auf jedes Element anzuwenden , das das Zeichen enthält, das Sie halb gestylt haben möchten.Für jedes span-Element, das das Zeichen enthält, können Sie beispielsweise hier ein Datenattribut erstellen
data-content="X"
und das Pseudoelement verwenden,content: attr(data-content);
damit die.halfStyle:before
Klasse dynamisch ist und Sie es nicht für jede Instanz fest codieren müssen.Erklärung für jeden Text:
Fügen Sie
textToHalfStyle
dem Element, das den Text enthält, einfach eine Klasse hinzu .( JSFiddle-Demo )
Teil 2: Erweiterte Lösung - Unabhängige linke und rechte Teile
Mit dieser Lösung können Sie linke und rechte Teile einzeln und unabhängig gestalten .
Alles ist gleich, nur fortgeschritteneres CSS zaubert.
Code-Snippet anzeigen
( JSFiddle-Demo )
Teil 3: Mix-Match und Verbesserung
Nachdem wir nun wissen, was möglich ist, erstellen wir einige Variationen.
-Horizontale Halbteile
Ohne Textschatten:
Möglichkeit des Textschattens für jeden halben Teil unabhängig:
Code-Snippet anzeigen
( JSFiddle-Demo )
-Vertikale 1/3 Teile
Ohne Textschatten:
Möglichkeit des Textschattens für jeden 1/3 Teil unabhängig:
Code-Snippet anzeigen
( JSFiddle-Demo )
-Horizontale 1/3 Teile
Ohne Textschatten:
Möglichkeit des Textschattens für jeden 1/3 Teil unabhängig:
Code-Snippet anzeigen
( JSFiddle-Demo )
-HalfStyle-Verbesserung von @KevinGranger
Code-Snippet anzeigen
( JSFiddle-Demo )
-PeelingStyle Verbesserung von HalfStyle durch @SamTremaine
Code-Snippet anzeigen
( JSFiddle-Demo und auf samtremaine.co.uk )
Teil 4: Produktionsbereit
Benutzerdefinierte verschiedene Half-Style-Stilsätze können für gewünschte Elemente auf derselben Seite verwendet werden. Sie können mehrere Stilsätze definieren und dem Plugin mitteilen, welches verwendet werden soll.
Das Plugin verwendet Datenattribute
data-halfstyle="[-CustomClassName-]"
für die Zielelemente.textToHalfStyle
und nimmt alle erforderlichen Änderungen automatisch vor.Fügen Sie also einfach für das Element, das den Text enthält, die
textToHalfStyle
Klasse und das Datenattribut hinzudata-halfstyle="[-CustomClassName-]"
. Das Plugin erledigt den Rest der Arbeit.Auch die Klassendefinitionen der CSS-Stilsätze stimmen mit dem
[-CustomClassName-]
oben genannten Teil überein und sind verkettet.halfStyle
, so dass wir haben werden.halfStyle.[-CustomClassName-]
( JSFiddle-Demo )
quelle
Ich habe gerade die Entwicklung des Plugins abgeschlossen und es steht jedem zur Verfügung! Hoffe es wird euch gefallen.
Projekt auf GitHub anzeigen - Projektwebsite anzeigen . (so können Sie alle geteilten Stile sehen)
Verwendungszweck
Stellen Sie zunächst sicher, dass die
jQuery
Bibliothek enthalten ist. Der beste Weg, um die neueste jQuery-Version zu erhalten, besteht darin, Ihr Head-Tag zu aktualisieren mit:Stellen Sie nach dem Herunterladen der Dateien sicher, dass Sie sie in Ihr Projekt aufnehmen:
Markup
Alles, was Sie tun müssen, ist, die Klasse
splitchar
, gefolgt vom gewünschten Stil, dem Element zuzuweisen, das Ihren Text umschließt . z.BNachdem dies alles erledigt ist, stellen Sie einfach sicher, dass Sie die jQuery-Funktion in Ihrer dokumentbereiten Datei wie folgt aufrufen:
Customizing
Damit der Text genau so aussieht, wie Sie es möchten, müssen Sie Ihr Design nur folgendermaßen anwenden:
Das ist es! Jetzt haben Sie das
Splitchar
Plugin fertig. Weitere Informationen dazu unter http://razvanbalosin.com/Splitchar.js/ .quelle
Ja, Sie können dies mit nur einem Zeichen und nur CSS tun.
Nur Webkit (und Chrome):
http://jsbin.com/rexoyice/1/
Visuell sehen alle Beispiele, die zwei Zeichen verwenden (sei es über JS, CSS-Pseudoelemente oder nur HTML), gut aus. Beachten Sie jedoch, dass alle dem DOM Inhalte hinzufügen, die die Barrierefreiheit beeinträchtigen können - sowie Textauswahl / -schnitt / Probleme einfügen.
quelle
background-clip: text
ist super genial und sie sollten es (oder etwas ähnliches wie betrachtentext-decoration-background
) für eine Ebene 4 - Modul.JSFiddle DEMO
Wir machen das nur mit CSS-Pseudo-Selektoren!
Diese Technik funktioniert mit dynamisch generierten Inhalten und verschiedenen Schriftgrößen und -breiten.
HTML:
CSS:
Um die dynamisch generierte Zeichenfolge zu umbrechen, können Sie eine Funktion wie die folgende verwenden:
quelle
Es mag irrelevant sein, vielleicht auch nicht, aber vor einiger Zeit habe ich eine jQuery-Funktion erstellt, die dasselbe tut, aber horizontal.
Ich nannte es "Strippex" Für 'Stripe' + 'Text', Demo: http://cdpn.io/FcIBg
Ich sage nicht, dass dies die Lösung von Problemen ist, aber ich habe bereits versucht, CSS auf die Hälfte eines Zeichens anzuwenden, aber horizontal. Die Idee ist also dieselbe, die Erkenntnis mag schrecklich sein, aber es funktioniert.
Ah, und das Wichtigste, ich hatte Spaß daran!
quelle
pointer-events:none
zu&:nth-child(2)
- aktualisiert&:nth-child(5)
. Dadurch kann der Text nur einmal hervorgehoben werden und Sie erhalten nur eine Kopie davon. Sie können es hier sehen: codepen.io/anon/pen/upLajWenn Sie daran interessiert sind, dann ist Lucas Bebbers Glitch ein sehr ähnlicher und super cooler Effekt:
Erstellt mit einem einfachen SASS Mixin wie
Weitere Informationen finden Sie auf den CSS-Tricks von Chris Coyer und auf der Codepen-Seite von Lucas Bebber
quelle
Hier eine hässliche Implementierung in Leinwand. Ich habe diese Lösung ausprobiert, aber die Ergebnisse sind schlechter als erwartet, also hier ist es trotzdem.
quelle
0.5
für den roten Farbstopp verwenden.Am nächsten kann ich kommen:
Demo: http://jsfiddle.net/9wxfY/2/
Hier ist eine Version, die nur eine Spanne verwendet: http://jsfiddle.net/9wxfY/4/
quelle
$('span').width()
Gibt nur die Breite der ersten gefundenen Spanne zurück. Es müsste etwas sein, das du für jedes Paar getan hast. Was mir eine Idee gibt ...Ich habe gerade mit @ Arbels Lösung gespielt:
quelle
Eine weitere reine CSS-Lösung (obwohl Datenattribute benötigt werden, wenn Sie kein buchstabenspezifisches CSS schreiben möchten). Dieser funktioniert auf ganzer Linie (Getesteter IE 9/10, Chrome neueste & FF neueste)
quelle
Begrenzte CSS- und jQuery-Lösung
Ich bin mir nicht sicher, wie elegant diese Lösung ist, aber sie halbiert alles genau: http://jsfiddle.net/9wxfY/11/
Ansonsten habe ich eine nette Lösung für Sie erstellt ... Alles, was Sie tun müssen, ist dies für Ihr HTML zu haben:
Schauen Sie sich diese neueste und genaue Bearbeitung vom 13.06.2016 an: http://jsfiddle.net/9wxfY/43/
Das CSS ist sehr begrenzt ... Sie müssen es nur anwenden
:nth-child(even)
quelle
http://experimental.samtremaine.co.uk/half-style/
Sie können diesen Code dazu zwingen, alle möglichen interessanten Dinge zu tun - dies ist nur eine Implementierung, die mein Mitarbeiter und ich gestern Abend entwickelt haben.
quelle
Eine nette Nur-WebKit-Lösung, die die
background-clip: text
Unterstützung nutzt : http://jsfiddle.net/sandro_paganotti/wLkVt/quelle
Wie wäre es mit so etwas für kürzeren Text?
Es könnte sogar für längeren Text funktionieren, wenn Sie etwas mit einer Schleife machen und die Zeichen mit JavaScript wiederholen. Wie auch immer, das Ergebnis ist ungefähr so:
quelle
FWIW, hier ist meine Meinung dazu, wie ich es nur mit CSS mache: http://codepen.io/ricardozea/pen/uFbts/
Mehrere Anmerkungen:
Der Hauptgrund, warum ich dies getan habe, war, mich selbst zu testen und zu sehen, ob ich in der Lage war, die Hälfte eines Charakters zu stylen und gleichzeitig eine aussagekräftige Antwort auf das OP zu geben.
Mir ist bewusst, dass dies keine ideale oder skalierbarste Lösung ist und die von den Menschen hier vorgeschlagenen Lösungen für Szenarien der "realen Welt" weitaus besser sind.
Der von mir erstellte CSS-Code basiert auf den ersten Gedanken, die mir in den Sinn kamen, und meiner persönlichen Herangehensweise an das Problem.
Meine Lösung funktioniert nur mit symmetrischen Zeichen wie X, A, O, M. ** Sie funktioniert nicht mit asymmetrischen Zeichen wie B, C, F, K oder Kleinbuchstaben.
** Dieser Ansatz erzeugt jedoch sehr interessante 'Formen' mit asymmetrischen Zeichen. Versuchen Sie, das X in ein K oder einen Kleinbuchstaben wie ein h oder ein p zu ändern im CSS zu :)
HTML
SCSS
quelle
Sie können dies auch mit SVG tun, wenn Sie möchten:
http://codepen.io/nicbell/pen/jGcbq
quelle
Dies kann nur mit CSS
:before
Selector und erreicht werdencontent property value
.>> Siehe auf jsFiddle
quelle
Sie können den folgenden Code verwenden. Hier in diesem Beispiel habe ich ein
h1
Tag verwendet und ein Attribut hinzugefügt,data-title-text="Display Text"
das mit einem anderenh1
Farbtext auf dem Tag-Textelement angezeigt wird, wodurch ein halbfarbiger Effekt erzielt wird, wie im folgenden Beispiel gezeigtquelle
Nur für den Rekord in der Geschichte!
Ich habe vor 5-6 Jahren eine Lösung für meine eigene Arbeit gefunden, Gradext (reines Javascript und reines CSS, keine Abhängigkeit).
Die technische Erklärung ist, dass Sie ein Element wie das folgende erstellen können:
Wenn Sie nun einen Verlauf für Text erstellen möchten, müssen Sie mehrere Ebenen erstellen, die jeweils einzeln farbig sind. Das erstellte Spektrum veranschaulicht den Verlaufseffekt.
Schauen Sie sich zum Beispiel an, dass dies das Wort Lorem in a ist
<span>
und einen horizontalen Verlaufseffekt verursacht ( siehe Beispiele ):und Sie können dieses Muster auch für eine lange Zeit und einen langen Absatz fortsetzen.
Aber!
Was ist, wenn Sie einen vertikalen Verlaufseffekt für Texte erstellen möchten ?
Dann gibt es noch eine andere Lösung, die hilfreich sein könnte. Ich werde im Detail beschreiben.
Nehmen wir
<span>
wieder unsere erste an. aber der Inhalt sollte nicht die Buchstaben einzeln sein; der Inhalt soll der gesamte Text, und jetzt werden wir das gleiche kopieren<span>
immer wieder (Anzahl der Spannweiten werden die Qualität des Farbverlaufes, mehr Spannweite, besseres Ergebnis, aber schlechte Leistung definieren). Guck dir das an:Wieder aber!
Was ist, wenn Sie diese Verlaufseffekte verschieben und daraus eine Animation erstellen möchten?
Nun, es gibt auch eine andere Lösung dafür. Sie sollten auf jeden Fall überprüfen
animation: true
oder sogar die.hoverable()
Methode, die dazu führt, dass ein Gradient basierend auf der Cursorposition gestartet wird! (klingt cool xD)Auf diese Weise erstellen wir einfach Farbverläufe (linear oder radial) für Texte. Wenn Ihnen die Idee gefallen hat oder Sie mehr darüber erfahren möchten, sollten Sie die bereitgestellten Links überprüfen.
Vielleicht ist dies nicht die beste Option, vielleicht nicht die beste Art, dies zu tun, aber es wird Raum schaffen, um aufregende und entzückende Animationen zu erstellen, die andere Menschen zu einer besseren Lösung inspirieren.
Sie können den Verlaufsstil für Texte verwenden, der sogar von IE8 unterstützt wird!
Hier finden Sie eine funktionierende Live-Demo und das ursprüngliche Repository ist auch hier auf GitHub, Open Source und bereit, einige Updates zu erhalten (: D)
Dies ist mein erstes Mal (ja, nach 5 Jahren haben Sie es richtig gehört), dass ich dieses Repository irgendwo im Internet erwähne, und ich freue mich darüber!
[Update - August 2019:] Github hat die Github-Seiten- Demo dieses Repositorys entfernt, weil ich aus dem Iran komme! Hier ist nur der Quellcode verfügbar , um ...
quelle