#javascript #css #zooming #css-transitions #background-size
Вопрос:
Я использую этот JS и CSS для добавления эффекта масштабирования к изображению заголовка. Он отлично работает на рабочем столе.
Проблема в том, что изображение мобильного героя не «заполняет» весь контейнер.
Поэтому мне нужно было бы иметь 2 разных JS с 2 разными настройками%, чтобы он работал как на рабочем столе, так и на мобильном устройстве.
Есть ли решение для создания одного скрипта с учетом моих 2 разных потребностей, которые вы найдете ниже, в зависимости от размера экрана? «эта функция предназначена для настольных компьютеров, а эта функция — для мобильных устройств»?
Для тех, кто знает, что я использую функцию элементов GeneratePress для отображения заголовка всего сайта.
Вот JS CSS, работающий для рабочего стола :
JS
<script>
var pagehero = document.querySelector('.page-hero');
function hero_animation(){
pagehero.style.backgroundSize = 100 '%';
pagehero.style.opacity = '1';
}
document.onload = hero_animation();
</script>
CSS
.page-hero {
transition: background-size 1s cubic-bezier(0.1, 0.135, 0.15, 0.86), opacity 1s ease-out 0.1s !important;
opacity: 0; background-size: 150% auto;
}
Вот JS CSS, которые мне нужно было бы добавить для мобильных устройств :
JS
<script>
var pagehero = document.querySelector('.page-hero');
function hero_animation(){
pagehero.style.backgroundSize = 200 '%';
pagehero.style.opacity = '1';
}
document.onload = hero_animation();
</script>
CSS
.page-hero {
transition: background-size 1s cubic-bezier(0.1, 0.135, 0.15, 0.86), opacity 1s ease-out 0.1s !important;
opacity: 0; background-size: 300% auto;
}
Спасибо за вашу помощь!
Ответ №1:
Вы вызываете функцию при html/body
загрузке документа.
<script>
var pagehero = document.querySelector('.page-hero');
function hero_animation(){
pagehero.style.backgroundSize = 100 '%';
pagehero.style.opacity = '1';
}
document.onload = hero_animation();
</script>
Измените его на это:
<script>
var pagehero = document.querySelector('.page-hero');
function hero_animation(){
pagehero.style.backgroundSize = 100 '%';
pagehero.style.opacity = '1';
}
document.onload = hero_animation;
</script>
Или это:
<script>
var pagehero = document.querySelector('.page-hero');
function hero_animation(){
pagehero.style.backgroundSize = 100 '%';
pagehero.style.opacity = '1';
}
document.onload = function() { hero_animation() };
</script>
Во-вторых, вы должны перейти 100/200
на строку. JavaScript чувствителен к регистру:
pagehero.style.backgroundSize = '100' '%';
Или
pagehero.style.backgroundSize = (Number(100).toString()) '%';
Комментарии:
1. Спасибо за ваш комментарий, но ваши предложения для части «document.onload» не работают, оба нарушают изображение героя. Кстати, поведение, на которое я смотрю, заключается в том, чтобы иметь эффект масштабирования изображения героя при загрузке страницы, и фактическая функция, которую я использую, отлично работает на рабочем столе. Моя проблема заключается в использовании другой функции на мобильном устройстве. Если у вас есть предложения относительно моей проблемы с мобильным и настольным компьютерами, я буду рад.
2. Хорошо, я думаю, что вы ищете «Адаптивный веб-дизайн». Посмотрите на это: w3schools.com/whatis/whatis_responsive.asp ; Проблема в том, что вы устанавливаете абсолютные размеры в CSS, которые соответствуют только области просмотра вашего устройства. Вам нужно использовать относительные единицы измерения / размеры в вашем стиле, чтобы он соответствовал размеру браузера. И если вы хотите эффект масштабирования, посмотрите на это: w3schools.com/howto/howto_css_zoom_hover.asp
3. Нет, это не то, что я ищу. Но все равно спасибо!