Переход CSS не срабатывает при изменении размера Div с помощью класса Bootstrap

#javascript #html #twitter-bootstrap

#javascript #HTML #twitter-bootstrap

Вопрос:

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

onclick() Я меняю список классов div с id=color на что-то большее (с col-xl-4 на col-xl-12 и наоборот.)

Однако переход в div с помощью id=color не запускается. Хотя ширина div изменяется.

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

Ниже приведен мой код:

 <div id="color" class="col-12 col-md-6 col-xl-4">

</div>

<style>
    .color {   
        background-color: red;
        transition-property: width;
        transition-duration: 3s;

    }
</style>

<script>
    color.onclick = function() {
            if (this.classList.contains("col-xl-4")) {
                    this.classList.replace("col-xl-4", "col-xl-12");
                    this.classList.replace("col-md-6", "col-md-12");
            } else {
                    this.classList.replace("col-xl-12", "col-xl-4");
                    this.classList.replace("col-md-12", "col-md-6");
            }
    };
</script>
  

Комментарии:

1. Некоторые проблемы: «.color» не сработает, потому что у div нет такого класса, как color, попробуйте «#color» и «color.onclick» не сработает, потому что это должен быть document.getElementById(«color»).onclick.

2. Я слишком глуп. спасибо @ibrahimyilmaz

Ответ №1:

Помимо проблем, о которых я упоминал в комментарии, попробуйте этот фрагмент:

 document.getElementById("color").onclick = function() {
  if (this.classList.contains("small")) {
    this.classList.replace("small", "large");
  } else {
    this.classList.replace("large", "small");
  }
};  
 #color {   
  background-color: red;
  transition-property: width;
  transition-duration: 3s;
}

.small {
  width: 300px;
}
.large {
  width: 500px;
}  
 <div class="small" id="color">
  Test
</div>