WebKit translate + фиксированная ошибка привязки к фону

http://jsfiddle.net/MR94s/

.wrap {
    position: absolute;
    z-index: 777;
    top: 100%;
    left: 0;
    width: 100%;
    min-height: 100%;
    background-color: white;
    -webkit-overflow-scrolling: touch;
    -moz-transform: translateX(25%);
    -webkit-transform: translateX(25%);
    -o-transform: translateX(25%);
    -ms-transform: translateX(25%);
    transform: translateX(25%);
}

section {
    position: relative;
    width: 100%;
    display: table;
    height: 450px;
    border-bottom: 2px solid #E6EAED;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    padding: 20px;
    background-color: #333;
    background-repeat: repeat;
    background-position: center center;
    -webkit-background-size: 100%;
    -moz-background-size: 100%;
    -o-background-size: 100%;
    background-size: 100%;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
    background-attachment: fixed;
    background-image: url('http://placekitten.com/600/600');
}

См. Вышеупомянутую скрипку. Я использую аналогичную структуру в проекте, над которым я работаю. Это страница с чередующимися секциями, одна для контента и одна, действующая как разделитель с покрытием и фиксированным фоном.

Хорошо работает, но по какой-то причине при применении перевода к элементу с фиксированным фоном или его родительским фоном фон полностью исчезает или оставляет некоторые артефакты и части изображения.

Прекрасно работает в любом другом браузере. Не повезло найти решение, поэтому я надеюсь, что кто-то может мне помочь.

Заранее спасибо!

Ответ 1

У меня была такая же проблема, только в Chrome. Это было мое решение:

// run js if Chrome is being used
if(navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
    // set background-attachment back to the default of 'scroll'
    $('.imagebg').css('background-attachment', 'scroll');

    // move the background-position according to the div y position
    $(window).scroll(function(){

        scrollTop = $(window).scrollTop();
        photoTop = $('.imagebg').offset().top;
        distance = (photoTop - scrollTop);
        $('.imagebg').css('background-position', 'center ' + (distance*-1) + 'px');

    });
}  

Ответ 2

Попробуйте отключить backface-visibility вашего анимированного элемента и родителя.

.wrap {
    position: absolute;
    z-index: 777;
    top: 100%;
    left: 0;
    width: 100%;
    min-height: 100%;
    background-color: white;
    -webkit-overflow-scrolling: touch;
    -moz-transform: translateX(25%);
    -webkit-transform: translateX(25%);
    -o-transform: translateX(25%);
    -ms-transform: translateX(25%);
    transform: translateX(25%);
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility:    hidden;
    -ms-backface-visibility:     hidden;
    -o-backface-visibility:     hidden;
    backface-visibility:     hidden;
}

Ответ 3

У моего сайта была такая же проблема: Google Translator нажал содержимое страницы вниз, но не фоновое изображение тела. Вот как я это решил:

Я просто добавил новый пустой div с фоновым изображением

 <div class="BackgroundImageBody></div>

Это CSS

.BackgroundImageBody{
background: url('/WebRoot/Store/Shops/3077-120214/MediaGallery/design/fundo.jpg') repeat scroll 0% 0% #FFF !important;
height: 100%;
width: 100%;
position: absolute;
}

Затем я добавил div в div-переводчик Google с помощью JavaScript $.ready(function()

<script type="text/javascript">
// <![CDATA[
(function($){
$.ready(function(){

$(".BackgroundImageBody").appendTo(".skiptranslate");

});
})(jQuery);
// ]]>
</script>

Вы можете видеть это, работая по адресу http://www.photostation.pt/ Надеюсь, это было полезно.

Андреас ([email protected])