Это не совсем верно: позади фона body может быть что угодно, а вот позади фона canvas, наверное, уже вряд ли что-то может быть, хотя точно я не знаю. Соль в том, что фон body переносится на canvas, только если у html background: transparent и background-image: none. Если немного модифицировать наш код html {background: white;} #grey_box { width: 200px; height: 200px; border: solid 1px #ccc; background: #ddd; position: relative ; } #blue_box { width: 100px; height: 100px; border: solid 1px #4a7497; background: #8daac3; position: relative; z-index: -1; } и применить grey_box к body, а blue_box к потомку body, то потомок скроется под фоном body.