Bootstrap Break Out

by andyjh07

HTML

<script src="//code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<div class="container">
  <div class="row">
    <div class="col-md-12">
      Full Width
    </div>
  </div>
  <div class="row break-out">
    <div class="col-md-12">
      <div class="container">
        <div class="row">
          <div class="col-md-6">Break Out Half Width</div>
          <div class="col-md-6">Break Out Half Width</div>
        </div>
      </div>
    </div>
  </div>
  <div class="row">
    <div class="col-md-6">
      Left
    </div>
    <div class="col-md-6">
      Right
    </div>
  </div>
</div>

<div class="container">
  <div class="row">
    <div class="col-md-9">
      <div class="row break-out">
        <div class="col-md-12">
          Full Width Child
        </div>
      </div>
    </div>
    <div class="col-md-3">
      Sidebar
    </div>
  </div>

SCSS

div[class^="col"] {
  border: red solid 2px;
}

.break-out {
  background-color: lightgreen;
}

.break-out {
  width: 100vw;
  position: relative;
  left: calc(-1 * (100vw - 100%) / 2 + 15px);
  
  div[class^="col"] & {
    left: initial;
    width: calc(100% + 30px);
  }
}