Вот еще один подход, использующий CSS transform: skew(45deg)
для создания эффекта углового угла. Сама форма включает в себя три элемента (1 реальный и 2 псевдоэлемента) следующим образом:
div
имеет overflow: hidden
и создает левую границу. :before
, который составляет 20% высоты родительского контейнера и имеет привязку к нему. Этот элемент создает границу на верхней и наклонной границе справа. :after
, который составляет 80% высоты родителя (в основном, оставшейся высоты) и производит нижняя граница, оставшаяся часть правой границы. Полученный результат реагирует, создает прозрачный разрез сверху и поддерживает прозрачные фоны.
div {
position: relative;
height: 100px;
width: 200px;
border-left: 2px solid beige;
overflow: hidden;
}
div:after,
div:before {
position: absolute;
content: '';
width: calc(100% - 2px);
left: 0px;
z-index: -1;
}
div:before {
height: 20%;
top: 0px;
border: 2px solid beige;
border-width: 2px 3px 0px 0px;
transform: skew(45deg);
transform-origin: right bottom;
}
div:after {
height: calc(80% - 4px);
bottom: 0px;
border: 2px solid beige;
border-width: 0px 2px 2px 0px;
}
.filled:before, .filled:after {
background-color: beige;
}
/* Just for demo */
div {
float: left;
color: beige;
padding: 10px;
transition: all 1s;
margin: 10px;
}
div:hover {
height: 200px;
width: 300px;
}
div.filled{
color: black;
}
body{
background-image: radial-gradient(circle, #3F9CBA 0%, #153346 100%);
}
Some content
Some content
Ниже приведен другой способ создания эффекта углового угла с помощью linear-gradient
фоновые изображения. Используется комбинация трех градиентных изображений (приведенных ниже):
Полученный результат реагирует, производит прозрачный разрез и не требует никаких дополнительных элементов (реальных или псевдо) , Недостаток заключается в том, что этот подход будет работать только тогда, когда фон (заливка) является сплошным цветом, и очень трудно создавать границы (но все же возможно, как видно из фрагмента).
.cut-corner {
height: 100px;
width: 200px;
background-image: linear-gradient(to bottom left, transparent 50%, beige 50%), linear-gradient(beige, beige), linear-gradient(beige, beige);
background-size: 25px 25px, 100% 100%, 100% 100%;
background-position: 100% 0%, -25px 0%, 100% 25px;
background-repeat: no-repeat;
}
.filled {
background-image: linear-gradient(black, black), linear-gradient(black, black), linear-gradient(black, black), linear-gradient(black, black), linear-gradient(to bottom left, transparent calc(50% - 1px), black calc(50% - 1px), black calc(50% + 1px), beige calc(50% + 1px)), linear-gradient(beige, beige), linear-gradient(beige, beige);
background-size: 2px 100%, 2px 100%, 100% 2px, 100% 2px, 25px 25px, 100% 100%, 100% 100%;
background-position: 0% 0%, 100% 25px, -25px 0%, 0px 100%, 100% 0%, -25px 0%, 100% 25px;
}
/* Just for demo */
*{
box-sizing: border-box;
}
div {
float: left;
color: black;
padding: 10px;
transition: all 1s;
margin: 10px;
}
div:hover {
height: 200px;
width: 300px;
}
body{
background-image: radial-gradient(circle, #3F9CBA 0%, #153346 100%);
}
Some content
Some content
Да, может, но до кучи памяти.
var a = {};
var i = 0;
while(true){
a[i] = null;
i++;
}
ФАТАЛЬНАЯ ОШИБКА: CALL_AND_RETRY_LAST Распределение не удалось - куча JavaScript не хватает памяти
blockquote>Так что это зависит от размера вашей памяти.