由于下面的内容,粘性导航栏停止工作

Sticky navigation bar stops working due to content underneath

我有这个带 position: sticky 的导航栏,但是当它到达侧导航和页面内容的顶部时它停止了。我无法将 position 更改为 fixed,因为这样上面的 .ad 将不可见。我已经添加了属于侧面导航和内容的脚本。 如何让我的导航栏继续,越过内容和侧面导航?

function sortBooks(upDown) {

        var columns = document.getElementsByClassName("column")

        function pricesToArray(columns) {
            var prices = [];
            for (var index = 0; index < columns.length; index++) {
                var price = columns[index].querySelector('.price').innerText;
                var priceInt = price.substr(1, price.length).replace(',', '.');
                prices[index] = parseFloat(priceInt, 10);
            }
            return prices;
        }

        var prices = pricesToArray(columns);

        function selectionSort(arr, upDown) {
            var minIdx, temp,
                len = arr.length;
            for (var i = 0; i < len; i++) {
                minIdx = i;
                for (var j = i + 1; j < len; j++) {
                    if (upDown) {
                        if (arr[j] < arr[minIdx]) {
                            minIdx = j;
                        }
                    } else {
                        if (arr[j] > arr[minIdx]) {
                            minIdx = j;
                        }
                    }
                }
                temp = arr[i];
                arr[i] = arr[minIdx];
                //replace columns
                replaceColumns(i,minIdx);
                arr[minIdx] = temp;
            }
            return arr;
        }

        function replaceColumns(i,minIdx) {
            var temporaryColumn = columns[i].innerHTML;
            columns[i].innerHTML = columns[minIdx].innerHTML;
            columns[minIdx].innerHTML = temporaryColumn;
        }

        var pricesSorted = selectionSort(prices,upDown);

    }

function sortList() {
  var list, i, switching, b, shouldSwitch;
  list = document.getElementById("id01");
  switching = true;
  /* Make a loop that will continue until
  no switching has been done: */
  while (switching) {
    // start by saying: no switching is done:
    switching = false;
    b = list.getElementsByTagName("h4");
    // Loop through all list-items:
    for (i = 0; i < (b.length - 1); i++) {
      // start by saying there should be no switching:
      shouldSwitch = false;
      /* check if the next item should
      switch place with the current item: */
      if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) {
        /* if next item is alphabetically
        lower than current item, mark as a switch
        and break the loop: */
        shouldSwitch = true;
        break;
      }
    }
    if (shouldSwitch) {
      /* If a switch has been marked, make the switch
      and mark the switch as done: */
      b[i].parentNode.parentNode.parentNode.insertBefore(b[i + 1].parentNode.parentNode, b[i].parentNode.parentNode);
      switching = true;
    }
  }
}


/* Loop through all dropdown buttons to toggle between hiding and showing its dropdown content - This allows the user to have multiple dropdowns without any conflict */
var dropdown = document.getElementsByClassName("dropdown-btn");
var i;

for (i = 0; i < dropdown.length; i++) {
  dropdown[i].addEventListener("click", function() {
  this.classList.toggle("active");
  var dropdownContent = this.nextElementSibling;
  if (dropdownContent.style.display === "block") {
  dropdownContent.style.display = "none";
  } else {
  dropdownContent.style.display = "block";
  }
  });
}

var coll = document.getElementsByClassName("collapsible2");
var i;

for (i = 0; i < coll.length; i++) {
  coll[i].addEventListener("click", function() {
    this.classList.toggle("active");
    var content = this.nextElementSibling;
    if (content.style.maxHeight){
      content.style.maxHeight = null;
    } else {
      content.style.maxHeight = content.scrollHeight + "px";
    }
  });
}  

filterSelection("all")
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("column");
  if (c == "all") c = "";
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}

function w3AddClass(element, name) {
  var i, arr1, arr2;
  arr1 = element.className.split(" ");
  arr2 = name.split(" ");
  for (i = 0; i < arr2.length; i++) {
    if (arr1.indexOf(arr2[i]) == -1) {element.className += " " + arr2[i];}
  }
}

function w3RemoveClass(element, name) {
  var i, arr1, arr2;
  arr1 = element.className.split(" ");
  arr2 = name.split(" ");
  for (i = 0; i < arr2.length; i++) {
    while (arr1.indexOf(arr2[i]) > -1) {
      arr1.splice(arr1.indexOf(arr2[i]), 1);     
    }
  }
  element.className = arr1.join(" ");
}


// Add active class to the current button (highlight it)
var btnContainer = document.getElementById("myBtnContainer");
var btns = btnContainer.getElementsByClassName("btn");
for (var i = 0; i < btns.length; i++) {
  btns[i].addEventListener("click", function(){
    var current = document.getElementsByClassName("activee");
    current[0].className = current[0].className.replace(" activee", "");
    this.className += " activee";
  });
}  


function myFunction() {
  var x = document.getElementById("myTopnav");
  if (x.className === "navbar") {
    x.className += " responsive";
  } else {
    x.className = "navbar";
  }
}
body {
    margin: 0;
    background-color: #fcf3e3;
    }
* {box-sizing: border-box;}
.navbar {
    list-style-type: none;
    background-color: #f9eedd;
    width: 100%;
    margin: 0;
    padding: 0 20%;
    z-index: 10;
    position: sticky;
    top: 0;
    height: 7vmin;
    }
.navbar li a{
    display: block;
    color: #8e8275;
    text-decoration: none;
    padding: 1.5vmin 1vmin 1.2vmin 1vmin;
    margin: 1.3vmin;
    }
