Eerder vanmorgen moest ik een verticale tekst maken voor een project waaraan ik werk. Nadat ik een paar ideeën had uitgeprobeerd, ging ik op Twitter op zoek naar wat voor soort gedachten onze volgelingen over het onderwerp hadden. Er waren veel geweldige reacties en ideeën die we vandaag zullen bespreken!
* Opmerking - raadpleeg "Methode 6" hieronder voor meer informatie over correct gebruik.Abonneer u op onze YouTube-pagina om alle videozelfstudies te bekijken!
Bekijk deze video liever op Screenr?
Tags Dus een mogelijke (hoewel niet aanbevolen) manier om verticale tekst te bereiken is om toe te voegen
tags na elke letter.
N
E
T
T
U
T
S
Gebruik deze methode niet. Het is lam en slordig.
Met deze methode verpakken we elke letter in een reeks en stellen deze vervolgens in tonen
naar blok
binnen onze CSS.
Verticale tekst N E T T U T S
Het probleem met deze oplossing - andere dan de angstaanjagende verhoging - is dat het een handmatig proces is. Als de tekst dynamisch wordt gegenereerd via een CMS, heeft u pech. Gebruik deze methode niet.
Mijn aanvankelijke instinct was om dynamisch het span
tags met JavaScript. Op die manier komen we de problemen die genoemd worden in methode twee tegen.
JS Bin NETTUTS
Deze methode is absoluut een verbetering. Hierboven, wij spleet
de tekst in een array en verpak deze vervolgens in een span
. Hoewel we zoiets als een zouden kunnen gebruiken voor
verklaring, of $ .map
om door de array te filteren, is een veel betere en snellere oplossing om de tekst handmatig aan te sluiten en in te pakken.
Hoewel beter, wordt deze oplossing niet aanbevolen.
Laten we weg van JavaScript gaan als we kunnen. Wat als we een breedte op het containerelement toepassen en de tekst dwingen om in te pakken? Dat zou kunnen werken.
JS Bin NETTUTS
In dit scenario passen we een zeer smalle breedte toe op de h1
tag en maak het dan lettertypegrootte
gelijk aan die exacte waarde. Eindelijk, door in te stellen word-wrap
gelijk aan break-woord
, we kunnen elke letter op een eigen regel forceren. Echter, word-wrap: break-word
maakt deel uit van de CSS3-specificatie en voldoet niet aan alle browsers.
Exclusief oudere browsers lost dit schijnbaar ons probleem op ... maar niet helemaal. De bovenstaande demo lijkt te werken, maar het is te riskant om met pixelwaarden te spelen. Laten we iets eenvoudigs proberen als het omzetten van hoofdletters in kleine letters.
Yikes; met deze methode moeten we heel voorzichtig zijn als het gaat om de specifieke waarden die we stellen. Niet aangeraden.
letterafstand
Uit voorzorg en om methode vier uit te breiden, waarom passen we niet vrij groot toe letterafstand
om dit probleem te omzeilen?
JS Bin Nettuts
Dat lijkt het probleem op te lossen, maar nogmaals, we gebruiken hier een beetje CSS3.
em
s Als alternatief is er een one-liner-oplossing. Weet je nog toen we dat hebben geleerd overloop verborgen
aan een ouderelement zou het op miraculeuze wijze zijn drijvers bevatten? Deze methode is zoiets als dat! De sleutel is om te gebruiken em
s en plaats een spatie tussen elke letter.
JS Bin Niets doet dat
Best leuk, toch? En op deze manier kunt u elke gewenste lettergrootte toepassen. Omdat we gebruiken em
s - die gelijk is aan de x-height
van het gekozen lettertype - we krijgen dan veel meer flexibiliteit.
Maar, nogmaals, soms komt meer dan één letter op een regel terecht. Je moet veilig zijn; daarom heb ik arbitrair groot toegepast letterafstand
om ervoor te zorgen dat er nooit meer dan één letter op een regel staat.
Bij mijn weten op dit moment is dit de beste, meest cross-browser compatibele oplossing.
Witte ruimte
Een laatste manier om dit effect te bereiken is om te profiteren van de witte ruimte
eigendom.
J E F F R E Y
Door in te stellen witte ruimte
naar pre
, die de tekst de opdracht geeft om zich te gedragen alsof het zich in een pre
label. Als zodanig respecteert het de ruimte die u heeft toegevoegd.
Zou er geen CSS3-regel moeten zijn om deze taak te volbrengen? Wat als ik iets zou kunnen instellen in de trant van: lettertype-weergave: letterblok;
waardoor elke letter als een soort blok wordt weergegeven?
Wat denk je? Heeft u andere alternatieven die we moeten overwegen? Veel mensen stelden voor om met behulp van tekstrotatie de taak te volbrengen, maar het is belangrijk om te onthouden dat dit ook de tekst negentig graden roteert, wat niet is wat we proberen te bereiken.