Je veux créer une forme comme sur cette photo:
J'ai créé une forme de triangle comme sur cette photo et défini les marges pour qu'elles soient en haut à droite, mais je ne sais pas comment les faire apparaître divisées à partir du div gauche comme indiqué sur l'image.
Dois-je "couper" le div gauche pour conserver sa bordure grise et avoir l'air séparé du triangle vert?
Y a-t-il une idée de comment faire cela?
MODIFIER:
Je suggère, compte tenu du balisage suivant:
#box {
width: 10em;
height: 6em;
border: 4px solid #ccc;
background-color: #fff;
position: relative;
}
#box::before,
#box::after {
content: '';
position: absolute;
top: 0;
right: 0;
border-color: transparent;
border-style: solid;
}
#box::before {
border-width: 1.5em;
border-right-color: #ccc;
border-top-color: #ccc;
}
#box::after {
border-radius: 0.4em;
border-width: 1.35em;
border-right-color: #0c0;
border-top-color: #0c0;
}
<div id="box"></div>
Placez deux div absolument positionnés dans un div contenant avec position relative. Faites ensuite les triangles avec le triangle extérieur légèrement plus grand que le triangle intérieur. Positionnez ensuite ces éléments dans le coin supérieur droit du conteneur.
[~ # ~] html [~ # ~]
<div class="container">
<div class="inner-triangle"></div>
<div class="outer-triangle"></div>
</div>
[~ # ~] css [~ # ~]
.container{
border: 2px solid gray;
position: relative;
height: 100px;
}
.inner-triangle{
border-left: 20px solid transparent;
border-right: 20px solid green;
border-bottom: 20px solid transparent;
height: 0;
width: 0;
position: absolute;
right: 0px;
z-index: 2;
}
.outer-triangle{
border-left: 22px solid transparent;
border-right: 22px solid gray;
border-bottom: 22px solid transparent;
height: 0;
width: 0;
position: absolute;
right: 0px;
z-index: 1;
}
JS Fiddle: http://jsfiddle.net/u8euZ/1
Vous pouvez utiliser un pseudo-élément de rotation conjointement avec un overflow:hidden
sur le parent.
De là, vous pouvez positionner le pseudo en haut à droite en utilisant position:absolute
et vous devriez être prêt à partir!
div {
height: 250px;
width: 300px;
background: lightgray;
border-radius: 10px;
border: 5px solid dimgray;
position: relative;
overflow: hidden;
margin: 30px auto;
}
div:before {
content: "";
position: absolute;
top: -60px;
right: -60px;
height: 100px;
width: 100px;
background: green;
border: 5px solid dimgray;
transform: rotate(45deg);
}
/***********FOR DEMO ONLY*******************/
html, body {
margin:0;
padding:0;height:100%;
vertical-align:top;overflow:hidden;
background: rgb(79, 79, 79);
background: -moz-radial-gradient(center, ellipse cover, rgba(79, 79, 79, 1) 0%, rgba(34, 34, 34, 1) 100%);
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, rgba(79, 79, 79, 1)), color-stop(100%, rgba(34, 34, 34, 1)));
background: -webkit-radial-gradient(center, ellipse cover, rgba(79, 79, 79, 1) 0%, rgba(34, 34, 34, 1) 100%);
background: -o-radial-gradient(center, ellipse cover, rgba(79, 79, 79, 1) 0%, rgba(34, 34, 34, 1) 100%);
background: -ms-radial-gradient(center, ellipse cover, rgba(79, 79, 79, 1) 0%, rgba(34, 34, 34, 1) 100%);
background: radial-gradient(ellipse at center, rgba(79, 79, 79, 1) 0%, rgba(34, 34, 34, 1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f', endColorstr='#222222', GradientType=1);
}
<div></div>