.navbar li.links {float: left;}
.navbar li.rechts {float: right;}
.navbar li a:hover {color: #252118;}
.navbar .dropdown-content {
    display: none;
    position: absolute;
    background-color: #fef6e9;
    min-width: 13vmin;
    z-index: 10;
    top: 7vmin;
    margin: 0 2vmin;
    }
.navbar .dropdown-content a {
    text-align: left;
    margin: 0;
    padding: 1.5vmin 1.3vmin;
    }
.navbar li.icon {display: none;}
.ad {
    background-color: #fbf4e9;
    text-align: center;  
    font-size: 1.5vmin;
    padding: .5vmin;
    }
.webshoptekst {
    margin: 5vmin 10% 0 10%;
    }
.row {margin-left: 27vmin;}
.column {
    float: left;
    display: none;
    padding: 0 1.5vmin 1.5vmin 0;
    width: 33.3%;
    }
.kaartje {
    background-color: #FFFF;
    padding: 1.2vmin;
    text-align: center;
    max-width: 20vmin;
    height: 40vmin;
    position: relative;
    }
.kaartje div {height: 18vmin;}  
.kaartje div > img {height: 100%;} 
h4 {
    margin: 0;
    font-size: 1.9vmin;
    min-height: 6vmin;
    }
h6 {
    margin: 0;
    font-size: 1.4vmin;
    font-weight: normal;
    }
.price {
    color: #777676;
    margin-top: .8vmin;
    font-size: 1.4vmin;
    }
.winkelwagen{
    bottom: 0;
    position: absolute;
    left: 0;
    padding: 1.2vmin;
    width: 100%;
    }
.kaartje button {
    border: none;
    outline: none;
    padding: 1vmin;
    color: #FFFF;
    background-color: #000;
    cursor: pointer;
    font-size: 1vmin;
    }
.kaartje button:hover {opacity: 0.7;}
.show {display: block;}

.sidenav {
    width: 25vmin;
    float: left;
    box-shadow: 0px 1px 3px 0px #c4b29c;
    }
.dropdown-btn {
    padding: .6vmin .8vmin .6vmin 1.6vmin;
    font-size: 2.5vmin;
    color: #655f5a;
    border: none;
    background-color: #f5e8d2;
    cursor: pointer;
    outline: none;
    width: 100%;
    text-align:left;
    }
.dropdown-container {
    display: none;
    background-color: #efe6d8;
    padding-left: .8vmin;
    }

.collapsible2 {
    outline: none;
    border: none;
    color: #655f5a;
    background-color: #efe6d8;
    cursor: pointer;
    width: 24vmin;
    font-size: 2.4vmin;
    text-align: left;
    padding: .6vmin .8vmin .6vmin 1.6vmin;
    }
.dropdown-btn:hover, .collapsible2:hover {opacity: 0.7;}
.collapsible2:after {
    content: '[=11=]2B';
    float: right;
    }
.collapsible2 .active:after {content: "12";}
.ccontent {
    overflow: hidden;
    max-height: 0;
    transition: max-height 0.2s cubic-bezier(0, 0, 0.2, 1);
    padding-left: .8vmin;
    }
.btn {
    display: block;
    position: relative;
    padding-left: 3.5vmin;
    margin-bottom: 1.2vmin;
    cursor: pointer;
    font-size: 1.8vmin;
    }
.btn input {display: none;}
.checkmark {
    position: absolute;
    left: 0;
    height: 2vmin;
    width: 2vmin;
    background-color: #eee;
    border-radius: 50%;
    box-shadow: inset 0 0 4px 0px #b5a99b;
    }
.btn:hover input ~ .checkmark {background-color: #dcdcdc;}
.btn.activee input:checked ~ .checkmark {background-color: #cccccc;}
.checkmark:after {
    content: "";
    position: absolute;
    display: none;
    }
.btn input:checked ~ .checkmark:after {display: block;}
.btn .checkmark:after {
    top: 0.68vmin;
    left: 0.68vmin;
    width: 0.64vmin;
    height: 0.64vmin;
    border-radius: 50%;
    background: #98948e;
    }
<div class="ad">Lorem ipsum dolor sit amet, consec</div>

    <ul class="navbar" id="myTopnav">
    <li class="links"><a href="index.html">adipiscing</a></li>
    <li class="dropdown links"><a href="javascript:void(0)">elit <i class="fa fa-caret-down"></i></a>
       <div class="dropdown-content">
        <a href="javascript:void(0)">Loren</a>
        <a href="javascript:void(0)">ipsum</a></div>      </li>
    <li class="rechts"><a href="over-mij.html">sed</a></li>
    <li class="rechts"><a href="webshop.html" class="active">do</a></li>
    <li class="icon"><a href="javascript:void(0);" onclick="myFunction()"><i class="fa fa-bars"></i></a></li>
    </ul>

     <div class="webshoptekst">  
      <h1>do</h1>
       <p>eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<div class="sidenav">      
  <button class="dropdown-btn"><i class="fa fa-bars"></i> Filters</button>
  <div class="dropdown-container" id="myBtnContainer">


<button type="button" class="collapsible2">Sorteren op</button>
               <div class="ccontent">
                <label class="btn activee" onclick="filterSelection('all')">Toon alles<input type="radio" name="radio"><span class="checkmark"></span></label>
                <label class="btn" onclick="sortList()">Alfabetisch<input type="radio" name="radio"><span class="checkmark"></span></label>
                <label class="btn" onclick="sortBooks(true)">Prijs oplopend<input type="radio" name="radio"><span class="checkmark"></span></label>
                <label class="btn" onclick="sortBooks(false)">Prijs aflopend<input type="radio" name="radio"><span class="checkmark"></span></label>
               </div>      

<button type="button" class="collapsible2">Talen</button>
               <div class="ccontent">
                <label class="btn" onclick="filterSelection('Nederlands')">Dutch<input type="radio" name="radio"><span class="checkmark"></span></label>
                <label class="btn" onclick="filterSelection('Engels')">Engels<input type="radio" name="radio"><span class="checkmark"></span></label>  
               </div>

  </div>
</div>  


<div class="row" id="id01">

  <div class="column English">
    <div class="kaartje">
      <div><img src="webshopOT.jpg" alt="Oliver Twist"></div>
      <h4>Oliver Twist</h4>
      <h6>Charles Dickens</h6>
      <p class="price">€9,99</p>
      <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
    </div>
  </div>  

  <div class="column English">
    <div class="kaartje">
      <div><img src="webshopEAP.jpg" alt="The Complete Short Stories"></div>
      <h4>The Complete Short Stories</h4>
      <h6>Edgar Allan Poe</h6>
      <p class="price">€7,98</p>
      <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
    </div>
  </div>  

  <div class="column Nederlands">
    <div class="kaartje">
      <div><img src="webshopRJ.jpg" alt="Romeo en Julia"></div>
      <h4>Romeo en Julia</h4>
      <h6>William Shakespeare</h6>
      <p class="price">€14,55</p>
      <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
    </div>
  </div>  

  <div class="column Nederlands">
    <div class="kaartje">
      <div><img src="webshopHP1.jpg" alt="Harry Potter en de Steen der Wijzen"></div>
      <h4>Harry Potter en de Steen der Wijzen</h4>
      <h6>J. K. Rowling</h6>
      <p class="price">€16,58</p>
      <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
    </div>
  </div> 

  <div class="column Nederlands">
    <div class="kaartje">
      <div><img src="webshopHP2.jpg" alt="Harry Potter en de Geheime Kamer"></div>
      <h4>Harry Potter en de Geheime Kamer</h4>
      <h6>J. K. Rowling</h6>
      <p class="price">€17,19</p>
      <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
    </div>
  </div> 

  <div class="column Nederlands">
    <div class="kaartje">
      <div><img src="webshopHP3.jpg" alt="Harry Potter en de Gevangene van Azkaban"></div>
      <h4>Harry Potter en de Gevangene van Azkaban</h4>
      <h6>J. K. Rowling</h6>
      <p class="price">€17,97</p>
      <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
    </div>
  </div> 

  <div class="column Nederlands">
    <div class="kaartje">
      <div><img src="webshopHP4.jpg" alt="Harry Potter en de Vuurbeker"></div>
      <h4>Harry Potter en de Vuurbeker</h4>
      <h6>J. K. Rowling</h6>
      <p class="price">€18,43</p>
      <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
    </div>
  </div> 

  <div class="column English">
    <div class="kaartje">
      <div><img src="webshopABP.jpg" alt="All the Bright Places"></div>
      <h4>All the Bright Places</h4>
      <h6>Jennifer Niven</h6>
      <p class="price">€13,29</p>
      <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
    </div>
  </div>  

  <div class="column English">
    <div class="kaartje">
      <div><img src="webshopTF.jpg" alt="The Fault in Our Stars"></div>
      <h4>The Fault in our Stars</h4>
      <h6>John Green</h6>
      <p class="price">€11,55</p>
      <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
    </div>
  </div>  

</div>
</div>

由于<div class="row">的内容都是浮动的,所以没有高度。将 overflow: auto; 添加到它,您的导航将正确粘贴。

function sortBooks(upDown) {

  var columns = document.getElementsByClassName("column")

  function pricesToArray(columns) {
    var prices = [];
    for (var index = 0; index < columns.length; index++) {
      var price = columns[index].querySelector('.price').innerText;
      var priceInt = price.substr(1, price.length).replace(',', '.');
      prices[index] = parseFloat(priceInt, 10);
    }
    return prices;
  }

  var prices = pricesToArray(columns);

  function selectionSort(arr, upDown) {
    var minIdx, temp,
      len = arr.length;
    for (var i = 0; i < len; i++) {
      minIdx = i;
      for (var j = i + 1; j < len; j++) {
        if (upDown) {
          if (arr[j] < arr[minIdx]) {
            minIdx = j;
          }
        } else {
          if (arr[j] > arr[minIdx]) {
            minIdx = j;
          }
        }
      }
      temp = arr[i];
      arr[i] = arr[minIdx];
      //replace columns
      replaceColumns(i, minIdx);
      arr[minIdx] = temp;
    }
    return arr;
  }

  function replaceColumns(i, minIdx) {
    var temporaryColumn = columns[i].innerHTML;
    columns[i].innerHTML = columns[minIdx].innerHTML;
    columns[minIdx].innerHTML = temporaryColumn;
  }

  var pricesSorted = selectionSort(prices, upDown);

}

function sortList() {
  var list, i, switching, b, shouldSwitch;
  list = document.getElementById("id01");
  switching = true;
  /* Make a loop that will continue until
  no switching has been done: */
  while (switching) {
    // start by saying: no switching is done:
    switching = false;
    b = list.getElementsByTagName("h4");
    // Loop through all list-items:
    for (i = 0; i < (b.length - 1); i++) {
      // start by saying there should be no switching:
      shouldSwitch = false;
      /* check if the next item should
      switch place with the current item: */
      if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) {
        /* if next item is alphabetically
        lower than current item, mark as a switch
        and break the loop: */
        shouldSwitch = true;
        break;
      }
    }
    if (shouldSwitch) {
      /* If a switch has been marked, make the switch
      and mark the switch as done: */
      b[i].parentNode.parentNode.parentNode.insertBefore(b[i + 1].parentNode.parentNode, b[i].parentNode.parentNode);
      switching = true;
    }
  }
}


/* Loop through all dropdown buttons to toggle between hiding and showing its dropdown content - This allows the user to have multiple dropdowns without any conflict */
var dropdown = document.getElementsByClassName("dropdown-btn");
var i;

for (i = 0; i < dropdown.length; i++) {
  dropdown[i].addEventListener("click", function() {
    this.classList.toggle("active");
    var dropdownContent = this.nextElementSibling;
    if (dropdownContent.style.display === "block") {
      dropdownContent.style.display = "none";
    } else {
      dropdownContent.style.display = "block";
    }
  });
}

var coll = document.getElementsByClassName("collapsible2");
var i;

for (i = 0; i < coll.length; i++) {
  coll[i].addEventListener("click", function() {
    this.classList.toggle("active");
    var content = this.nextElementSibling;
    if (content.style.maxHeight) {
      content.style.maxHeight = null;
    } else {
      content.style.maxHeight = content.scrollHeight + "px";
    }
  });
}

filterSelection("all")

function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("column");
  if (c == "all") c = "";
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}

function w3AddClass(element, name) {
  var i, arr1, arr2;
  arr1 = element.className.split(" ");
  arr2 = name.split(" ");
  for (i = 0; i < arr2.length; i++) {
    if (arr1.indexOf(arr2[i]) == -1) {
      element.className += " " + arr2[i];
    }
  }
}

function w3RemoveClass(element, name) {
  var i, arr1, arr2;
  arr1 = element.className.split(" ");
  arr2 = name.split(" ");
  for (i = 0; i < arr2.length; i++) {
    while (arr1.indexOf(arr2[i]) > -1) {
      arr1.splice(arr1.indexOf(arr2[i]), 1);
    }
  }
  element.className = arr1.join(" ");
}


// Add active class to the current button (highlight it)
var btnContainer = document.getElementById("myBtnContainer");
var btns = btnContainer.getElementsByClassName("btn");
for (var i = 0; i < btns.length; i++) {
  btns[i].addEventListener("click", function() {
    var current = document.getElementsByClassName("activee");
    current[0].className = current[0].className.replace(" activee", "");
    this.className += " activee";
  });
}


function myFunction() {
  var x = document.getElementById("myTopnav");
  if (x.className === "navbar") {
    x.className += " responsive";
  } else {
    x.className = "navbar";
  }
}
body {
  margin: 0;
  background-color: #fcf3e3;
}

* {
  box-sizing: border-box;
}

.navbar {
  list-style-type: none;
  background-color: #f9eedd;
  box-shadow: 0px 5px 5px -6px #c4b29c;
  font-family: Georgia, "Times New Roman", Serif;
  width: 100%;
  margin: 0;
  padding: 0 20%;
  z-index: 10;
  position: sticky;
  top: 0;
  height: 7vmin;
}

.navbar li a {
  display: block;
  color: #8e8275;
  text-decoration: none;
  transition: 0.3s;
  letter-spacing: .1vmin;
  font-size: 1.6vmin;
  padding: 1.5vmin 1vmin 1.2vmin 1vmin;
  margin: 1.3vmin;
}

.navbar li.links {
  float: left;
}

.navbar li.rechts {
  float: right;
}

.navbar li a:hover {
  color: #252118;
}

.navbar li a.active,
.navbar .dropdown-content a.active {
  text-decoration: underline
}

.navbar .dropdown-content a.active {
  background-color: #f3e9da;
}

.navbar .dropdown-content {
  display: none;
  position: absolute;
  background-color: #fef6e9;
  min-width: 13vmin;
  box-shadow: 0px 2px 5px .1px rgba(0, 0, 0, 0.2);
  z-index: 10;
  top: 7vmin;
  margin: 0 2vmin;
}

.navbar .dropdown-content a {
  text-align: left;
  margin: 0;
  padding: 1.5vmin 1.3vmin;
}

.navbar .dropdown-content a:hover {
  background-color: #f7eedc;
}

.navbar .dropdown:hover .dropdown-content {
  display: block;
}

.navbar li.icon {
  display: none;
}

.ad {
  background-color: #fbf4e9;
  text-align: center;
  font-size: 1.5vmin;
  padding: .5vmin;
}

.webshoptekst {
  letter-spacing: .06vmin;
  font-family: Arial, Verdana, Sans-serif;
  margin: 5vmin 10% 0 10%;
}

.row {
  margin-left: 27vmin;
  overflow: auto;
}

.column {
  float: left;
  display: none;
  padding: 0 1.5vmin 1.5vmin 0;
  width: 33.3%;
}

.kaartje {
  background-color: #FFFF;
  padding: 1.2vmin;
  box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.2);
  text-align: center;
  max-width: 20vmin;
  height: 40vmin;
  position: relative;
}

.kaartje div {
  height: 18vmin;
}

.kaartje div>img {
  height: 100%;
}

h4 {
  margin: 0;
  font-size: 1.9vmin;
  min-height: 6vmin;
}

h6 {
  margin: 0;
  font-size: 1.4vmin;
  font-weight: normal;
}

.price {
  color: #777676;
  margin-top: .8vmin;
  font-size: 1.4vmin;
}

.winkelwagen {
  bottom: 0;
  position: absolute;
  left: 0;
  padding: 1.2vmin;
  width: 100%;
}

.kaartje button {
  border: none;
  outline: none;
  padding: 1vmin;
  color: #FFFF;
  background-color: #000;
  cursor: pointer;
  font-size: 1vmin;
}

.kaartje button:hover {
  opacity: 0.7;
}

.show {
  display: block;
}

.sidenav {
  width: 25vmin;
  float: left;
  box-shadow: 0px 1px 3px 0px #c4b29c;
}

.dropdown-btn {
  padding: .6vmin .8vmin .6vmin 1.6vmin;
  font-size: 2.5vmin;
  color: #655f5a;
  border: none;
  background-color: #f5e8d2;
  cursor: pointer;
  outline: none;
  width: 100%;
  text-align: left;
}

.dropdown-container {
  display: none;
  background-color: #efe6d8;
  padding-left: .8vmin;
}

