entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Diseñar botones con CSS

Hola, estoy diseñando unos botones y tengo un problemita, ¿como hago para que cuando pulse un botón, no se desplace los otros botones?

Podeis ver el codigo y el funcionamiento en codepen:

http://codepen.io/bichomen/pen/kkZxyw

Saludos!!

1 Respuesta

3votos

Leonardo-Tadei Puntos227320

Hola @bichomen,

tu problema está en la definición de estilos de :active, en la línea que dice:

border: 1px solid #BDBDBD;

Cómo el botón no tiene borde, al darle uno cuando está activo, se desplazan los demás ya que ahora el botón será 2px más alto (1px por el borde superior y 1px por el borde inferior)

Podés solucionarlo agregando al botón un borde, por ejemplo transparente, para que cuando esté activo solo se le cambie el color, pero el borde ya exista:

border: 1px solid transparent;

Te dejo un enlace al código.

Saludos cordiales!

1voto

bichomen comentado

Hola @Leonardo-Tadei Muchas gracias, ese era el efecto que quería, pero para redondearlo del todo, falta un pequeño detalle, que al presionar los botones las letras también se desplacen y no se queden fijas, lo que he he hecho a sido aplicar la propiedad transform: translate(x,y) a las subclases de a, pero no consigo recrear el efecto:

http://codepen.io/bichomen/pen/kkZxyw

2votos

Leonardo-Tadei comentado

Bueno... no es que falte un pequeño detalle: esa cuestión no es parte de tu pregunta ;-)

Para poder conseguir el efecto que querés, la estructura HTML que estás planteando lo hace muy complejo. El motivo es que el texto del botón está innecesariamente dentro de un DIV, que es un elemento de bloque, y si bien es posible que en un navegador moderno responda al :active, un DIV no debe responder ni a un :hover no :visited que son propiedades de los A.

Lo más simple sería que los botones sean solamente un A, y que las clases que le pongas sean las que lo hagan ver como un botón y con ese comportamiento.

Mientras, en este enlace tenés una posible solución: en el :active del DIV ponerle un padding-left para que al hacer click se desplace.

Saludos cordiales!

1voto

bichomen comentado

Hola @Leonardo-Tadei siguiendo tu consejo, he metido todo en una classe aplicada al a pero tengo que crear igualmente los divs para que les de el tamaño adecuado, aunque vacíos, haciendo esto funciona el desplazamiento de las letras, pero volvemos al problema original, se desplazan el resto de botones :-S

Botones con estilo

1voto

Leonardo-Tadei comentado

Hola @bichomen,

los DIV adentro del A son innecesarios, de veras.

Para que tengan el tamaño que quieras, bastaría con ponerles en la clase display: block; y luego darles ancho y alto.

Publicá tu último código con los DIV sacados y vemos cómo ayudarte a definir el CSS.

Saludos

1voto

bichomen comentado

Hola @Leonardo-Tadei ,

creo que no me expresado bien, los divs, ya están fuera del A:

<div><a href="#" class="boton">
    Botón 1
 </a></div> 

Código en Codepen

1voto

Leonardo-Tadei comentado

Te expresaste bien.
Los DIV son innecesarios
Saludos cordiales

1voto

bichomen comentado

Gracias, tenias razón con los divs, el problema del desplazamiento hacía abajo es que yo pongo un padding-top: 2px; para que la letra tenga un pequeño efecto, no solo que se desplace hacia la derecha sino hacia abajo, el efecto queda más elegante, pero eso provoca el desplazamiento de los demás botones.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta