Edit in JSFiddle

var content = document.querySelector('.content');
var duplicate = content.cloneNode(true);
var contentBlurred = document.createElement('div');
contentBlurred.className = 'content-blurred';
contentBlurred.appendChild(duplicate);

var header = document.querySelector('header');
header.appendChild(contentBlurred);

var contentWrapper = document.querySelector('.content-wrapper'),
  translation;

contentWrapper.addEventListener('scroll', function() {
  translation = 'translate3d(0,' + (-this.scrollTop + 'px') + ',0)';
  duplicate.style['-webkit-transform'] = translation;
  duplicate.style['-moz-transform'] = translation;
  duplicate.style['-ms-transform'] = translation;
  duplicate.style['transform'] = translation;

  console.log(duplicate);
});

// offset to demo blurring
contentWrapper.scrollTop = 140;
<header>
  <h1>Le blur effect d'iOS en Web? dur...</h1>
</header>

<div class="screen">
  <div class="content-wrapper">
    <div class="content">

      <div class="messages">
        <p>Yo</p>
        <p>Ça boum?</p>
        <p>Nan...</p>
        <p>Comment ça "Nan" ?</p>
        <p>J'éssaie de faire un blur-effect dans mon header, mais c'est vraiment la merde!</p>
        <p>Pourtant ça marche là.
          <br>Déjà que les dèv iOS galérent sur iOS...toi et ton truc en JS c'est tendu...</p>
        <p>Ouaip :/<br>C'est une magouille qui duplique le contenu d'une div (.content) dans une div du header (.content-blurred) pouir lui appliquer un blur effect en css...<br>En fait mon problème c'est qu'il y a une div (.screen) qui gère la hauteur du contenu dupliqué ALORS QUE J'AI PAS BESOIN DE CETTE DIV BORDEL! Ça complique juste le bousin.</p>
        <p>Seul Dennis peut t'aider ;)<img src="http://thomasgiavarini.me/img/blog.jpg"></p>
        <p>...bwef</p>
        <p>Ouais bonne chance. Au pire essaies de pas perdre trop de temps à faire des fausses discussions pour la mise en forme ;D</p>
        <p>TG</p>
      </div>

    </div>
  </div>
</div>
* {
  margin: 0;
  padding: 0;
}

body {
  background: #222;
  padding: 0;
  //overflow:hidden;
}

p {
  font-family: roboto;
  font-size: 16px;
  line-height: 22px;
  text-align: center;
}

header {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  height: 100px;
  background: #F4F4F4;
  overflow: hidden;
  z-index: 2;
}

header h1 {
  position: relative;
  font-family: roboto;
  font-size: 25px;
  text-align: center;
  line-height: 100px;
  margin: 0;
  padding: 0;
  padding-left: 30px;
  font-weight: 300;
}

img {
  width: 100%;
  margin: 15px 0 0 0;
}

.screen {
  position: absolute;
  width: 100%;
  margin: 0;
  padding: 0;
  height: 512px;
  overflow:hidden;
  background: white;
}

/* CSS du chat, on s'en branle grave mais c'est cholie */

.messages {
  margin: 100px 0 0 0;
}
.messages p {
  text-align: left;
  color: #FFF;
  border-radius: 12px 12px 12px 0;
  background: #0f87ff;
  padding: 15px;
  margin: 0;
  margin: 30px auto;
  max-width: 320px;
}
.messages p:after {
  content: "";
  display: block;
  position: absolute;
  width: 0;
  height: 0;
  margin: 15px 0 0 -15px;
  border-style: solid;
  border-width: 10px 15px 0 0;
  border-color: #0f87ff transparent transparent transparent;
}
.messages p:nth-child(2n) {
  background: #ccc;
  color: #333;
  text-align: right;
  border-radius: 12px 12px 0 12px;
}
.messages p:nth-child(2n):after {
  content: "";
  display: block;
  position: absolute;
  width: 0;
  height: 0;
  margin: 15px 0 0 320px;
  border-style: solid;
  border-width: 0 15px 10px 0;
  border-color: transparent #ccc transparent transparent;
}

/* Des truc que je comprends pas trop */

.content-blurred {
  margin-top: 40px;
  padding: 0;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  filter: blur(10px);
  opacity: 0.2;
  z-index: 1;
}

.content-blurred .content {
  backface-visibility: hidden;
}

.content-wrapper {
  position: relative;
  padding: 0;
  z-index: 1;
  height: 100%;
  overflow: auto;
  backface-visibility: hidden;
}

.content-wrapper .content {
  margin-top: 44px;
}

.content {
display:block;
padding-top:1em;
}