.collapsible2 {
  outline: none;
  border: none;
  color: #655f5a;
  background-color: #efe6d8;
  cursor: pointer;
  width: 24vmin;
  font-size: 2.4vmin;
  text-align: left;
  padding: .6vmin .8vmin .6vmin 1.6vmin;
}

.dropdown-btn:hover,
.collapsible2:hover {
  opacity: 0.7;
}

.collapsible2:after {
  content: '[=11=]2B';
  float: right;
}

.collapsible2 .active:after {
  content: "12";
}

.ccontent {
  overflow: hidden;
  max-height: 0;
  transition: max-height 0.2s cubic-bezier(0, 0, 0.2, 1);
  padding-left: .8vmin;
}

.btn {
  display: block;
  position: relative;
  padding-left: 3.5vmin;
  margin-bottom: 1.2vmin;
  cursor: pointer;
  font-size: 1.8vmin;
}

.btn input {
  display: none;
}

.checkmark {
  position: absolute;
  left: 0;
  height: 2vmin;
  width: 2vmin;
  background-color: #eee;
  border-radius: 50%;
  box-shadow: inset 0 0 4px 0px #b5a99b;
}

.btn:hover input~.checkmark {
  background-color: #dcdcdc;
}

.btn.activee input:checked~.checkmark {
  background-color: #cccccc;
}

