word-wrap in een input field

Status
Niet open voor verdere reacties.

Goeroeboeroe

Terugkerende gebruiker
Lid geworden
3 mei 2007
Berichten
1.408
Ik ben bezig 'n oplosbare kruiswoordpuzzel te maken met alleen css en html. Ik weet natuurlijk dat dat nergens op slaat, maar 't is gewoon voor de lol. Dus 'n eventuele oplossing moet ook alleen gebruik maken van css en html. In JavaScript is 't zo opgelost, maar ik wil op m'n demo-site juist alleen css en html.
(Natuurlijk is JavaScript of Java beter hiervoor, maar dit is echt alleen voor de lol, niet voor echt gebruik bedoeld.)

De code staat hier www. xs4all.nl/ ~zwitser1/ tekst/bewerken/tekst-073-dl.html
(Zonder spaties. Maar ik wil 't niet geïndexeerd hebben want dit is alleen maar 'n werkomgeving.)

Voor de horizontale woorden gebruik ik gewoon <input>. Daarbij kun je 'n maximaal aantal letters opgeven: perfect.
Voor de verticale woorden gebruik ik 'n <span> waarbij contentEditable op true is gezet. (html 5: dan kun je tekst bewerken in elk element. Werkt al in elke browser, zelfs in IE 6).
Door die span 'n hele smalle breedte te geven en de css 3-eigenschap word-wrap: break-word; te gebruiken voor die span, kan ik 'n nieuwe regel forceren na elke letter. word-wrap forceert 'n nieuwe regel BINNEN een woord.
De letters komen dus onder elkaar te staan. (Behalve in Firefox voor versie 3.5 en in Opera, want daar werkt word-wrap niet.)
Maar in 'n span kan ik geen maximum aantal letters opgeven, waardoor ik 'n tamelijk ingewikkelde constructie heb moeten maken die 'n scrollbar laat zien als je te veel letters invoert.
Beter zou dus zijn om 'n verticale <input> te gebruiken. Maar binnen <input> werkt word-wrap niet, althans ik heb 't niet werkend weten te krijgen. De letters verschijnen gewoon horizontaal naast elkaar.
Weet iemand hoe je binnen <input> word-break werkend kan krijgen? En of dat úberhaupt kan? Ik heb er niets over kunnen vinden op internet.

En ik geef direct toe dat ik hier html en css zwaar misbruik :D
Ik zet hier geen code neer, want 't is nogal veel en 't is ook behoorlijk ingewikkeld, maar 't is te bekijken via de link hierboven. En nogmaals: 't is alleen voor de lol dus ik verwacht niet dat iemand er dagen werk in gaat stoppen.
 
Laatst bewerkt:
Hoi Goeroeboeroe, dat is wel een hele leuke puzzel (2x). :D

Ben ook even aan het rammelen geweest, maar er is nog niets uit gevallen. IE7 doet het qua word-break beter dan FF3, kwam ik achter. Een <textarea> lijkt ook niet te helpen. En <input> e.a. form-achtige elementen horen tot de moeilijkst te stylen, dus misschien is de puzzel wel niet op te lossen.
Maar stond vanochtend om 7:30 al op een perron + drukke dag, en nu wat te gaar om helder te denken. ;)
Ander keertje verder!

Met vriendelijke groet,
CSShunter
(Let niet op m'n handtekening, die is niet voor jou bedoeld. :D )
 
Hoi,
Nou, ik volg je handtekening toch maar op :D Al jááááren.
Nee, textarea werkt ook niet. En als ik aan <input> type ="text" toevoeg helpt 't ook niet.
Volgens de standaard zou word-wrap op álle elementen moeten werken.

OOOOO. Flits van verlicht inzicht. Wat ben ik soms 'n sufferd! Logisch!
Da's toch wel leuk, alleen door even te vragen en 'n reactie blijk ik er opeens anders tegenaan te kijken. Ben ik dus uuuuren mee zoet geweest.
Volgens de standaard is 'n <input> per definitie 1 regel. Dus ik kan op m'n kop gaan staan, maar daar krijg ik nooit twee regels onder elkaar in.
Daarvoor is <textarea> bedoeld. Maar dat heeft (minimaal) dezelfde nadelen als die span, dus dat schiet niet op.
Oftewel: 't kan gewoon niet.

Zelfs IE 6 doet word-wrap beter dan FF 3 (FF 3.5 doet 't wel). word-wrap komt namelijk bij Microsoft vandaan. Voor css 3 hebben ze meer gekeken naar wat er al in de browsers aanwezig was aan uitbreidingen van 1 maker en wat goed werkte en zo.
Maar bij IE 6 en 7 werkt :focus en :active dus weer voor geen meter, dus die worden niet groen als 't focus heeft.

O, en goeiemorgen!
 
Laatst bewerkt:
Ja, alweer goeiemorgen!
Kwam er [eer]gisteravond met mijn gare <head> niet aan toe, even de html401 specs er op na te slaan voor de <input>. Inderdaad, daar staat heel duidelijk dat het niet kan: :) en :confused:
text
Creates a single-line text input control.
(de link er maar bij voor nieuwsgierige over-de-schouder-mee-lezers).

Dan zit er denk ik niets anders op dan de verticale vakjes 1:1 van een eigen input te voorzien om 'm werkend te krijgen. Klik-feestje voor de puzzelaar! :D

:focus en :active zouden voor IE 6 en 7 aan de praat gekregen moeten kunnen worden met de whatever:hover truc. Maar ja, dat is script, en dat was nou net wat je jezelf had verboden bij deze puzzel...

Gegroet!
CSShunter
 
Ha, dan was ik niet de enige. Alleen ben ik er dus uuuuren mee bezig geweest, grinnik. Tot ik dus tijdens het lezen van jouw reactie op 't idee kwam even de standaard te bekijken... Waar 't inderdaad overduidelijk en simpel in staat.

Dat 1:1 invoeren daar was ik snel van genezen. Dat leidt tot 'n piek in RSI en kalmerende middelen. Behalve in Firefox vóór versie 3.5 en Opera wordt door zwaar misbruik van css dus elke letter automatisch op 'n nieuwe regel gezet. Maak je geen zorgen: in de uitleg heb ik 't ook regelmatig over misbruik en dat je dit vooral niet in 't echt moet gaan gebruiken.

Ja, geen JavaScript, PHP, enz. op m'n site. Ik discrimineer niet, ik heb JavaScript onder m'n beste sites, maar ik wil 't niet op m'n eigen site hebben. Persoonlijk (en ik ben niet de enige) vind ik dat JavaScript veel te veel wordt gebruikt voor dingen die veel simpeler en toegankelijker zijn op te lossen met css. Hopelijk draagt dit soort voorbeelden er 'n beetje toe te laten zien dat met css ook veel kan.
Ik heb hier trouwens toch even getwijfeld over die hover-truc, maar ik houd 't toch liever lekker zwartwit op m'n eigen site.
 
Persoonlijk (en ik ben niet de enige) vind ik dat JavaScript veel te veel wordt gebruikt voor dingen die veel simpeler en toegankelijker zijn op te lossen met css.
Klopt: hier is er nog een. :)

[ot]
En m'n handtekening maar 'ns uitgebreid met de spec-links ;)
[/ot]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan