Чтобы добиться плавного увеличения ширины блока одновременно с увеличением его высоты при использовании метода `slideToggle`, вы можете использовать CSS-переходы для изменения свойств ширины и высоты. Ваша задача будет заключаться в том, чтобы задать начальные и конечные размеры блока, а затем позволить CSS плавно изменять эти размеры.
Вот пример, как это можно сделать:
### HTML
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<link rel="stylesheet" href="style.css">
<title>Document</title>
</head>
<body>
<button class="toggle-button">Toggle</button>
<div class="box">
<div class="body">
<div class="text-box">
<div class="text">Lorem ipsum dolor sit, amet consectetur adipisicing elit. Eius, adipisci?</div>
</div>
</div>
</div>
<script src="js.js"></script>
</body>
</html>
```
### CSS
```css
html, body {
height: 100%;
}
body {
display: flex;
justify-content: center;
align-items: center;
position: relative;
}
* {
margin: 0;
padding: 0;
}
.box {
clip-path: polygon(45% 0, 100% 0, 100% 100%, 0% 100%);
shape-outside: polygon(45% 0, 100% 0, 100% 100%, 0% 100%);
position: absolute;
bottom: 50%;
left: 50%;
transform: translate(-50%, 100%);
display: flex;
justify-content: flex-end;
overflow: hidden;
transition: height 0.5s ease, width 0.5s ease;
width: 0;
height: 0;
}
.body {
min-height: 150px;
min-width: 200px;
width: 100%;
height: 100%;
background-color: lightblue;
display: flex;
justify-content: center;
align-items: center;
opacity: 0;
transition: opacity 0.5s ease;
}
.box.active {
width: 200px; /* Можно задать желаемую конечную ширину */
height: 150px; /* Можно задать желаемую конечную высоту */
}
.box.active .body {
opacity: 1;
}
```
### JavaScript (jQuery)
```javascript
$(document).ready(function() {
$('.toggle-button').on('click', function() {
$('.box').toggleClass('active');
});
});
```
### Описание решения:
1. **CSS transition**: Мы добавляем CSS-переходы для свойств `width`, `height` и `opacity`, чтобы обеспечить плавный переход при изменении размеров блока.
2. **Класс `active`**: Когда пользователь кликает по кнопке, класс `active` добавляется к элементу `.box`, что активирует переходы по ширине и высоте, а также делает текст видимым.
3. **Изменение ширины и высоты**: Внутри класса `.box.active` вы задаете конечные размеры для вашей ширины и высоты.
Таким образом, при каждом нажатии на кнопку блок будет плавно увеличиваться в размерах и демонстрировать текст внутри, при этом его ширина будет пропорционально увеличиваться с высотой.