.checkmark:after {
  content: "";
  position: absolute;
  display: none;
}

.btn input:checked~.checkmark:after {
  display: block;
}

.btn .checkmark:after {
  top: 0.68vmin;
  left: 0.68vmin;
  width: 0.64vmin;
  height: 0.64vmin;
  border-radius: 50%;
  background: #98948e;
}
<div class="ad">Lorem ipsum dolor sit amet, consec</div>

<ul class="navbar" id="myTopnav">
  <li class="links"><a href="index.html">adipiscing</a></li>
  <li class="dropdown links"><a href="javascript:void(0)">elit <i class="fa fa-caret-down"></i></a>
    <div class="dropdown-content">
      <a href="javascript:void(0)">Loren</a>
      <a href="javascript:void(0)">ipsum</a></div>
  </li>
  <li class="rechts"><a href="over-mij.html">sed</a></li>
  <li class="rechts"><a href="webshop.html" class="active">do</a></li>
  <li class="icon"><a href="javascript:void(0);" onclick="myFunction()"><i class="fa fa-bars"></i></a></li>
</ul>

<div class="webshoptekst">
  <h1>do</h1>
  <p>eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
  <div class="sidenav">
    <button class="dropdown-btn"><i class="fa fa-bars"></i> Filters</button>
    <div class="dropdown-container" id="myBtnContainer">


      <button type="button" class="collapsible2">Sorteren op</button>
      <div class="ccontent">
        <label class="btn activee" onclick="filterSelection('all')">Toon alles<input type="radio" name="radio"><span class="checkmark"></span></label>
        <label class="btn" onclick="sortList()">Alfabetisch<input type="radio" name="radio"><span class="checkmark"></span></label>
        <label class="btn" onclick="sortBooks(true)">Prijs oplopend<input type="radio" name="radio"><span class="checkmark"></span></label>
        <label class="btn" onclick="sortBooks(false)">Prijs aflopend<input type="radio" name="radio"><span class="checkmark"></span></label>
      </div>

      <button type="button" class="collapsible2">Talen</button>
      <div class="ccontent">
        <label class="btn" onclick="filterSelection('Nederlands')">Dutch<input type="radio" name="radio"><span class="checkmark"></span></label>
        <label class="btn" onclick="filterSelection('Engels')">Engels<input type="radio" name="radio"><span class="checkmark"></span></label>
      </div>

    </div>
  </div>


  <div class="row" id="id01">

    <div class="column English">
      <div class="kaartje">
        <div><img src="webshopOT.jpg" alt="Oliver Twist"></div>
        <h4>Oliver Twist</h4>
        <h6>Charles Dickens</h6>
        <p class="price">€9,99</p>
        <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
      </div>
    </div>

    <div class="column English">
      <div class="kaartje">
        <div><img src="webshopEAP.jpg" alt="The Complete Short Stories"></div>
        <h4>The Complete Short Stories</h4>
        <h6>Edgar Allan Poe</h6>
        <p class="price">€7,98</p>
        <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
      </div>
    </div>

    <div class="column Nederlands">
      <div class="kaartje">
        <div><img src="webshopRJ.jpg" alt="Romeo en Julia"></div>
        <h4>Romeo en Julia</h4>
        <h6>William Shakespeare</h6>
        <p class="price">€14,55</p>
        <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
      </div>
    </div>

    <div class="column Nederlands">
      <div class="kaartje">
        <div><img src="webshopHP1.jpg" alt="Harry Potter en de Steen der Wijzen"></div>
        <h4>Harry Potter en de Steen der Wijzen</h4>
        <h6>J. K. Rowling</h6>
        <p class="price">€16,58</p>
        <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
      </div>
    </div>

    <div class="column Nederlands">
      <div class="kaartje">
        <div><img src="webshopHP2.jpg" alt="Harry Potter en de Geheime Kamer"></div>
        <h4>Harry Potter en de Geheime Kamer</h4>
        <h6>J. K. Rowling</h6>
        <p class="price">€17,19</p>
        <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
      </div>
    </div>

    <div class="column Nederlands">
      <div class="kaartje">
        <div><img src="webshopHP3.jpg" alt="Harry Potter en de Gevangene van Azkaban"></div>
        <h4>Harry Potter en de Gevangene van Azkaban</h4>
        <h6>J. K. Rowling</h6>
        <p class="price">€17,97</p>
        <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
      </div>
    </div>

    <div class="column Nederlands">
      <div class="kaartje">
        <div><img src="webshopHP4.jpg" alt="Harry Potter en de Vuurbeker"></div>
        <h4>Harry Potter en de Vuurbeker</h4>
        <h6>J. K. Rowling</h6>
        <p class="price">€18,43</p>
        <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
      </div>
    </div>

    <div class="column English">
      <div class="kaartje">
        <div><img src="webshopABP.jpg" alt="All the Bright Places"></div>
        <h4>All the Bright Places</h4>
        <h6>Jennifer Niven</h6>
        <p class="price">€13,29</p>
        <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
      </div>
    </div>

    <div class="column English">
      <div class="kaartje">
        <div><img src="webshopTF.jpg" alt="The Fault in Our Stars"></div>
        <h4>The Fault in our Stars</h4>
        <h6>John Green</h6>
        <p class="price">€11,55</p>
        <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
      </div>
    </div>

  </div>
