Создание маски с помощью CSS может быть выполнено с использованием свойства `mask-image`, которое позволяет применять градиенты или изображения для создания маски. Однако, чтобы адаптировать форму под различное количество контента, нужно немного поиграть с другими свойствами CSS.
Если `clip-path` не подходит из-за ограничений на скругление углов, можно попробовать следующие подходы:
### 1. Использование полупрозрачного фона с градиентом
Можно создать форму с использованием градиента на фоне и элемента с белым фоном.
```css
.container {
position: relative;
padding: 20px; /* Отступ для внутреннего контента */
background: linear-gradient(to bottom, transparent 50%, white); /* Половина прозрачная, вторая половина белая */
border-radius: 20px; /* Скругляем углы */
}
.content {
position: relative; /* Для правильного позиционирования */
z-index: 1; /* Поверх градиента */
}
```
```html
<div class="container">
<div class="content">
<h1>Ваш текст</h1>
<p>Дополнительный текст...</p>
</div>
</div>
```
### 2. Использование псевдоэлементов
С помощью псевдоэлемента `::before` или `::after` можно создать форму маски, которая будет повторять высоту содержимого.
```css
.container {
position: relative;
padding: 20px;
background-color: rgba(255, 255, 255, 0.8);
border-radius: 20px;
overflow: hidden; /* Скрыть переполнение от псевдоэлемента */
}
.container::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url('your-image-url') no-repeat center center;
background-size: cover;
border-radius: 20px; /* Скругляем углы */
z-index: 0; /* Обязательно за содержимым */
}
.content {
position: relative;
z-index: 1;
}
```
### 3. Flexbox/Grid
Если необходима более сложная компоновка, можно использовать Flexbox или Grid, чтобы управлять расположением элементов. Например, можно сделать контейнер с фоном, который будет занимать всю необходимую высоту.
```css
.wrapper {
display: flex;
flex-direction: column;
justify-content: flex-start; /* Или center, или любая другая настройка */
}
.container {
background: url('your-image-url');
border-radius: 20px;
padding: 20px;
margin-bottom: 20px; /* Отступ под контент */
}
```
Таким образом, можно создать гибкую и адаптивную маску, которая будет изменяться под количество контента. Выбор подхода зависит от конкретной задачи и структуры вашего HTML.