JSFiddle - React, Tailwind, and code Playground
HTML
<p>
document.documentElement.clientWidth:<span id="viewport"></span>
</p>
<p>
document.documentElement.scrollWidth:<span id="viewportS"></span>
</p>
<p>
document.body.scrollWidth:<span id="body"></span>
</p>
<p>
window.innerWidth:<span id="window"></span>
</p>
<p>
window.screen.width2:<span id="window2"></span>
</p>
<p>
window.screen.width3:<span id="window3"></span>
</p>
<p>
window.screen.width4:<span id="window4"></span>
</p>
<p>
screen.availWidth:<span id="screen"></span>
</p>
<div id="me" style="width:10%;">
</div>
<p>
10%-width-block.clientWidth:<span id="ten"></span>
</p>
<img src="http://img3.douban.com/view/group_topic/large/public/p9372104.jpg" alt="" class="">
<p>
img.clientWidth:<span id="img"></span>
</p>
CSS
body { margin: 0; padding: 0; }
p { margin: 0; padding: 0 ; }
JavaScript
setInterval(function () {
$("#viewport").text(document.documentElement.clientWidth) ;
$("#viewportS").text(document.documentElement.scrollWidth) ;
$("#body").text(document.body.clientWidth) ;
$("#window").text(window.innerWidth) ;
$("#window2").text(window.screen.width) ;
$("#window3").text(window.devicePixelRatio) ;
$("#window4").text(window.screen.width * window.devicePixelRatio) ;
$("#screen").text(screen.availWidth) ;
$("#ten").text($("#me")[0].clientWidth) ;
$("#img").text($("img")[0].clientWidth) ;
}, 17 );