NOTA: Sugiero revisar la respuesta de @ Hamish a continuación; no implica el "enmascaramiento" imperfecto en la solución descrita aquí.
Puedes acercarte con múltiples sombras de caja; uno para cada lado
box-shadow: 12px 0 15px -4px rgba(31, 73, 125, 0.8), -12px 0 8px -4px rgba(31, 73, 125, 0.8);
http://jsfiddle.net/YJDdp/
Editar
Agregue 2 sombras de cuadro más para la parte superior e inferior al frente para enmascarar el sangrado.
box-shadow: 0 9px 0px 0px white, 0 -9px 0px 0px white, 12px 0 15px -4px rgba(31, 73, 125, 0.8), -12px 0 15px -4px rgba(31, 73, 125, 0.8);
http://jsfiddle.net/LE6Lz/
No estaba satisfecho con la parte superior e inferior redondeadas de la sombra presente en la solución de Deefour, así que creé la mía.
inset
box-shadow
crea una agradable sombra uniforme con la parte superior e inferior cortadas.Para usar este efecto en los lados de su elemento, cree dos pseudo elementos
:before
y:after
colóquelos absolutamente a los lados del elemento original.Editar
Dependiendo de su diseño, puede usarlo
clip-path
, como se muestra en la respuesta de @ Luke. Sin embargo, tenga en cuenta que, en muchos casos, esto todavía hace que la sombra se reduzca en la parte superior e inferior, como puede ver en este ejemplo:fuente
:after
necesidadestop: 0
también.display: inline-block
a pseudo clases para que tu ejemplo funcione. En definitiva: buena solución. +1not
requiere<div>
elementos auxiliares . :-)Prueba esto, está funcionando para mí:
fuente
Enfoque clásico: propagación negativa
CSS box-shadow utiliza 4 parámetros: h-shadow, v-shadow, blur, spread:
La sombra v ( verical) se establece en 0.
El parámetro de desenfoque agrega el efecto de degradado, pero también agrega una pequeña sombra en los bordes verticales (del que queremos deshacernos).
negativo propagación reduce la sombra en todos los bordes: puedes jugar con ella tratando de eliminar esa pequeña sombra vertical sin afectar demasiado a la de los lados (es más fácil para sombras pequeñas, de 5 a 10 píxeles).
Aquí un ejemplo de violín .
Segundo enfoque: div absoluto en el costado
Agregue un div vacío en su elemento y estilícelo con un posicionamiento absoluto para que no afecte el contenido del elemento.
Aquí el violín con un ejemplo de sombra izquierda.
Tercero: sombra de enmascaramiento
Si tiene un fondo fijo, puede ocultar el efecto de sombra lateral con dos sombras de enmascaramiento que tengan el mismo color de fondo y desenfoque = 0, por ejemplo:
He agregado nuevamente una extensión negativa (-3px) a la sombra negra, para que no se extienda más allá de las esquinas.
Aquí el violín .
fuente
Esto funciona bien para todos los navegadores:
fuente
MANIFESTACIÓN
Debes usar el múltiplo
box-shadow;
. La propiedad insertada hace que se vea bien y por dentrofuente
Otra forma es con:
overflow-y:hidden
en el padre con relleno.http://jsfiddle.net/qqx221c8/
fuente
clip-path
ahora es (2020) la mejor manera que he encontrado para lograr sombras de caja en lados específicos de elementos, especialmente cuando el efecto requerido es una sombra de "corte limpio" en bordes particulares , como este:... a diferencia de una sombra atenuada / reducida / adelgazante como esta:
Simplemente aplique el siguiente CSS al elemento en cuestión:
Dónde:
Apx
establece la visibilidad de sombra para el borde superiorBpx
DerechaCpx
fondoDpx
izquierdaIngrese un valor de 0 para cualquier borde donde la sombra debe estar oculta y un valor negativo (el mismo que el resultado combinado del radio de desenfoque + valores de dispersión -
Xpx + Ypx
) a cualquier borde donde se debe mostrar la sombra.fuente
clip-path
ejemplo? Hay 2 fragmentos de código. El primero usaclip-path
y tiene un corte completamente limpio sin "esquinas superiores e inferiores curvadas", muy parecido a su solución (pero con mucho menos CSS requerido). El segundo fragmento de código es un ejemplo simplemente para comparación: muchas soluciones dan como resultado una sombra de cuadro dispersa que a menudo no es lo que la gente quiere lograr.box-shadow
propiedad a algo así0 0 10px 5px rgba(0,0,0,0.75);
. Tenga en cuenta elspread
valor agregado y reducidoblur-radius
.Funciona de mi lado. Espero que te ayude.
fuente
BONITA SOMBRA EN EL LADO IZQUIERDO Y DERECHO PARA DIVS, IMÁGENES O CONTENIDOS INTERNOS
Para una bonita sombra insertada en los lados derecho e izquierdo de las imágenes, o cualquier otro contenido, úselo de esta manera
*** El índice z: -1 hace un buen truco al mostrar imágenes u objetos internos con inserciones
fuente
En algunas situaciones, puede ocultar la sombra en otro contenedor. Por ejemplo, si hay un DIV encima y debajo del DIV con la sombra, puede usarlo
position: relative; z-index: 1;
en los DIV circundantes.fuente
Solo para horizontal, puede engañar a la sombra de cuadro utilizando el desbordamiento en su div principal:
fuente
Otra idea podría ser crear un pseudo elemento oscuro y borroso, eventualmente con transparencia para imitar la sombra. Hazlo con un poco menos de altura y más ancho ig
fuente
Puedes usar 1 div dentro de eso para "borrar" la sombra:
Puedes jugar con "height:%;" y "ancho:%;" para borrar la sombra que quieres.
fuente
Por alguna razón, las respuestas proporcionadas aquí simplemente no funcionarían en mi caso. Entonces, me puse creativo. Aquí hay una nueva solución para todos los que utiliza
linear-gradient()
en lugar debox-shadow
.Aunque no estoy buscando discutir el punto, esta no es realmente una "caja" que usted (nosotros) estamos tratando de formar, así que supongo que podría decirse que
box-shadow
no tenía sentido para empezar.fuente
Traté de copiar el bootstrap shadow-sm justo en el lado derecho, aquí está mi código:
fuente