Al hacer clic, estoy agregando, 1px borde a div, por lo que el tamaño de Div aumenta en 2px X 2px. No quiero aumentar el tamaño del div. ¿Hay alguna forma simple de hacerlo?
Explicación detallada desordenada En
realidad, estoy agregando DIV con flotante: izquierda (mismo tamaño, como iconos) a un contenedor-div, por lo que todos se apilan uno tras otro, y cuando (el ancho del contenedor-div es 300px) no queda espacio en ancho por lo que los DIV secundarios aparecen en la siguiente fila, por lo que es similar al catálogo, pero debido a que el tamaño del DIV seleccionado solo aumenta, el DIV debajo del DIV seleccionado va a la derecha y crea un espacio vacío debajo del DIV seleccionado.
EDITAR:
disminución de la altura / anchura en la selección, pero cómo aumentarla nuevamente. Usando un marco de terceros, así que no tenga eventos cuando DIV pierda la selección.
Respuestas:
La propiedad css del borde aumentará el tamaño "externo" de todos los elementos, excepto tds en las tablas. Puede obtener una idea visual de cómo funciona esto en Firebug ( descontinuado ), en la pestaña de diseño html->.
Solo como ejemplo, un div con un ancho y una altura de 10px y un borde de 1px, tendrá un ancho y una altura externos de 12px.
Para su caso, para que parezca que el borde está en el "interior" del div, en la clase CSS seleccionada, puede reducir el ancho y la altura del elemento duplicando el tamaño de su borde, o puede hacer lo mismo para Los elementos acolchados.
P.ej:
fuente
outline
o un borde con el mismo color que el fondo (y cambiar su color a otro cuando se selecciona) es más flexible.border-color: transparent
Esto también es útil en este escenario. le permite establecer bordes sin cambiar el ancho div
Tomado de http://css-tricks.com/box-sizing/
fuente
configure un borde antes de hacer clic para que sea del mismo color que el fondo.
Luego, cuando haga clic, simplemente cambie el color de fondo y el ancho no cambiará.
fuente
border-color: transparent
Otra buena solución es usar en
outline
lugar deborder
. Agrega un borde sin afectar el modelo de caja. Esto funciona en IE8 +, Chrome, Firefox, Opera, Safari.( https://stackoverflow.com/a/8319190/2105930 )
fuente
box-shadow
por mi otra respuesta en una pregunta similar. No tiene el mismo soporte de navegador, pero eso es un problema menor en estos días.box-shadow
puede soportar un borde lateral, una solución perfecta.border-color: transparent
tiene una mejor compatibilidad entre navegadores --- mira mi respuesta ...Intenta cambiar
border
aoutline
:fuente
Después de haber usado muchas de estas soluciones, creo que usar el truco de configuración
border-color: transparent
es el más flexible y ampliamente compatible:Por qué es mejor:
outline
, aún puede especificar, por ejemplo, los bordes superior e inferior por separadofuente
transparent
esta es la necesidad!Prueba esto
fuente
Usualmente uso relleno para resolver este problema. El relleno se agregará cuando desaparezca el borde y se eliminará cuando aparezca el borde. Código de muestra:
Ver mi código de muestra completo en JSFiddle: https://jsfiddle.net/3t7vyebt/4/
fuente
Simplemente disminuya el ancho y la altura por el doble del ancho del borde
fuente
Puedes hacer algunas cosas elegantes con sombras insertadas. Ejemplo para poner un borde en la parte inferior de un elemento sin cambiar su tamaño:
fuente
A veces no desea que la altura o el ancho se vean afectados sin establecer explícitamente tampoco. En ese caso, encuentro útil usar pseudo elementos.
También puede hacer mucho más con el pseudo elemento, por lo que este es un patrón bastante poderoso.
fuente
width
yheight
y agregando una propiedadbottom
yleft
además detop
yleft
, todo lo cual debería establecerse en el ancho opuesto de El borde original (en mi caso -1px). Gran truco sin embargoIntente disminuir el tamaño del margen cuando aumente el borde
fuente
Necesitaba poder "bordear" cualquier elemento agregando una clase y no afectar sus dimensiones. Una buena solución para mí fue usar box-shadow. Pero en algunos casos el efecto no fue visible debido a otros hermanos. Así que combiné tanto la típica sombra de caja como la inserción de sombra de caja. El resultado es un aspecto de borde sin cambiar ninguna dimensión.
Valores separados por comas. Aquí hay un ejemplo simple:
jsfiddle
¡Ajústalo a tu look preferido y listo!
fuente
También podemos usar la función css calc ()
restando 2px para bordes
fuente
fuente
Puede crear el elemento con borde con el mismo color de fondo, luego, cuando desee que se muestre el borde, simplemente cambie su color.
fuente
border-color: transparent
ul li a{border-bottom:2px solid transparent;} ul li a:hover{border-bottom:2px solid red;}
En caso de que el contenido de tu
div
se muestre dinámicamente y quieras establecer su altura, puedes usar un simple truco conoutline
:Ejemplo aquí: https://codepen.io/Happysk/pen/zeQzaZ
fuente
Puedes probar un recuadro sombreado
algo como esto: box-shadow: inserto 0px -5px 0px 0px #fff
agrega un borde blanco de 5px a la parte inferior del elemento sin aumentar el tamaño
fuente