Esse problema é causado pelas barras de URL encolhendo / deslizando para fora do caminho e alterando o tamanho das divs # bg1 e # bg2, pois elas têm 100% de altura e são "fixas". Como a imagem de fundo está definida como "capa", ela ajusta o tamanho / posição da imagem, pois a área que contém é maior.
Com base na natureza responsiva do site, o plano de fundo deve ser escalado. Tenho duas soluções possíveis:
1) Defina a altura # bg1, # bg2 como 100vh. Em teoria, esta é uma solução elegante. No entanto, o iOS possui um bug vh ( http://thatemil.com/blog/2013/06/13/viewport-relative-unit-strangeness-in-ios-6/ ). Tentei usar uma altura máxima para evitar o problema, mas ele permaneceu.
2) O tamanho da janela de visualização, quando determinado pelo Javascript, não é afetado pela barra de URL. Portanto, o Javascript pode ser usado para definir uma altura estática no # bg1 e # bg2 com base no tamanho da viewport. Esta não é a melhor solução, pois não é CSS puro e há um ligeiro salto de imagem no carregamento da página. No entanto, é a única solução viável que considero considerar os erros "vh" do iOS (que não parecem estar corrigidos no iOS 7).
var bg = $("#bg1, #bg2");
function resizeBackground() {
bg.height($(window).height());
}
$(window).resize(resizeBackground);
resizeBackground();
Em uma nota lateral, vi muitos problemas com essas barras de URL de redimensionamento no iOS e Android. Entendo o objetivo, mas eles realmente precisam pensar nas estranhas funcionalidades e estragos que causam nos sites. A última alteração é que você não pode mais "ocultar" a barra de URL no carregamento da página no iOS ou Chrome usando truques de rolagem.
EDIT: Embora o script acima funcione perfeitamente para impedir o redimensionamento do plano de fundo, ele causa uma lacuna perceptível quando os usuários rolam para baixo. Isso ocorre porque ele mantém o plano de fundo dimensionado para 100% da altura da tela menos a barra de URL. Se adicionarmos 60px à altura, como sugere swiss, esse problema desaparecerá. Isso significa que não conseguimos ver os 60px inferiores da imagem de plano de fundo quando a barra de URL está presente, mas impede que os usuários vejam uma lacuna.
function resizeBackground() {
bg.height( $(window).height() + 60);
}