#html #css #css3
.header_mid { height: 100px; } .header_mid .logo_slide { padding: 25px 0; height: 50px; overflow: hidden; position: relative; } .header_mid .logo_slide ul { display: block; width: 200%; height: 50px; position: absolute; overflow: hidden; animation: marquee 10s linear infinite; } .header_mid .logo_slide .logo_item { height: 50px; padding: 0 20px; float: left; } @keyframes marquee { 0% { left: 0; } 100% { left: -100%; } } .header_mid .logo_slide ul:hover { animation-play-state: paused; }У меня есть бегущая строка с логотипами, но к моменту завершения первого цикла и начала второго, анимация дёргается и встаёт в исходное положение. Не понимаю, как решить эту проблему. Бегущая строка должна быть сделана без использования js и должна быть резиновой. Javascript крайний вариант. Вот ссылка на мою бегущую строку.
Ответы
Ответ 1
Проблема в установке ширины. В примере 7-ой элемент идет под первым, поэтому он визуально перекидывает на 1-ый элемент. Если расширить блок, то он дальше будет крутить. Уверен, что задавать ширину в % таким способом есть плохо. .header_mid { height: 100px; } .header_mid .logo_slide { padding: 25px 0; height: 50px; overflow: hidden; position: relative; } .header_mid .logo_slide ul { display: block; width: 350%; height: 50px; position: absolute; overflow: hidden; animation: marquee 10s linear infinite; } .header_mid .logo_slide .logo_item { height: 50px; padding: 0 20px; float: left; } @keyframes marquee { 0% { left: 0; } 100% { left: -250%; } } .header_mid .logo_slide ul:hover { animation-play-state: paused; }http://jsfiddle.net/tfsc3qkp/6/Ответ 2
Прошло много времени с момента публикации вопроса, а я так и не написал решение. Решения оказалось костлявым. Исходя из комментариев пользователя @Утка было решено дублировать список и подогнать параметры анимации так, чтобы новый запуск анимации происходил ровно в тот момент, когда выезжает дубль. Все это с фиксированной шириной списка. .header_mid { height: 100px; } .header_mid .logo_slide { padding: 25px 0; height: 50px; overflow: hidden; position: relative; width:100%; margin: auto; } .loop, .loop-clone { display: block; -width: 200%; width:1510px; height: 50px; position: absolute; overflow: hidden; } .loop { animation: marquee 60s linear infinite; } .loop-clone { animation: marquee-clone 60s linear infinite; } .header_mid .logo_slide .logo_item { height: 50px; padding: 0 20px; float: left; } @keyframes marquee { 0% { left: 0; } 50% { left: -1510px; } 50.001% { left: 1510px; } 100% { left: 0; } } @keyframes marquee-clone { 0% { left: 1510px; } 50% { left: 0; } 100% { left: -1510px; } } .header_mid .logo_slide:hover ul,.header_mid .logo_slide .loop-clone ul { animation-play-state: paused; }Ответ 3
.header_mid { display: block; width: 100%; white-space: nowrap; overflow: hidden; } .logo_item { display: inline-block; } .logo_slide { display: inline-block; padding-left: 100%; animation: scroll 4s infinite linear; } @keyframes scroll { 0% { transform: translate(0, 0); } 100% { transform: translate(-100%, 0); } }
Комментариев нет:
Отправить комментарий