Изменение фонового изображения элемента html js

Я искал в Google и здесь, но я не могу найти правильный ответ на свою проблему. Я использовал этот код:

html {
   background: url('../resources/imgs/bgs/mainbg.jpg') no-repeat center center fixed; 
   -webkit-background-size: cover;
   -moz-background-size: cover;
   -o-background-size: cover;
   background-size: cover;
}

который я получил из Интернета, чтобы установить фоновое изображение, которое всегда находится в центре и идеально вписывается в браузер, и оно отлично работает, но я столкнулся с проблемой. Мне нужно изменить фоновое изображение одним нажатием кнопки, но я не знаю, как настроить таргетинг на тег html, возможно ли это? огромное спасибо :)

мой вопрос был помечен как дубликат, но моя проблема - это не просто получить стиль элемента html, но изменить его так же, как фрагмент кода, используя только чистый javascript

Возможный дубликат Как получить HTML-тег <html> с помощью JavaScript / jQuery?

CBroe 15.07.2018 16:30

"javascript get html element", введенный в Google, мог привести вас к этому дубликату напрямую.

CBroe 15.07.2018 16:31

Пожалуйста, включите код, который вы пробовали, он дает нам больше контекста относительно того, чего вы пытаетесь достичь, и упрощает определение того, где вы можете ошибиться.

Jon P 16.07.2018 01:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
1 789
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Просто используйте:

document.getElementsByTagName('html')[0].style.backgroundImage = "url('img_tree.png')";

Слишком быстрый ответ, исправил :)

Davidos 15.07.2018 15:41

это не сработало, новое изображение просто помещается в угол, а не на весь экран

kriskotoo BG 15.07.2018 15:45

@kriskotooBG, может, попробуй: document.getElementsByTagName('html')[0].style.background = "url('img.png') no-repeat center center fixed";

Davidos 15.07.2018 15:50

С помощью jquery вы можете сделать следующее

$('html').on('click', function(){
    $('html').css({
      "background": "url('https://picsum.photos/1200/3300/?blur') no-repeat center center fixed",
      "background-size": "cover"
    });
});

извините, но я не просил решение jquery

kriskotoo BG 15.07.2018 16:12

тогда вы можете просто добавить два разных стиля с помощью javascript ---- document.getElementsByTagName ('html') [0] .style.backgroun‌ d = "url ('picsum.photos/1200/3300/?blur ') центр центра без повтора исправлен"; document.getElementsByTagName ('html') [0] .style.backgroundSiz‌ e = 'обложка';

Dee 15.07.2018 16:14
Ответ принят как подходящий

Вы должны установить оба свойства backgroundImage и backgroundSize. Попробуйте следующее:

document.querySelector('#btnSetImage').addEventListener('click', function(){
  var html = document.querySelector('html');
  html.style.backgroundImage = "url('https://www.noodleman.co.uk/images/source/google_merchant_bulk_category_assign/google.jpg')";
  html.style.backgroundSize = 'cover';
});
<button type = "button" id = "btnSetImage">Set Background Image</button>

Вы можете получить доступ к элементу html напрямую с documentElement:

/*Just change the image source with javascript*/
document.querySelector('#changeImage').addEventListener('click', function() {
  document.documentElement.style.backgroundImage = 'url("https://www.fillmurray.com/400/400")';
});
/*Base settings in CSS*/

html {
  background: url('https://www.fillmurray.com/g/400/400') no-repeat center center fixed;
  /*This Would be a greyscale image*/
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}
<div style = "color:#FFF;">Bill Murray!</div>
<!-- Just Some Content -->
<button id = "changeImage">ChangeImage</button>

Другие вопросы по теме