<div class="container-wrapper">
<div class="container">
<div class="sidebar">
<h2>Sidebar</h2>
<p>Flexible width sidebar content</p>
</div>
<div class="main-content">
<div class="profile-card">
<div class="profile-image"></div>
<div class="profile-info">
<h3>John Doe</h3>
<p>123 Main St, Anytown, USA</p>
</div>
</div>
</div>
</div>
</div>
<div class="controls">
<div class="control-group">
<label for="container-width">Container Width:</label>
<input
type="range"
id="container-width"
min="300"
max="1200"
value="550"
/>
<span class="value-display" id="container-width-value">1200px</span>
</div>
<div class="control-group">
<label for="sidebar-basis">Sidebar Flex Basis:</label>
<input
type="range"
id="sidebar-basis"
min="100"
max="400"
value="100"
/>
<span class="value-display" id="sidebar-basis-value">200px</span>
</div>
<div class="control-group">
<label>Flex Grow (Main Content):</label>
<div class="radio-group">
<input type="radio" name="flex-grow" value="0" id="grow-0" checked />
<label for="grow-0">0</label>
<input type="radio" name="flex-grow" value="1" id="grow-1" />
<label for="grow-1">1</label>
</div>
</div>
<div class="control-group">
<label>Flex Shrink (Profile Image):</label>
<div class="radio-group">
<input type="radio" name="flex-shrink" value="0" id="shrink-0" />
<label for="shrink-0">0</label>
<input
type="radio"
name="flex-shrink"
value="1"
id="shrink-1"
checked
/>
<label for="shrink-1">1</label>
</div>
</div>
</div>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 20px;
box-sizing: border-box;
}
.container-wrapper {
max-width: 100%;
margin: 0 auto;
width: 550px;
}
.container {
display: flex;
border: 1px solid #ccc;
border-radius: 8px;
overflow: hidden;
margin-bottom: 20px;
}
.sidebar {
flex-basis: 100px;
flex-shrink: 0;
background-color: #f0f0f0;
padding: 20px;
color: #797979;
}
.main-content {
flex-grow: 1;
padding: 20px;
background-color: white;
}
.profile-card {
display: flex;
align-items: center;
background-color: #f9f9f9;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.profile-image {
width: 64px;
height: 64px;
border-radius: 50%;
background-color: #4a90e2;
margin-right: 20px;
flex-shrink: 0;
}
.profile-info h3 {
margin: 0 0 5px 0;
color: #0093d9;
}
.profile-info p {
margin: 0;
color: #666;
}
.controls {
margin-top: 20px;
}
.control-group {
margin-bottom: 15px;
}
label {
display: inline-block;
margin-right: 10px;
}
input[type="range"] {
width: 200px;
}
.value-display {
display: inline-block;
width: 50px;
text-align: right;
margin-left: 10px;
}
.radio-group {
display: inline-block;
}
.radio-group label {
margin-right: 5px;
}
function updateFlexProperties() {
var containerWrapper = document.querySelector(".container-wrapper");
var sidebar = document.querySelector(".sidebar");
var mainContent = document.querySelector(".main-content");
var profileImage = document.querySelector(".profile-image");
var containerWidth = document.getElementById("container-width").value;
var flexGrow = document.querySelector(
'input[name="flex-grow"]:checked'
).value;
var flexShrink = document.querySelector(
'input[name="flex-shrink"]:checked'
).value;
var sidebarBasis = document.getElementById("sidebar-basis").value;
containerWrapper.style.width = containerWidth + "px";
document.getElementById("container-width-value").textContent =
containerWidth + "px";
sidebar.style.flexBasis = sidebarBasis + "px";
document.getElementById("sidebar-basis-value").textContent =
sidebarBasis + "px";
mainContent.style.flexGrow = flexGrow;
profileImage.style.flexShrink = flexShrink;
}
document.querySelectorAll("input").forEach(function (elem) {
elem.addEventListener("input", updateFlexProperties);
});
updateFlexProperties();