<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;
}

// Add event listeners
document.querySelectorAll("input").forEach(function (elem) {
  elem.addEventListener("input", updateFlexProperties);
});

// Initial update
updateFlexProperties();

External CSS

  1. https://codepen.io/joshcrain/pen/KwQpoE.css

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js