Safari: фиксированный фон + переход

Пример сайта

У меня есть сайт, разделенный на ваши обычные вертикальные разделы. Верхний и нижний колонтитулы содержат фоны с background-attachment: fixed. У меня есть выдвижная навигация, которая, как вы видите, активирована по первой ссылке. Все работает отлично, кроме...

Проблема: Safari 6 (я не уверен насчет версии 5.1, но, похоже, она есть на Mac, поскольку в моем Windows Safari такой проблемы нет) имеет неприятное мерцание при анимации. Это можно решить с помощью обычного хака -webkit-backface, ОДНАКО при его использовании возникает новая проблема. Фиксированные фоновые изображения начинают вести себя очень плохо, и если вы достаточно прокрутите/измените размер браузера, изображения искажаются или содержимое накладывается неправильно. Есть ли альтернативный метод, который я могу использовать для этой техники, или реальное исправление?

HTML

<section>Hi <a href="#">CLICKME</a></section>
<section>hi</section>
<section>hi</section>
<section>hi</section>
<footer><p>I am some text</p></footer>
<aside class="menu">
  I'm a menu.
</aside>

CSS

body {
  background: #222;
  transition: all 0.3s;
  -webkit-backface-visibility: hidden;
}

body.bump {
  transform: translate(-258px, 0);
}

section {
  background: #CBA;
  color: white;
  line-height: 450px;
  font-size: 32px;
  height: 500px;
  position: relative;
  text-align: center;
  text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
  z-index: 1;
}
section:nth-child(2) {
  background: #FAFAFA;
}
section:nth-child(3) {
  background: #CCC;
}
section:nth-child(4) {
  background: #ABC;
}

section:first-child {
  background: url(http://placekitten.com/1600/500) center top;
  background-attachment: fixed;
  -webkit-backface-visibility: hidden;
}
@media all and (min-width: 73.75em) {
  section:first-child {
    background-size: cover;
  }
}

footer {
  background: url(http://placekitten.com/1400/500) center top;
  background-attachment: fixed;
  color: white;
  font-size: 32px;
  height: 500px;
}
@media all and (min-width: 73.75em) {
  footer {
    background-size: cover;
  }
}
footer p {
  position: fixed;
  bottom: 200px;
  left: 0;
  text-align: center;
  width: 100%;
}

aside.menu {
  background: #222;
  color: #FFF;
  height: 100%;
  padding-top: 30px;
  position: fixed;
  top: 0;
  right: 0;
  text-align: left;
  transform: translate(516px, 0);
  transition: all 0.3s;
  width: 258px;
  -webkit-backface-visibility: hidden;
}

.bump aside.menu {
  transform: translate(258px, 0);
}

JS (используя Jquery)

$('section a').click( function(e) {
  $('body').toggleClass('bump');
});

person Brian    schedule 22.05.2013    source источник


Ответы (1)


Я сделал обходной путь, применив фиксированный фон к телу, обернув все в теле в другой div (вместо этого анимировав его, чтобы он не влиял на фон тела), и нижний колонтитул остался прежним, так как прокрутил так далеко, что есть в любом случае, нет возможности вытолкнуть боковую панель (так что не стоит беспокоиться о мерцании анимации).

person Brian    schedule 04.06.2013