</div>

更好的解决方案在浮动内容后添加<div style="clear: both;"></div>。没有添加不必要的滚动条。在 float 之后放置 clear 的好习惯。

function sortBooks(upDown) {

    var columns = document.getElementsByClassName("column")

    function pricesToArray(columns) {
        var prices = [];
        for (var index = 0; index < columns.length; index++) {
            var price = columns[index].querySelector('.price').innerText;
            var priceInt = price.substr(1, price.length).replace(',', '.');
            prices[index] = parseFloat(priceInt, 10);
        }
        return prices;
    }

    var prices = pricesToArray(columns);

    function selectionSort(arr, upDown) {
        var minIdx, temp,
            len = arr.length;
        for (var i = 0; i < len; i++) {
            minIdx = i;
            for (var j = i + 1; j < len; j++) {
                if (upDown) {
                    if (arr[j] < arr[minIdx]) {
                        minIdx = j;
                    }
                } else {
                    if (arr[j] > arr[minIdx]) {
                        minIdx = j;
                    }
                }
            }
            temp = arr[i];
            arr[i] = arr[minIdx];
            //replace columns
            replaceColumns(i, minIdx);
            arr[minIdx] = temp;
        }
        return arr;
    }

    function replaceColumns(i, minIdx) {
        var temporaryColumn = columns[i].innerHTML;
        columns[i].innerHTML = columns[minIdx].innerHTML;
        columns[minIdx].innerHTML = temporaryColumn;
    }

    var pricesSorted = selectionSort(prices, upDown);

}

function sortList() {
    var list, i, switching, b, shouldSwitch;
    list = document.getElementById("id01");
    switching = true;
    /* Make a loop that will continue until
    no switching has been done: */
    while (switching) {
        // start by saying: no switching is done:
        switching = false;
        b = list.getElementsByTagName("h4");
        // Loop through all list-items:
        for (i = 0; i < (b.length - 1); i++) {
            // start by saying there should be no switching:
            shouldSwitch = false;
            /* check if the next item should
            switch place with the current item: */
            if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) {
                /* if next item is alphabetically
                lower than current item, mark as a switch
                and break the loop: */
                shouldSwitch = true;
                break;
            }
        }
        if (shouldSwitch) {
            /* If a switch has been marked, make the switch
            and mark the switch as done: */
            b[i].parentNode.parentNode.parentNode.insertBefore(b[i + 1].parentNode.parentNode, b[i].parentNode.parentNode);
            switching = true;
        }
    }
}


/* Loop through all dropdown buttons to toggle between hiding and showing its dropdown content - This allows the user to have multiple dropdowns without any conflict */
var dropdown = document.getElementsByClassName("dropdown-btn");
var i;

for (i = 0; i < dropdown.length; i++) {
    dropdown[i].addEventListener("click", function () {
        this.classList.toggle("active");
        var dropdownContent = this.nextElementSibling;
        if (dropdownContent.style.display === "block") {
            dropdownContent.style.display = "none";
        } else {
            dropdownContent.style.display = "block";
        }
    });
}

var coll = document.getElementsByClassName("collapsible2");
var i;

for (i = 0; i < coll.length; i++) {
    coll[i].addEventListener("click", function () {
        this.classList.toggle("active");
        var content = this.nextElementSibling;
        if (content.style.maxHeight) {
            content.style.maxHeight = null;
        } else {
            content.style.maxHeight = content.scrollHeight + "px";
        }
    });
}

filterSelection("all")
function filterSelection(c) {
    var x, i;
    x = document.getElementsByClassName("column");
    if (c == "all") c = "";
    for (i = 0; i < x.length; i++) {
        w3RemoveClass(x[i], "show");
        if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
    }
}

function w3AddClass(element, name) {
    var i, arr1, arr2;
    arr1 = element.className.split(" ");
    arr2 = name.split(" ");
    for (i = 0; i < arr2.length; i++) {
        if (arr1.indexOf(arr2[i]) == -1) { element.className += " " + arr2[i]; }
    }
}

function w3RemoveClass(element, name) {
    var i, arr1, arr2;
    arr1 = element.className.split(" ");
    arr2 = name.split(" ");
    for (i = 0; i < arr2.length; i++) {
        while (arr1.indexOf(arr2[i]) > -1) {
            arr1.splice(arr1.indexOf(arr2[i]), 1);
        }
    }
    element.className = arr1.join(" ");
}


