2010-01-15 11 views
10

Para mi aplicación, quise darle un estilo agradable a los botones de envío. Con CSS normal, logré que se viera bien en Firefox y horrible en IE. Entonces vi esta entrada de blog:Botones web magníficos con un comportamiento adecuado, ¿se puede hacer?

http://www.sohtanaka.com/web-design/liquid-color-adjustable-css-buttons/

Usando esta técnica se obtiene magníficos botones, en casi todos los navegadores. Sin embargo, también hay algunos problemas de accesibilidad:

  • Dado que se usa en lugar de enlaces de entrada HTML real o elementos de botón, clic en el botón no enviar el formulario. Esto se resuelve fácilmente usando Javascript, pero sería ideal si el botón de envío funciona sin Javascript habilitado.
  • Otro problema es que presionar [ENTRAR] no envía el formulario. Un truco sucio es incluir un elemento de entrada invisible de tipo "enviar" o "imagen".

Básicamente lo que quiero es quizás lo imposible: la calidad del diseño como se ve en la entrada del blog, pero implementado con elementos normales para que tenga un comportamiento normal.

¿De verdad tengo que elegir entre los hacks sucios o el estilo pobre?

Cada botón de estilo tutorial que he visto hasta ahora tiene resultados no óptimos en IE :(

+0

te pueden gustar http://stopdesign.com/archive/2009/02/04/recreating-the-button.html – levinalex

+0

Tenga en cuenta que se trata de una especie de mito de que los lectores de pantalla no funcionan con Javascript. –

+1

Y como dice Graphicdivine a continuación, probablemente no debería volver a modificar los controles de su formulario de todos modos, a menos que no tenga otra opción en el asunto. –

Respuesta

7

¿Realmente tengo que elegir entre cortes sucios o mal estilo?

No, puede usar Javascript como el resto de nosotros. Cargue en su formulario estándar (completo con el botón de enviar), y luego use Javascript cuidadosamente escrito para "arreglar" dinámicamente algunos de los elementos desagradables. Le sugiero que evalúe el marco de jQuery para este tipo de cosas si desea usar código limpio y obtener compatibilidad con varios navegadores.

+0

Si puede aplicar CSS que corrige dinámicamente los elementos feos, entonces puede aplicarlo estáticamente. No hay necesidad de Javascript en absoluto. Además, el OP explícitamente dice que quiere que el botón de enviar funcione sin Javascript, por lo que probablemente también quiera que se vea bien sin Javascript. –

+1

El punto es que usa botones normales feos, luego usa JS para reemplazarlos con bonitos botones que requieren JS. Si no tienen JS, tienen botones feos y el intercambio no está hecho. Si tienen JS, entonces se realiza el intercambio, y está "OK" usar JS para manejar los clics. –

+0

Y mi punto es que no tienes que usar botones feos para empezar. Puede tener bonitos botones de inmediato, puramente con CSS, para que no haya necesidad de cambiar nada, tanto si el usuario tiene JS activado como si no. –

1

Usted puede ser capaz de transportar el botón líquida THINGY usted menciona en una configuración <button type="submit"></button> sustituyendo los <div> s rodean por button elementos, y los <a> s por <span> s.

0

Puede usar un botón de envío normal y usar JavaScript para cambiarlo por un bonito botón JS-enhanced. De esta manera, sólo se utilizan JavaScript donde se sabe que va a ser apoyado y que no va a dejar a los usuarios NoScript con una página rota

3

Ver this tutorial. Sin JavaScript, sin enlaces en lugar de botones, funciona en IE6 a través de IE8.

+1

Creo que ese es probablemente el mejor enfoque si realmente eres reacio a usar javascript. –

1

Sí, lo hace.

Excepto que no es un "estilo pobre", es el navegador Chrome. Los elementos de formulario son parte del navegador. 'Diseñarlos' confunde al usuario e impide la usabilidad. En serio, solo déjalos solos.

No importa lo lejos que vayas con el estilo de entrada, inevitablemente golpearás la pared de ladrillos del elemento de carga de archivos, que es casi imposible de diseñar.Y si no puedes diseñarlos a todos, ¿por qué personalizarlos?

En serio, esto es similar al diseño de barras de desplazamiento. No te molestes

+1

GMail estiliza el elemento de carga. Y lo hice también :) ... Pero estoy de acuerdo en que es difícil. –

+0

Daniel: ¿Cross-browser? ¿Webkit? – graphicdivine

+1

De acuerdo, siempre debe pensar con mucho cuidado antes de ir en contra de las convenciones establecidas en el diseño web y los botones de formulario son definitivamente uno de esos. –

2

Para mi aplicación, quería aplicar los botones de enviar correctamente. Con CSS normal, logré que se viera bien en Firefox y horrible en IE.

para IE es necesario agregar overflow: visible; para deshacerse de relleno "inexplicable". Eso es básicamente todo lo que debes tener en cuenta para IE (siempre que no estés en modo peculiar).

Y vi esta entrada de blog:

no iría por ella. Solo adhiérase a <button type="submit"> o <input type="submit"> con una buena toma de CSS. Incluso puede usar imágenes de fondo CSS en esos botones. No tomaría Javascript para problemas de diseño también, porque eso puede causar "wtf?" experiencias durante la carga de la página cuando el usuario ve instantáneamente partes de la página que cambian rápidamente. Solo usa CSS de manera inteligente.

+0

De acuerdo. YMMV con IE6, pero IE7 + y otros navegadores reales te permiten hacer cosas decentes con los botones. –

1

En realidad, no tiene que usar Javascript o algo similar. Puede usar botones también.

Continuando con http://www.sohtanaka.com/web-design/liquid-color-adjustable-css-buttons/ realizar los siguientes cambios:

  1. Agregue lo siguiente a la declaración CSS

    botón .btn { float: left; altura: 40px; fondo: url (images/btn_stretch.png) repeat-x left top; línea-altura: 40px; relleno: 0 10px; color: #fff; font-size: 1em; texto-decoración: ninguno; borde: 0; }

  2. Añadir lo siguiente al código HTML:

    < div class = "Bot btn_learnmore" > < botón > usted debe darle una oportunidad </botón > <lapso> </span > </div >

Editar: también agrega margen: 0 a la declaración de botón css.

+0

Tenía esperanzas al respecto, pero realmente arruina el diseño. Tanto en Firefox como en IE ignora la superposición de estiramiento y también agrega un margen inferior al botón. Y de nuevo, Firefox realmente renderiza el texto entre los elementos del botón de una manera extraña. – Ferdy

+0

Se ve bien en 5 navegadores Lo probé: IE, FF, Chrome, Opera y Safari. IE y Opera aún extravían el texto cuando haces clic en el botón, que es un buen toque. ¿Por qué crees que el estilo está roto? ¿Usaste borde: 0 y margen: 0? – Anax

0

Solo utilizamos CSS para hacer unos botones muy bonitos. Funciona en IE6-8 y Firefox.

input.blueButton 
{ 
    background-image: url(../Images/blueButton.gif); 
    width: 80px; 
    height: 21px; 
    font-family: Arial; 
    font-size: 11px; 
    font-weight: bold; 
    color: White; 
    background-color: Transparent; 
    border-style: none; 
    cursor: pointer; 
    padding-bottom: 1px; 
    margin: 0 3px; 
} 
Cuestiones relacionadas