Медиа-запросы являются хорошим решением для предоставления альтернативных стилей для окон различной ширины. К сожалению, нет атрибута media
для элемента <script>
, действующего аналогично.
Однако вы можете предоставить скрипт загрузки скрипта, который будет загружать нужный файл .js
в зависимости от таблицы стилей, выбранной браузером на основе вашего медиазапроса. Я не знаю, как сделать это прямым, элегантным способом, но есть хороший способ для этого. Вы должны «пометить» каждый .css
уникальным объявлением (фиктивным, неважным или другим по дизайну) и проверить его изнутри JS после загрузки страницы, чтобы определить, какая таблица стилей была применена браузером.
HTML может выглядеть так:
<style media="handheld, screen and (max-width:1023px)">
body { margin-top: 0px }
</style>
<style media="screen and (min-width:1024px)">
body { margin-top: 1px }
</style>
И сопровождающий JS следующим образом:
function onLoad() {
var head = document.getElementsByTagName('head')[0];
var body = document.getElementsByTagName('body')[0];
var mark = window.getComputedStyle(body).getPropertyValue('margin-top');
var script = document.createElement('script');
script.setAttribute('src', mark=='0px' ? 'handheld.js' : 'screen.js');
head.appendChild(script);
}
Это делает работу, но только на основе нагрузки. Чтобы получить ответную реакцию на изменение размера окна браузера пользователем, вы должны следить за шириной вдовы и при необходимости перезагрузить страницу.