Как создать форму треугольника в верхнем правом углу другого div, чтобы выглядеть разделенным по границе
Я хочу создать форму, как на этой картинке:
![shape]()
Я создал форму треугольника, как на этом рисунке, и задал поля в верхнем правом углу, но я не знаю, как заставить его выглядеть разделенным на левый div, как показано на рисунке.
Должен ли я "вырезать" левый div, чтобы он оставался серой границей и выглядел отделенным от зеленого треугольника?
Есть ли идеи, как это сделать?
РЕДАКТИРОВАТЬ:
- Я использую фиксированную навигационную панель на странице, поэтому, когда я прокручиваю, если div - позиция: абсолютная, панель навигации идет за div.
- пространство между зеленым треугольником и остальным div должно быть прозрачным, потому что я использую изображение в качестве фона страницы
Ответы
Ответ 1
Я бы предложил, учитывая следующую наценку:
#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>
Ответ 2
Поместите два абсолютно позиционированных divs в контейнер div с относительным положением. Затем сделайте треугольники с внешним треугольником немного большим, чем внутренний треугольник. Затем поместите эти элементы в верхний правый угол контейнера.
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
Ответ 3
Вы можете использовать псевдо-элемент rotate в сочетании с overflow:hidden
для родителя.
Отсюда вы можете позиционировать псевдо в верхнем правом position:absolute
используя position:absolute
и вы должны быть хорошими!
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>