МОЯ СРЕДА (ГДЕ Я ПОЛУЧИТЬ ЛАГ):
Mac OSX El Capitan 10.11.2 в Chrome Версия 50.0.2661.102 (64-разрядная версия)
CODEPEN:
http://codepen.io/vieron/pen/hnEev
АНИМАЦИЯ:
СИТУАЦИЯ:
Я искал это много, не найдя ничего, что сработает для меня. Я знаю, что эти вопросы задавали раньше.
Анимация CSS3 гладкая на моем Mac, когда я открываю веб-сайт с Safari и Firefox, но не с Chrome!
Как ни странно, исходный CodePen плавно действует на Chrome.
Проблема:
Что-то в моем коде приводит к тому, что анимация будет изменчивой только в Chrome. Что это и как я могу исправить?
ЧТО Я СМОТРЕТЬ НА:
Мне нужно, чтобы мое позиционирование относилось к адаптации к разным размерам экрана.
-
http://blog.teamtreehouse.com/create-smoother-animations-transitions-browser
-
https://www.binarymoon.co.uk/2014/02/fixing-css-transitions-in-google-chrome/
-
http://blog.teamtreehouse.com/create-smoother-animations-transitions-browser
CODE:
HTML
<div class="marquee">
<ul>
<li>
<a href="#" onclick="location.href='https://developer.apple.com/swift/'; return false;"><img class="marquee-itm" src="Vendors/Images/Apple_Swift_Logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html'; return false;"><img class="marquee-itm" src="Vendors/Images/Objective-c-logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/swift/'; return false;"><img class="marquee-itm" src="Vendors/Images/Apple_Swift_Logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html'; return false;"><img class="marquee-itm" src="Vendors/Images/Objective-c-logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/swift/'; return false;"><img class="marquee-itm" src="Vendors/Images/Apple_Swift_Logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html'; return false;"><img class="marquee-itm" src="Vendors/Images/Objective-c-logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/swift/'; return false;"><img class="marquee-itm" src="Vendors/Images/Apple_Swift_Logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html'; return false;"><img class="marquee-itm" src="Vendors/Images/Objective-c-logo.png" /></a>
</li>
<li>
<a href="#" onclick="location.href='https://developer.apple.com/swift/'; return false;"><img class="marquee-itm" src="Vendors/Images/Apple_Swift_Logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html'; return false;"><img class="marquee-itm" src="Vendors/Images/Objective-c-logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/swift/'; return false;"><img class="marquee-itm" src="Vendors/Images/Apple_Swift_Logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html'; return false;"><img class="marquee-itm" src="Vendors/Images/Objective-c-logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/swift/'; return false;"><img class="marquee-itm" src="Vendors/Images/Apple_Swift_Logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html'; return false;"><img class="marquee-itm" src="Vendors/Images/Objective-c-logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/swift/'; return false;"><img class="marquee-itm" src="Vendors/Images/Apple_Swift_Logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html'; return false;"><img class="marquee-itm" src="Vendors/Images/Objective-c-logo.png" /></a>
</li>
<li>
<a href="#" onclick="location.href='https://developer.apple.com/swift/'; return false;"><img class="marquee-itm" src="Vendors/Images/Apple_Swift_Logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html'; return false;"><img class="marquee-itm" src="Vendors/Images/Objective-c-logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/swift/'; return false;"><img class="marquee-itm" src="Vendors/Images/Apple_Swift_Logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html'; return false;"><img class="marquee-itm" src="Vendors/Images/Objective-c-logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/swift/'; return false;"><img class="marquee-itm" src="Vendors/Images/Apple_Swift_Logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html'; return false;"><img class="marquee-itm" src="Vendors/Images/Objective-c-logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/swift/'; return false;"><img class="marquee-itm" src="Vendors/Images/Apple_Swift_Logo.png" /></a>
<a href="#" onclick="location.href='https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html'; return false;"><img class="marquee-itm" src="Vendors/Images/Objective-c-logo.png" /></a>
</li>
</ul>
</div>
CSS
* {
margin: 0;
padding: 0;
}
@-webkit-keyframes loop {
0% {
-moz-transform: translateX(0);
-ms-transform: translateX(0);
-webkit-transform: translateX(0);
transform: translateX(0);
}
100% {
-moz-transform: translateX(-66.6%);
-ms-transform: translateX(-66.6%);
-webkit-transform: translateX(-66.6%);
transform: translateX(-66.6%);
}
}
@-moz-keyframes loop {
0% {
-moz-transform: translateX(0);
-ms-transform: translateX(0);
-webkit-transform: translateX(0);
transform: translateX(0);
}
100% {
-moz-transform: translateX(-66.6%);
-ms-transform: translateX(-66.6%);
-webkit-transform: translateX(-66.6%);
transform: translateX(-66.6%);
}
}
@-ms-keyframes loop {
0% {
-moz-transform: translateX(0);
-ms-transform: translateX(0);
-webkit-transform: translateX(0);
transform: translateX(0);
}
100% {
-moz-transform: translateX(-66.6%);
-ms-transform: translateX(-66.6%);
-webkit-transform: translateX(-66.6%);
transform: translateX(-66.6%);
}
}
@keyframes loop {
0% {
-moz-transform: translateX(0);
-ms-transform: translateX(0);
-webkit-transform: translateX(0);
transform: translateX(0);
}
100% {
-moz-transform: translateX(-66.6%);
-ms-transform: translateX(-66.6%);
-webkit-transform: translateX(-66.6%);
transform: translateX(-66.6%);
}
}
.cssanimations .marquee {
position: relative;
width: 90%;
margin: auto;
overflow: hidden;
}
.cssanimations .marquee > ul {
list-style: none;
position: relative;
z-index: 1;
top: 0;
left: 0;
width: 300% !important;
height: 80px;
-webkit-animation-play-state: running;
-moz-animation-play-state: running;
-o-animation-play-state: running;
animation-play-state: running;
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
-webkit-animation: loop 20s linear infinite;
-moz-animation: loop 20s linear infinite;
-o-animation: loop 20s linear infinite;
animation: loop 20s linear infinite;
}
.cssanimations .marquee > ul > li {
white-space: normal;
position: relative;
text-align: justify;
text-justify: distribute-all-lines;
line-height: 0;
letter-spacing: -0.31em;
float: left;
width: 33.333333%;
overflow: hidden;
height: 80px;
}
.cssanimations .marquee > ul > li:before {
content: '';
position: relative;
height: 100%;
width: 0;
}
.cssanimations .marquee > ul > li:before,
.cssanimations .marquee > ul > li > * {
vertical-align: middle;
display: inline-block;
}
.cssanimations .marquee > ul > li:after {
content: '.';
display: inline-block;
height: 0 !important;
width: 100%;
overflow: hidden !important;
visibility: hidden;
font-size: 0;
word-spacing: 100%;
}
.cssanimations .marquee > ul > li > * {
display: inline-block;
vertical-align: middle;
text-align: left;
line-height: 1;
letter-spacing: 0;
}
.cssanimations .marquee > ul > li img {
margin: 0 1.6%;
}
.marquee ul li a{
display: inline-block;
height: 80%;
}
.marquee ul li a img {
max-height: 100%;
}
JS ССЫЛКИ В HTML
<script src="Vendors/js/modernizr.js" type="text/javascript"></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
ВАЖНО N.B.:
Единственное, что я добавил в CodePen:
.marquee ul li a{
display: inline-block;
height: 80%;
}
.marquee ul li a img {
max-height: 100%;
}
Удаление этого не решает проблему.
РЕДАКТИРОВАТЬ 1:
Профайлер Google Chrome (вариант 1):
Профайлер Google Chrome (опция 2 (моментальный снимок)):
ИЗМЕНИТЬ 2:
Переход CSS3 не является гладко в Chrome
Кажется, я только что обнаружил странное поведение в моей анимации. Он "растет" (увеличивается) каждый раз, когда я ухожу из поля зрения и обратно на него, прокручивая.
Такое поведение похоже на то, что описано в ответе на вопрос выше. Но указание фиксированной ширины, как предложено, не фиксировало задержку.
ИЗМЕНИТЬ 3:
Google Timeline (после удаления gravity.js):
РЕДАКТИРОВАТЬ 4:
Это странно. После комментирования и раскодирования некоторых строк (в основном, вернувшись к тому, что было в коде, когда было отставание), производительность анимации стала лучше. Не так гладко, как в Safari или Firefox, но все же более плавный.
РЕДАКТИРОВАТЬ 5:
Я нашел "виновника".
Я использую другой код в заголовке моего веб-сайта:
https://codepen.io/saransh/pen/BKJun
<link href='http://fonts.googleapis.com/css?family=Lato:300,400,700' rel='stylesheet' type='text/css'>
#stars
#stars2
#stars3
#title
%span
PURE CSS
%br
%span
PARALLAX PIXEL STARS
Снятие этого делает другую анимацию гладкой.
Тем не менее:
Это не объясняет, почему все гладко в Firefox и Safari, но не в Chrome.
Является ли Chrome менее мощным?
Я отправил отчет в Chrome и надеюсь, что они ответят здесь, но нет никакой гарантии.
Если кто-то может получить от Google/Chrome ответ, я награждаю его/ее щедростью.
ОБНОВЛЕНИЕ 6:
Пробовал браузер Opera. Точно такое же отставание! Теперь мы знаем, что это проблема с движком рендеринга BLINK!