2010-09-22 18 views

Respuesta

-2

Prueba esto es decir hacks

input{ 
padding-right : 20px /* all browsers, of course */ 
padding-right : 20px\9; /* IE8 and below */ 
*padding-right : 20px; /* IE7 and below */ 
_padding-right : 20px; /* IE6 */ 
} 

demostración

http://jsfiddle.net/srLQH/2/

Consejos

el relleno no funcionan bien con elemento de formulario HTML es decir, área de texto de entrada como la pruebe a cambiar a margen

input{ 
margin-right : 20px /* all browsers, of course */ 
margin-right : 20px\9; /* IE8 and below */ 
*margin-right : 20px; /* IE7 and below */ 
_margin-right : 20px; /* IE6 */ 
} 

ya que en jsFiddle, que tiene un solo elemento, ¿por qué no intenta

margin-left en vez de margin-right

+3

Esto no funciona para mí en IE7. – Robert

+0

intente cambiar el relleno al margen, ¿funcionará? –

+4

Eh, lo siento, esto no funciona. Gracias de cualquier manera. – SnickersAreMyFave

2

Parece como si IE es applyi ng el CSS, simplemente no hasta el final de la línea. Es decir, el relleno está influenciado por el valor, en lugar del valor influenciado por el relleno.

Al configurar el relleno en 20px en toda su extensión con un valor predeterminado más largo que el ancho predeterminado, puede desplazarse hasta el final y ver el relleno. http://jsfiddle.net/dZyzr/

Tendrás que inventar algún truco visual, o simplemente usar una hoja de estilos diferente para IE.

+0

La respuesta de mrust es la -real- solución – Wouter

2

Simplemente colóquelo en otro elemento que sí lo haga en IE, como un div. Entonces no necesitas preocuparte por hacks feos que invaliden tu hoja de estilo css. Recuerde eliminar el relleno de la entrada para que no moleste a otros navegadores. Esta es también la única forma de darle a un cuadro de texto una imagen de fondo que no se desplaza con el texto en IE.

+0

La respuesta de mrust es la -real- solución – Wouter

+0

@Wouter Todas las respuestas estuvieron bien cuando se formuló la pregunta en 2010, no hay necesidad de menospreciar a todos. –

+0

http://stackoverflow.com/help/privileges/vote-down: "Usa tus votos abajo cada vez que te encuentres ... una respuesta que es claramente ... incorrecta". A la luz de la respuesta correcta, todos los demás son claramente incorrectos. Entiendo que este no fue el caso en 2010, pero no veo cómo eso es relevante hoy. Nada personal;) ​​ – Wouter

5

He encontrado una forma de hacerlo, pero no es bonita.

http://jsfiddle.net/dmitrytorba/dZyzr/162/

<!--[if IE]> 
<style type="text/css"> 
input { 
    border: none; 
    margin: 5px; 
    padding-right: 0px; 
} 
.wrapper { 
    border: 1px #aaa inset; 
} 
.spacer{ 
    margin-left: 20px; 
} 
</style> 
<![endif]--> 


<span class='wrapper'> 
    <input type='text' /> 
    <span class='spacer'></span> 
</span>​ 
+0

Trabajo, respuesta honesta. Gracias. – kapace

+0

La respuesta de mrust es la -real- solución – Wouter

7

que han estado buscando una manera de resolver esto. Un colega encontró una solución y la probamos y funciona perfectamente. Entonces, la cosa es eliminar padding: right y agregar un border: 20px solid transparent.

+0

esto funciona bastante bien para ie8. Modernizr agrega la clase "ie" al elemento HTML que facilita la separación, es decir, los hacks. Use "tamaño de caja: border-box;" con eso. – Silkster

+1

Esto funciona para otros navegadores populares también. No es necesario hacer una excepción para IE. Por cierto, el relleno izquierdo también debe tratarse de esta manera. – feklee

+0

La respuesta de mrust es la -real- solución – Wouter

-1

Puede utilizar la propiedad css texto-guión para este elemento:

Para example:

<input style="text-indent:15px" name="" type="text" value="test testtesttesttesttesttest" /> 
+0

¿Cómo es que esto no se subió? omg Es el sitio roto. Supongo que es porque estaban pidiendo relleno izquierdo, pero me pareció útil. :) – zehelvion

+0

Hubiera sido bueno ver una solución más efectiva – Davis

+0

Esto no tiene nada que ver con el relleno derecho. – Wouter

2

Esta es una pregunta más viejo, pero me fijo esto en IE10 siguiendo este:

Cómo solucionar esto esto Para IE-10:

::-ms-clear { 
    display: none; 
} 

O para una entrada específica:

.anyinput::-ms-clear { 
    display: none; 
} 

Ver más información aquí: http://sarveshkushwaha.blogspot.com/2014/06/ie-right-align-text-input-issue.html

+0

Acabo de utilizar esto para un Kendo MaskedTextBox, funcionó perfectamente cuando ninguna de las otras respuestas era/eran apropiadas. Gracias :-) – tony

+0

Esta fue la verdadera causa del problema y la solución. ¡Gracias! – Wouter

3

Sé que esta pregunta es viejo, pero después de mucho buscar, encontré una solución que funcione.

Puede agregar el "relleno" a IE agregando márgenes en el valor utilizando lo siguiente.

relleno de entrada por defecto

 

    input[type="text"]{ 
     padding-left:17px; 
     padding-right:17px; 
    } 

relleno para las entradas de IE

 

    input[type="text"]::-ms-value { 
     margin-left:17px; 
     margin-right:17px; 
    } 

pero entonces tendrá que quitar el relleno para IE 10+ (para que no se utilice ambos) que puedes hacer con esta consulta de medios.

 

    @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { 
     input[type="text"] { 
      padding-left:0; 
      padding-right:0; 
     } 
    } 

+0

Maldita sea esto es inteligente. Buen trabajo. –

Cuestiones relacionadas