// Add active class to the current button (highlight it)
var btnContainer = document.getElementById("myBtnContainer");
var btns = btnContainer.getElementsByClassName("btn");
for (var i = 0; i < btns.length; i++) {
    btns[i].addEventListener("click", function () {
        var current = document.getElementsByClassName("activee");
        current[0].className = current[0].className.replace(" activee", "");
        this.className += " activee";
    });
}


function myFunction() {
    var x = document.getElementById("myTopnav");
    if (x.className === "navbar") {
        x.className += " responsive";
    } else {
        x.className = "navbar";
    }
}
body {
    margin: 0;
    background-color: #fcf3e3;
    }
* {box-sizing: border-box;}
.navbar {
    list-style-type: none;
    background-color: #f9eedd;
    box-shadow: 0px 5px 5px -6px #c4b29c;
    font-family: Georgia, "Times New Roman", Serif;
    width: 100%;
    margin: 0;
    padding: 0 20%;
    z-index: 10;
    position: sticky;
    top: 0;
    height: 7vmin;
    }
.navbar li a{
    display: block;
    color: #8e8275;
    text-decoration: none;
    transition: 0.3s;
    letter-spacing: .1vmin;
    font-size: 1.6vmin;
    padding: 1.5vmin 1vmin 1.2vmin 1vmin;
    margin: 1.3vmin;
    }
