2012-09-03 38 views
5

he estado tratando de hacer el forma blanca con un div:Hacer con triángulo inferior

http://sircat.net/joomla/sircat/mies/2.png

¿Cómo puedo obtener las formas diagonales de la parte inferior de la div?

Lo tengo para la div: ancho: 620px; altura: 440px; color de fondo: blanco;

gracias

Editar: solo olvidar el bg detrás de la div, quiero hacer el div con los bordes diagonales, no con la ayuda de la bg porque está en la capa superior

Respuesta

12

También puede utilizar las fronteras y el selector de seudo :after: http://jsfiddle.net/qQySU/

#pointed { 
    position: relative; 
    margin: 0 auto; 
    width: 200px; 
    height: 200px; 
    background-color: white; 
} 

#pointed:after, 
#pointed::after { 
    position: absolute; 
    top: 100%; 
    left: 50%; 
    margin-left: -50%; 
    content: ''; 
    width: 0; 
    height: 0; 
    border-top: solid 150px red; 
    border-left: solid 100px transparent; 
    border-right: solid 100px transparent; 
} 

He coloreado de la punta para facilitar la identificación de las fronteras. Juega alrededor del ancho del borde en las últimas 3 líneas para obtener la propina que deseas.

Editar .:

referencia para compability: http://caniuse.com/css-gencontent

Edición 2:

A cambio de la semántica, lo puede conseguir más crossbrowser puede colocar el stle en un interior elemento en lugar de en el pseudo selector :after.

+0

Esto le impediría continuar el texto sobre el triángulo. – Chris

+1

No si lo ubica fuera del contenido y usa otro contenedor encima para mantener el texto. – rcdmk

+1

esto es exactamente lo que estaba buscando, ¡gracias! – codek

5

más simple (menos cantidad de código) método: sólo tiene que utilizar un CSS linear-gradienthttp://dabblet.com/gist/3610406

HTML:

<div class='box'>Text goes here...</div> 

CSS:

.box { 
    width: 26em; 
    min-height: 31em; 
    padding: 1em; 
    outline: solid 1px lightblue; 
    margin: 0 auto; 
    background: linear-gradient(45deg, dimgrey 47%, black 50%, transparent 50%) 
        no-repeat 0 100%, 
       linear-gradient(-45deg, dimgrey 47%, black 50%, transparent 50%) 
        no-repeat 100% 100%;; 
    background-size: 50% 14em; 
} 

Mejor compatibilidad & verse mejor: Se puede usar un pseudo-element con un box-shadow: http://dabblet.com/gist/3610548

HTML:

<div class='box'>text goes here... hover me ;)</div> 

CSS:

html { background: darkgrey; } 
.box { 
    box-sizing: border-box; 
    position: relative; 
    width: 20em; 
    height: 20em; 
    padding: 1em; 
    margin: 3em auto 0; 
    background: white; 
} 
.box:before { 
    position: absolute; 
    right: 14.65%; /* 50% - 35.35% */ bottom: -35.35%; /* half of 70.71% */ 
    width: 70.71%; /* 100%*sqrt(2)/2 */ 
    height: 70.71%; 
    box-shadow: 2px 2px 1px dimgrey; 
    transform: rotate(45deg); 
    background: white; 
    content: ''; 
} 
.box:hover, .box:hover:before { 
    background: plum; 
} 
+2

** Gracias ** por presentarme [dabblet.com] (http://dabblet.com). No sé por qué alguien usaría [jsFiddle] (http://jsfiddle.net) para demostraciones exclusivas de CSS cuando hay una alternativa mucho más ordenada :) – Chris

Cuestiones relacionadas