Me pregunto sobre el soporte para sombras internas específicas de los lados en css3.
Sé que esto funciona muy bien en navegadores compatibles.
div { box-shadow:inset 0px 1px 5px black; }
Solo tengo curiosidad por saber si hay una manera de lograr algo como:
div { box-shadow-top:inset 0px 1px 5px black; }
Respuestas:
Esto es lo que funcionó para mí:
box-shadow: inset 1px 4px 9px -6px;
Ejemplo: http://jsfiddle.net/23Egu/
fuente
box-shadow: inset 1px -4px 9px -6px;
una sombra inferior.box-shadow: inset 4px 1px 9px -6px;
derecho:box-shadow: inset -4px 1px 9px -6px;
No creo que realmente lo necesite
box-shadow-top
porque si estableceoffsetx
en 0 yoffsety
en cualquier valor positivo, solo la sombra restante está en la parte superior.Si desea tener una sombra en la parte superior y una sombra en la parte inferior, simplemente puede usar dos divs:
<div style="box-shadow:inset 0 1px 5px black;"> <div style="box-shadow:inset 0 -1px 5px black;"> some content </div> </div>
si desea deshacerse de la sombra en los lados, use en
rgba
lugar dehex
color y configure más grandeoffsety
:box-shadow:inset 0 5px 5px rgba(0,0,0,.5)
De esta manera, le da a la sombra más opacidad para que los lados permanezcan ocultos y con más compensación obtenga menos opacidad
ejemplo completo:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <style type="text/css"> body { background: #1C1C1C; } div { margin: 50px auto; width: 200px; height: 200px; background: #fff; -webkit-border-radius: 20px; -khtml-border-radiust: 20px; -moz-border-radius: 20px; -o-border-radius: 20px; border-radius: 20px; box-shadow:inset 0px 5px 5px rgba(0,0,0,.5); } div > div { background:none; box-shadow:inset 0px -5px 5px rgba(0,0,0,.5); } </style> </head> <body> <div><div></div></div> </body> </html>
fuente
box-shadow-top
que daría. editar Pero así es como yo también lo hago normalmente =)rgba
lugar dehex
color y establezca más grandeoffsety
: box-shadow: 0 5px 5px rgba (0,0,0, .5) de esta manera le da a la sombra más opacidad para que los lados permanezcan ocultos y con más compensación se obtiene menos opacidadbox-shadow:inset 0 1px 5px black, inset 0 -1px 5px black;
usando
:before
yafter
elementos con sombras regulares cortadasoverflow:hidden
en el cuadro principal como en este ejemplo: http://dabblet.com/gist/2585782CSS
/** * Top and Bottom inset shadow */ #element{ background-color: #E3F2F7; height: 55px; position: relative; /* to position pseudo absolute*/ overflow: hidden; /* to cut of overflow shadow*/ margin-top: 200px; } #element:before , #element:after{ content: "\0020"; display: block; position: absolute; width: 100%; height: 1px; /* when 0 no shadow is displayed*/ box-shadow: #696c5c 0 0 8px 0; } #element:before { top: -1px} /* because of height: 1*/ #element:after { bottom: -1px} /* because of height: 1*/
HTML
<div id="element"></div>
fuente
Puede utilizar un degradado de fondo para solucionarlo en la mayoría de los casos:
Ejemplo de SCSS (con brújula):
@include background(linear-gradient(top, #666 1%, #999 3%, #ddd 6%, #f6f6f6 9%, #f6f6f6 92%, #ddd 94%, #999 97%, #666 99%) );
fuente
box-shadow: inset 5px 0 5px -5px rgba(0,0,0,0.5),inset -5px 0 5px -5px rgba(0,0,0,0.5); -moz-box-shadow: inset 5px 0 5px -5px rgba(0,0,0,0.5),inset -5px 0 5px -5px rgba(0,0,0,0.5); -webkit-box-shadow: inset 5px 0 5px -5px rgba(0,0,0,0.5),inset -5px 0 5px -5px rgba(0,0,0,0.5); -o-box-shadow: inset 5px 0 5px -5px rgba(0,0,0,0.5),inset -5px 0 5px -5px rgba(0,0,0,0.5);
Esto funciona de maravilla :)
Aquí hay un codepen que lo ilustra: http://codepen.io/poopsplat/pen/cGBLy
fuente
Para la misma sombra pero solo en la parte superior:
box-shadow: inset 0px 6px 5px -5px black;
Para tener la sombra en una dirección, debe negar el parámetro "difuminar" con el parámetro "extender" y luego ajustar los parámetros "h-pos" y / o "v-pos" con este mismo valor. No funciona con borde opuesto o borde triple. Tienes que agregar una definición más.
Más ejemplos aquí: http://codepen.io/GBMan/pen/rVXgqP
fuente
No, no directamente, pero puede recortar las partes que no desea poniéndolas en un div con
overflow: hidden
:http://jsfiddle.net/Vehdg/
fuente
Yo solo tuve este problema. La solución que encontré fue con varias sombras de caja (una para cada lado en el que quieres tu sombra). Aquí está la definición:
box-shadow: none|h-offset v-offset blur spread color |inset|initial|inherit;
Así es como pensarlo:
Aquí puede ver mi estuche con sombra de caja en tres lados (izquierdo, superior, derecho y el inferior es del mismo color que el fondo para crear el efecto que quería: el lado izquierdo y el derecho van hasta el fondo ) https://codepen.io/cponofrei/pen/eMMyQX
fuente
Puede lograr una sombra interna de un solo lado configurando su div
overflow:hidden
y agregando elementos de sombra a lo largo de los bordes.Establezca una sombra interior en los bordes superior e inferior de una división:
HTML
<div id="innerShadow"> <div id="innerShadowTop"> Content... <div id="innerShadowBottom"> </div>
CSS
#innerShadow { position: relative; overflow: hidden; } #innerShadowTop { width: 100%; height: 1px; margin: 0; padding: 0; position: absolute; top: -1px; -moz-box-shadow: 0px 1px 6px 1px rgba(0, 0, 0, 0.65); -webkit-box-shadow: 0px 1px 6px 1px rgba(0, 0, 0, 0.65); -o-box-shadow: 0px 1px 6px 1px rgba(0, 0, 0, 0.65); box-shadow: 0px 1px 6px 1px rgba(0, 0, 0, 0.65); } #bannerShadowBottom { width: 100%; height: 1px; margin: 0; padding: 0; position: absolute; bottom: -1px; -moz-box-shadow: 0px -1px 6px 1px rgba(0, 0, 0, 0.65); -webkit-box-shadow: 0px -1px 6px 1px rgba(0, 0, 0, 0.65); -o-box-shadow: 0px -1px 6px 1px rgba(0, 0, 0, 0.65); box-shadow: 0px -1px 6px 1px rgba(0, 0, 0, 0.65); }
fuente
inset
y siendo creativo usando los valores de box-shadow css. Recuerde que puede apilar sombras de caja en el mismo elemento. Entonces, uno podría usar algo como @Jakobud dijo en un comentario anterior:box-shadow:inset 0 1px 5px black, inset 0 -1px 5px black;
Otra forma, que es solo un poco menos ofensiva que agregar marcas innecesarias, es usar:before
y:after
selectores. Pero, ¿por qué hacerlo si puede hacerlo seleccionando directamente y aplicando estilo al elemento original?box-shadow
es para los cuatro lados. No puedes cambiar eso (¿todavía?). Los 4 tamaños en labox-shadow
definición sonOffsetX
,offsetY
,Blur
ySpread
.fuente
Inset/Outset
,OffsetX
,OffsetY
,BlurRadius
,SpreadRadius
yColor
. Como han señalado otros, puede especificar un lado como estebox-shadow: inset 0 8px 6px -6px black;
Varias sombras de caja me sirvieron.
box-shadow: inset 0 -8px 4px 4px rgb(255,255,255), inset 0 2px 4px 0px rgba(50, 50, 50, 0.75);
http://jsfiddle.net/kk66f/
fuente