2011-03-16 55 views
11

necesito para crear un triángulo con una gota de sombra usando html simple y css. Respondido por otra pregunta de stackoverflow, pude crear el triángulo con bordes en inglete. Básicamente creo 1 lado de una caja con una muy amplia frontera y el lado cercano, con una amplia frontera transparente:cuadro de CSS sombra alrededor del triángulo

div.triangle { 
    border-bottom : 60px solid transparent; 
    border-left : 60px solid black; 
} 

funciona muy bien, pero cuando intento de aplicar una caja de sombra de la sombra va alrededor de la plaza de cerramiento ... no es el triángulo:

div.triangle { 
    border-bottom : 60px solid transparent; 
    border-left : 60px solid black; 
    -webkit-box-shadow: 0 0 10px black; 
} 

¿Cómo consigo un triángulo utilizando sólo css/html con una gota de sombra?

+0

Mi sugerencia: Utilice una imagen. No creo que esto sea posible. –

+0

@Drackir, espero no tener que ... –

+2

Bueno, sería más simple y compatible con varios navegadores. :) –

Respuesta

6

Parece imposible. Definitivamente usando una imaginacion es una solucion mucho mas facil. He hecho algo parecido a un triángulo :) http://jsfiddle.net/5dw8M/109/. Lo siento, no puedo dejar un comentario debajo de tu publicación. Puede ser que sirva como una inspiración para alguien;

+1

Tu triángulo es realmente un cuarto de círculo ... para mis propósitos no puedo usar eso. –

+0

Creé algo basado en esta respuesta, así que le doy crédito por esto –

+0

@at: ¿qué hiciste? Me interesaría saber – Marcel

4

¿Qué hay de poner otro div con propiedades similares y jugar con las posiciones? algo así como http://jsfiddle.net/eveevans/JWGTw/

+0

El problema allí es que la sombra paralela tendrá que ser completamente nítida, no hay confusión con la sombra en absoluto. –

+0

Esto funcionó para mí, un poco complicado, pero al menos ahora puedo tener una sombra transparente. las imágenes simplemente no pueden hacer eso. – deweydb

1

¿<canvas> con una PNG de respaldo sería una opción?

Demostración: jsfiddle.net/Marcel/3dbzm/1

+0

No quería usar lienzo, pero parece que esta puede ser mi única opción. –

1

crear un duplicado de ese triángulo, decolorar, darle un valor de índice z negativa usando css y, finalmente, fuera del centro con posicionamiento CSS.

div.triangle { 
z-index:-1; 
position:relative; 
bottom:-16px; 
right:-16px; 
} 
+0

¿No es esto lo mismo que la respuesta de eveevans? –

4

Usted puede utilizar la propiedad "transformar" para girar un cuadrado de 45 grados y ocultar la mitad de ella, pero no todos los navegadores apoyarlo, por lo que tendrá un repliegue.

.triangle-with-shadow { 
    width: 100px; 
    height: 50px; 
    position: relative; 
    overflow: hidden; 
    box-shadow: 0 16px 10px -15px rgba(0,0,0,0.5); 
} 
.triangle-with-shadow:after { 
    content: ""; 
    position: absolute; 
    width: 50px; 
    height: 50px; 
    background: #999; 
    transform: rotate(45deg); 
    -ms-transform:rotate(45deg); /* IE 9 */ 
    -moz-transform:rotate(45deg); /* Firefox */ 
    -webkit-transform:rotate(45deg); /* Safari and Chrome */ 
    -o-transform:rotate(45deg); /* Opera */ 
    top: 25px; 
    left: 25px; 
    box-shadow: -1px -1px 10px 0px rgba(0,0,0,0.5); 
}​ 

Demo on jsfiddle.

levantado de this CSS Tricks page con modificaciones.

+0

pero puede editar la altura del triángulo con esta solución. esto es solo para el triángulo equilátero. – yosafatade

+0

@yosafatade Puedes probar 'scale (2, 1)' por ejemplo para estirar el triángulo ...? – Druzion

0

Probablemente la mejor opción es usar filter:

filter: drop-shadow(0 0 10px black); 
Cuestiones relacionadas