<marquee> Использование/замена тегов html

Я знаю, что теги <marquee> являются злыми.
Если это так плохо, чтобы прокручивать текст, то использование JS для получения того же эффекта не делает его лучше, не так ли?

И предположим, что я решил иметь какой-то прокручиваемый текст (gasp), есть ли какой-нибудь тип CSS (3?) или HTML (5?) способ сделать это, что технически корректно (т.е. не устарело)?

Если нет решения CSS/HTML, следует ли использовать:

  • Javascript, который будет тяжелее для загрузки и может быть отключен (это про или конфликт?), но я получаю бонус быть корректным и действительным W3C и не устаревшим и умным,

или я должен использовать

  • тег <marquee> (<blink> <blink> ), который является легким (19 байтов!), полностью поддерживаемый всеми браузерами во всех режимах рендеринга и всех дотипах (хотя это не должно быть), но устарел?

Спасибо.

P.S. Я думаю, что тикер новостей является допустимым использованием для шатер в стиле P.P.S. Если кто-нибудь скажет мне, что если я не хочу тяжелого решения Javascript, я должен использовать JQuery, потому что он легкий, я буду снимать их в комментариях

Изменить: я добавляю тег JQuery, поскольку это, кажется, лучший способ привлечь внимание многих экспертов по вопросам JS, и здесь он не совсем не связан.

Ответ 1

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

Ответ 2

CSS3 имеет поддержку выделения, но поддерживается только в нескольких браузерах (насколько мне известно, Safari и Chrome)

http://www.w3.org/TR/css3-marquee/

Есть несколько плагинов JQuery, которые его выполняют, но они идут за счет загрузки JQuery (26Kb, тяжелее, чем только HTML-решение, но не то, что я бы назвал тяжелым)

http://plugins.jquery.com/plugin-tags/marquee

Конечно, вы можете легко сделать это самостоятельно без JQuery, но просмотр этих плагинов может дать вам идеи.

Еще один вариант - сделать небольшую флеш-анимацию.

Ответ 3

Если вы уверены, что он работает на всех платформах, на которые вы нацелились, и вам все равно, что w3c говорит, что вы, безусловно, можете использовать тег marquee. Невозможно найти решение JavaScript, которое работает менее чем за 14 байтов.

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

Итак, пожалуйста, продолжайте использовать маркер, пока он работает для вас, но, пожалуйста, не жалуйтесь, если сайт перестает работать в более новом браузере.

Ответ 4

Здесь код, который реализует элемент marquee в Firefox, он в основном делает это на JavaScript, так что вы всегда можете просто адаптировать этот код и использовать он непосредственно во всех браузерах.

Код можно взломать так, чтобы область выделения могла быть реализована на любом элементе Firefox, применяемом через привязки CSS и XBL (Только пример Firefox). Эквивалент в IE будет поведение, и вы могли бы использовать CSS3 в Safari/Chrome, как предположил nico, и вы будете хранить презентационные материалы из ваша разметка, но только вы можете знать, стоит ли это делать.

Ответ 5

Я искал наиболее эффективную и совместимую с браузером реализацию marquee. По какой-то причине даже реализация webkit CSS marquee является глючной.

Общий подход заключается в использовании таймера (или реализации анимации jQuery) для настройки свойства поля CSS элемента. Это слишком глючно и очень неэффективно. Я придумал реализацию, которая использует переходы CSS3 для браузеров, которые ее поддерживают, и в противном случае оживляют свойство scrollLeft содержащего элемент. Это экспериментальная реализация, хотя она хорошо работает с IE7+. Другие люди могут также найти его полезным, https://github.com/gajus/marquee (demo https://dev.anuary.com/60244f3a-b8b2-5678-bce5-f7e8742f0c69/).