.navbar li.links {float: left;}
.navbar li.rechts {float: right;}
.navbar li a:hover {color: #252118;}
.navbar li a.active, .navbar .dropdown-content a.active {text-decoration: underline}
.navbar .dropdown-content a.active {background-color:#f3e9da;}
.navbar .dropdown-content {
    display: none;
    position: absolute;
    background-color: #fef6e9;
    min-width: 13vmin;
    box-shadow: 0px 2px 5px .1px rgba(0,0,0,0.2);
    z-index: 10;
    top: 7vmin;
    margin: 0 2vmin;
    }
.navbar .dropdown-content a {
    text-align: left;
    margin: 0;
    padding: 1.5vmin 1.3vmin;
    }
.navbar .dropdown-content a:hover {background-color: #f7eedc;}
.navbar .dropdown:hover .dropdown-content {display: block;}
.navbar li.icon {display: none;}
.ad {
    background-color: #fbf4e9;
    text-align: center;  
    font-size: 1.5vmin;
    padding: .5vmin;
    }
.webshoptekst {
    letter-spacing: .06vmin;
    font-family: Arial, Verdana, Sans-serif;
    margin: 5vmin 10% 0 10%;
    }
.row {margin-left: 27vmin;}
.column {
    float: left;
    display: none;
    padding: 0 1.5vmin 1.5vmin 0;
  width: 33.3%;
    }
.kaartje {
    background-color: #FFFF;
    padding: 1.2vmin;
    box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.2);
    text-align: center;
    max-width: 20vmin;
    height: 40vmin;
    position: relative;
    }
.kaartje div {height: 18vmin;}  
.kaartje div > img {height: 100%;} 
h4 {
    margin: 0;
    font-size: 1.9vmin;
    min-height: 6vmin;
    }
h6 {
    margin: 0;
    font-size: 1.4vmin;
    font-weight: normal;
    }
.price {
    color: #777676;
    margin-top: .8vmin;
    font-size: 1.4vmin;
    }
.winkelwagen{
    bottom: 0;
    position: absolute;
    left: 0;
    padding: 1.2vmin;
    width: 100%;
    }
.kaartje button {
    border: none;
    outline: none;
    padding: 1vmin;
    color: #FFFF;
    background-color: #000;
    cursor: pointer;
    font-size: 1vmin;
    }
.kaartje button:hover {opacity: 0.7;}
.show {display: block;}

.sidenav {
    width: 25vmin;
    float: left;
    box-shadow: 0px 1px 3px 0px #c4b29c;
    }
.dropdown-btn {
    padding: .6vmin .8vmin .6vmin 1.6vmin;
    font-size: 2.5vmin;
    color: #655f5a;
    border: none;
    background-color: #f5e8d2;
    cursor: pointer;
    outline: none;
    width: 100%;
    text-align:left;
    }
.dropdown-container {
    display: none;
    background-color: #efe6d8;
    padding-left: .8vmin;
    }

.collapsible2 {
    outline: none;
    border: none;
    color: #655f5a;
    background-color: #efe6d8;
    cursor: pointer;
    width: 24vmin;
    font-size: 2.4vmin;
    text-align: left;
    padding: .6vmin .8vmin .6vmin 1.6vmin;
    }
.dropdown-btn:hover, .collapsible2:hover {opacity: 0.7;}
.collapsible2:after {
    content: '[=11=]2B';
    float: right;
    }
.collapsible2 .active:after {content: "12";}
.ccontent {
    overflow: hidden;
    max-height: 0;
    transition: max-height 0.2s cubic-bezier(0, 0, 0.2, 1);
    padding-left: .8vmin;
    }
.btn {
    display: block;
    position: relative;
    padding-left: 3.5vmin;
    margin-bottom: 1.2vmin;
    cursor: pointer;
    font-size: 1.8vmin;
    }
.btn input {display: none;}
.checkmark {
    position: absolute;
    left: 0;
    height: 2vmin;
    width: 2vmin;
    background-color: #eee;
    border-radius: 50%;
    box-shadow: inset 0 0 4px 0px #b5a99b;
    }
.btn:hover input ~ .checkmark {background-color: #dcdcdc;}
.btn.activee input:checked ~ .checkmark {background-color: #cccccc;}
.checkmark:after {
    content: "";
    position: absolute;
    display: none;
    }
.btn input:checked ~ .checkmark:after {display: block;}
.btn .checkmark:after {
    top: 0.68vmin;
    left: 0.68vmin;
    width: 0.64vmin;
    height: 0.64vmin;
    border-radius: 50%;
    background: #98948e;
    }
    <div class="ad">Lorem ipsum dolor sit amet, consec</div>

    <ul class="navbar" id="myTopnav">
        <li class="links"><a href="index.html">adipiscing</a></li>
        <li class="dropdown links"><a href="javascript:void(0)">elit <i class="fa fa-caret-down"></i></a>
            <div class="dropdown-content">
                <a href="javascript:void(0)">Loren</a>
                <a href="javascript:void(0)">ipsum</a></div>
        </li>
        <li class="rechts"><a href="over-mij.html">sed</a></li>
        <li class="rechts"><a href="webshop.html" class="active">do</a></li>
        <li class="icon"><a href="javascript:void(0);" onclick="myFunction()"><i class="fa fa-bars"></i></a></li>
    </ul>

    <div class="webshoptekst">
        <h1>do</h1>
        <p>eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
        <div class="sidenav">
            <button class="dropdown-btn"><i class="fa fa-bars"></i> Filters</button>
            <div class="dropdown-container" id="myBtnContainer">


                <button type="button" class="collapsible2">Sorteren op</button>
                <div class="ccontent">
                    <label class="btn activee" onclick="filterSelection('all')">Toon alles<input type="radio"
                            name="radio"><span class="checkmark"></span></label>
                    <label class="btn" onclick="sortList()">Alfabetisch<input type="radio" name="radio"><span
                            class="checkmark"></span></label>
                    <label class="btn" onclick="sortBooks(true)">Prijs oplopend<input type="radio" name="radio"><span
                            class="checkmark"></span></label>
                    <label class="btn" onclick="sortBooks(false)">Prijs aflopend<input type="radio" name="radio"><span
                            class="checkmark"></span></label>
                </div>

                <button type="button" class="collapsible2">Talen</button>
                <div class="ccontent">
                    <label class="btn" onclick="filterSelection('Nederlands')">Dutch<input type="radio"
                            name="radio"><span class="checkmark"></span></label>
                    <label class="btn" onclick="filterSelection('Engels')">Engels<input type="radio" name="radio"><span
                            class="checkmark"></span></label>
                </div>

            </div>
        </div>


        <div class="row" id="id01">

            <div class="column English">
                <div class="kaartje">
                    <div><img src="webshopOT.jpg" alt="Oliver Twist"></div>
                    <h4>Oliver Twist</h4>
                    <h6>Charles Dickens</h6>
                    <p class="price">€9,99</p>
                    <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
                </div>
            </div>

            <div class="column English">
                <div class="kaartje">
                    <div><img src="webshopEAP.jpg" alt="The Complete Short Stories"></div>
                    <h4>The Complete Short Stories</h4>
                    <h6>Edgar Allan Poe</h6>
                    <p class="price">€7,98</p>
                    <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
                </div>
            </div>

            <div class="column Nederlands">
                <div class="kaartje">
                    <div><img src="webshopRJ.jpg" alt="Romeo en Julia"></div>
                    <h4>Romeo en Julia</h4>
                    <h6>William Shakespeare</h6>
                    <p class="price">€14,55</p>
                    <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
                </div>
            </div>

            <div class="column Nederlands">
                <div class="kaartje">
                    <div><img src="webshopHP1.jpg" alt="Harry Potter en de Steen der Wijzen"></div>
                    <h4>Harry Potter en de Steen der Wijzen</h4>
                    <h6>J. K. Rowling</h6>
                    <p class="price">€16,58</p>
                    <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
                </div>
            </div>

            <div class="column Nederlands">
                <div class="kaartje">
                    <div><img src="webshopHP2.jpg" alt="Harry Potter en de Geheime Kamer"></div>
                    <h4>Harry Potter en de Geheime Kamer</h4>
                    <h6>J. K. Rowling</h6>
                    <p class="price">€17,19</p>
                    <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
                </div>
            </div>

            <div class="column Nederlands">
                <div class="kaartje">
                    <div><img src="webshopHP3.jpg" alt="Harry Potter en de Gevangene van Azkaban"></div>
                    <h4>Harry Potter en de Gevangene van Azkaban</h4>
                    <h6>J. K. Rowling</h6>
                    <p class="price">€17,97</p>
                    <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
                </div>
            </div>

            <div class="column Nederlands">
                <div class="kaartje">
                    <div><img src="webshopHP4.jpg" alt="Harry Potter en de Vuurbeker"></div>
                    <h4>Harry Potter en de Vuurbeker</h4>
                    <h6>J. K. Rowling</h6>
                    <p class="price">€18,43</p>
                    <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
                </div>
            </div>

            <div class="column English">
                <div class="kaartje">
                    <div><img src="webshopABP.jpg" alt="All the Bright Places"></div>
                    <h4>All the Bright Places</h4>
                    <h6>Jennifer Niven</h6>
                    <p class="price">€13,29</p>
                    <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
                </div>
            </div>

            <div class="column English">
                <div class="kaartje">
                    <div><img src="webshopTF.jpg" alt="The Fault in Our Stars"></div>
                    <h4>The Fault in our Stars</h4>
                    <h6>John Green</h6>
                    <p class="price">€11,55</p>
                    <p class="winkelwagen"><button>Toevoegen aan winkelwagen</button></p>
                </div>
            </div>

        </div>
    </div>

    <div style="clear: both;"></div>