Как редактировать css внутри javascript

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

window.onscroll = function() {
    growShrinkLogo()
  };

  function growShrinkLogo() {
    var Logo = document.getElementById("logo")
    if (document.body.scrollTop > 5 || document.documentElement.scrollTop > 5) {
      Logo.style.width = '80px';
    } else {
      Logo.style.width = '200px';
    }
  }
<div   class = "logo">
        <div class = "relative-logo">
          <img id = "logo" src = "assets/images/logo.png" alt = "logo">
        </div>
      </div>

первый логотип, который появляется, немного правее страницы, а второй - точно в центре, как показано на изображениях ниже.

Как редактировать css внутри javascript

Как редактировать css внутри javascript

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

margin:auto может помочь?

mplungjan 22.04.2019 09:30

Где второй логотип?

Adrian 22.04.2019 09:30

@mplungjan, но оба логотипа находятся в одном div

user11300121 22.04.2019 09:31

@ Adriani6 оба являются одним логотипом, просто использовали js, чтобы сделать его большим и маленьким.

user11300121 22.04.2019 09:31

Вот так: .logo { width:100%; text-align:center } #logo {margin:auto}

mplungjan 22.04.2019 09:39

@mplungjan не работает

user11300121 22.04.2019 09:42
Поведение ключевого слова "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
6
138
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы поместили скрипт перед закрывающим тегом body? Я попробовал ваш код, он все еще меняет ширину?

window.onscroll = function() {
  growShrinkLogo()
};

function growShrinkLogo() {
  var Logo = document.getElementById("logo")
  if (document.body.scrollTop > 5 || document.documentElement.scrollTop > 5) {
    Logo.style.width = '80px';
  } else {
    Logo.style.width = '200px';
  }
}
<div class = "logo">
  <div class = "relative-logo">
    <img id = "logo" src = "http://pngimg.com/uploads/google/google_PNG19644.png" alt = "logo">
  </div>
</div>
<div>
  
</div>

я не понял что ты сказал

user11300121 22.04.2019 09:33

Есть несколько способов добиться этого.

  • Используйте два разных элемента HTML (два логотипа), а затем скройте/покажите их, подобно тому, как вы меняете CSS одного элемента. Таким образом, вы можете независимо изменять CSS каждого логотипа.
  • Измените CSS вашего основного логотипа для загрузки страницы, а затем исправьте его обратно с помощью JavaScript (по сути, удалите все, что вы добавили для большого логотипа).

Обновлять:

Перечитав ваш вопрос, я думаю, что понял.

Попробуйте добавить это в свой CSS (обновите в соответствии с вашими потребностями):

.relative-logo {
  display: flex;
  justify-content: center;
  align-items: center;
}

Это должно выровнять оба ваших логотипа по центру и заставить их оставаться по центру независимо от их размера.

@ZubairShah Я обновил свой ответ, думаю, теперь я понимаю, что вам нужно.

Obed Parlapiano 22.04.2019 09:36

но ширина не увеличивается, как я хочу

user11300121 22.04.2019 09:38

Я не понял вашего последнего комментария. Ваш вопрос how can i make the bigger logo which appears when the page load to the center without effecting the smaller logo. Вы никогда не упоминали, что ширина не увеличивается.

Obed Parlapiano 22.04.2019 09:42

ширина увеличивается в моем javascript

user11300121 22.04.2019 09:43

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

user11300121 22.04.2019 09:44

Тебе удалось это исправить, @ZubairShah? Мой код CSS не должен изменять размер изображения. Это странно.

Obed Parlapiano 22.04.2019 16:51

Давайте продолжить обсуждение в чате.

Obed Parlapiano 23.04.2019 11:24
Ответ принят как подходящий

window.onscroll = function() {
  growShrinkLogo();
};

function growShrinkLogo() {
  var Logo = document.getElementById("logo");

  if (document.body.scrollTop > 5 || document.documentElement.scrollTop > 5) {
    Logo.style.width = '80px';
    Logo.style.marginLeft = '60px';
  } else {
    Logo.style.width = '200px';
    Logo.style.marginLeft = '0px';
  }
}
<div class = "logo">
  <div class = "relative-logo">
    <img id = "logo" src = "assets/images/logo.png" alt = "Logo" />
  </div>
</div>

Это будет работать, если вы еще не определили поле в своем CSS и вместо этого использовали позицию. Я думаю..... попробуй.

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