IE moving background-image on input-field bug
Kijk uw projecten eens na!
Onlangs pas heb ik deze bug ontdekt dat als je een achtergrond-afbeelding zet via CSS op een input field type text, dat in IE6 & IE7 (inderdaad, bug zit er nog steeds in) de achtergrond-afbeelding wegschuift als er meer data in het veld invoerd wordt als dat het visueel kan bevatten. Moeilijke uitleg, maar zal ik je even tonen:

En dit gebeurd in normaal gezien als je meer inhoud ingeeft:

Maar dit gebeurd in IE6 & IE7 met dezelfde hoeveelheid:

Je ziet de achtergrond-afbeelding gewoon wegschuiven naargelang je meer data in het veld invoert.
Live voorbeeld
Hier een live voorbeeld, bekijk het eens met Opera, FireFox en dan met IE6 of IE7 en test het maar eens uit.
Oplossing
Het zou geen nut hebben hierover te berichten tenzij er een oplossing zou bestaan. Na een beetje experimenteren en logisch nadenken kwam ik met volgende oplossing:
Dit is je CSS:
#member form input{
background: #E9DFC6 url(images/input_box.gif) no-repeat 0 0;
}
En daar zit de fout al voor IE6 & IE7, je zegt dat de achtergrond-afbeelding altijd links boven moet staan background: #E9DFC6 url(images/input_box.gif) no-repeat 0 0;, dus als je meer data ingeeft als voorzien door de width, dan zal logisch gezien de afbeelding zich steeds opnieuw links boven verplaatsen en dus verschuiven. Logisch toch?, wel voor IE6 & IE77, andere browsers gaan een stapje verder en weten dat ze dit niet moeten doen daar het begrip achtergrond-afbeelding nutteloos wordt als ze dit zouden doen.
Uit logisch perspectief lijkt het alsof de moderne browsers hier in de fout gaan.
De oplossing ligt erin om IE6 & IE7 dezelfde logica te laten volgen maar dan uit een andere hoek, namelijk:
#member form input{
background: #E9DFC6 url(images/input_box.gif) no-repeat bottom right;
}
Nu zal de achtergrond-afbeelding zich altijd weer opnieuw rechts onder plaatsen als er meer data ingevoerd wordt als visueel voorzien door de width:

Ook hier weer een live voorbeeld dat je met verschillende browsers kan testen, deze versie bevat de correctie voor het bovenste input field.
Een andere oplossing zou zijn om de achtergrond-afbeelding te zetten op een parent element, maar dit is voor elk een beslissing om zelf te nemen.
En jij?
Heb jij dit al tegen gekomen, en zitten jouw projecten met hetzelfde probleem, misschien zonder dat je het weet? Ik zou zeggen kijk ze eens na!
Gelezen: 3311 | IE7 bug, CSS, Tips, Tutorials







Op Saturday 28 March 2009
Dit is wel een slimme oplossing zeg. Ik deed het altijd met een parent element, maar met bottom right is het natuurlijk nog korter
Op Monday 06 April 2009
Dit ben ik inderdaad ook wel eens tegengekomen.
Maar met jou oplossing, als je nu veel typt en dan weer naar links gaat. Dan blijft hij in IE6 ook weer rechts staan, en zie je links dus niks meer als het goed is.
Ik zet er meestal gewoon een p tag omheen die ik de background geef. Dan heb je zowieso geen problemen.
Op Thursday 25 June 2009
Uhhh je code werkt niet in IE 6 hoor…. zelfs je live voorbeeld doet het niet de afbeelding schuift nu alleen de andere kant op! Enige oplossing die ik kan verzinnen is een div er omheen zetten met de background, lekker omslachtig en onhandig dus
Op Thursday 25 June 2009
_background-attachment: fixed; in de css zetten lijkt ook te werken (alleen getest in ie6) maar dat is natuurlijk geen valide css.
Op Monday 10 August 2009
Deze oplossing werkt ook niet wanneer je padding toepast binnen je input-element.
Workaround? Stylesheet opmaken voor standaardcompatibele browsers, en de background-eigenschappen nogmaals definiëren en toevoegen aan (een ongetwijfeld reeds aanwezige) iefix.css met eigenschap fixed, zoals reeds opgemerkt;
div#id form#etc input {
background: transparent url("..pad/naar/afbeeld.ing") fixed 10px 5px;
}