Почему CSS не работает в этом JS переключателе? Вопрос новичка - PullRequest
0 голосов
/ 19 апреля 2020

Я создал таблицу цен переключения, используя код из codpen.io (оригинал можно найти здесь -> https://codepen.io/kijanmaharjan/pen/dMmdej и скопировать ниже). Он работает с настройками по умолчанию (ie. Выключить), но когда я переключаю переключатель, все настройки CSS теряются. Чего мне не хватает?

Мой сайт - oop -test.xyz, и вы можете проверить проблему там. Я точно скопировал и вставил код, и JS находится в нижнем колонтитуле.

Спасибо за любую помощь, я уверен, что решение очень простое, но я не могу его найти!

HTML


<section class="pricing-columns pricing-section">
  <label class="toggler toggler--is-active" id="filt-monthly">Monthly</label>
  <div class="toggle">
    <input type="checkbox" id="switcher" class="check">
    <b class="b switch"></b>
  </div>
  <label class="toggler" id="filt-hourly">Hourly</label>
  <div id="monthly" class="wrapper-full">
    <p class="bandwidth">Pricing in USD. Excludes any applicable tax.</p>
    <div id="pricing-chart-wrap">
      <div id="pricing-chart">
        <div id="smaller-plans">
            <div class="plan">
              <div class="price">
                <span class="dollar">$</span>
                <span class="amount" data-dollar-amount="22.59">22.59</span>
                <span class="slash">/</span>
                <span class="month">mo</span>
              </div>
              <ul>
                <li>20GB<span>SSD Disk</span></li>
                <li>512MB<span>Memory</span></li>
                <li>1 Core<span>vCPU</span></li>

                <li>333GB/mo<span>Transfer</span></li>
              </ul>
              <a class="button sign-up" href="https://orders.gigenetcloud.com/order.php?quick=79,20,512,730">Sign Up</a>
            </div>
            <div class="plan">
              <div class="price">
                <span class="dollar">$</span>
                <span class="amount" data-dollar-amount="35.49">35.49</span>
                <span class="slash">/</span>
                <span class="month">mo</span>
              </div>
              <ul>
                <li>30GB<span>SSD Disk</span></li>
                <li>1GB<span>Memory</span></li>
                <li>1 Core<span>vCPU</span></li>
                <li>667GB/mo<span>Transfer</span></li>
              </ul>
              <a class="button sign-up" href="https://orders.gigenetcloud.com/order.php?quick=79,30,1024,730">Sign Up</a>
            </div>
            <div class="plan popular">
              <div class="price">
                <span class="dollar">$</span>
                <span class="amount" data-dollar-amount="56.88">56.88</span>
                <span class="slash">/</span>
                <span class="month">mo</span>
              </div>
                <p class="pop-plan">Most Popular Plan</p>
              <ul>
                <li>40GB<span>SSD Disk</span></li>
                <li>2GB<span>Memory</span></li>
                <li>1 Core<span>vCPU</span></li>
                <li>1333GB/mo<span>Transfer</span></li>
              </ul>
              <a class="button sign-up" href="https://orders.gigenetcloud.com/order.php?quick=79,40,2048,730">Sign Up</a>
            </div>
            <div class="plan">
              <div class="price">
                <span class="dollar">$</span>
                <span class="amount" data-dollar-amount="102.05">102.05</span>
                <span class="slash">/</span>
                <span class="month">mo</span>
              </div>
              <ul>
                <li>60GB<span>SSD Disk</span></li>
                <li>4GB<span>Memory</span></li>
                <li>2 Cores<span>vCPU</span></li>
                <li>2667GB/mo<span>Transfer</span></li>
              </ul>
              <a class="button sign-up" href="https://orders.gigenetcloud.com/order.php?quick=79,60,4096,730">Sign Up</a>
            </div>
            <div class="plan">
              <div class="price">
                <span class="dollar">$</span>
                <span class="amount" data-dollar-amount="202.81">202.81</span>
                <span class="slash">/</span>
                <span class="month">mo</span>
              </div>
              <ul>
                <li>80GB<span>SSD Disk</span></li>
                <li>8GB<span>Memory</span></li>
                <li>4 Cores<span>vCPU</span></li>
                <li>5333GB/mo<span>Transfer</span></li>
              </ul>
              <a class="button sign-up" href="https://orders.gigenetcloud.com/order.php?quick=79,80,8192,730">Sign Up</a>
            </div>
        </div>

        </div>
      </div>
    </div>
  </div>
<div id="hourly" class="wrapper-full hide">
    <p class="bandwidth">Pricing in USD. Excludes any applicable tax.</p>
    <div id="pricing-chart-wrap">
      <div id="pricing-chart">
        <div id="smaller-plans">
            <div class="plan ">
              <div class="price">
                <span class="dollar">$</span>
                <span class="amount" data-dollar-amount="0.03">0.03</span>
                <span class="slash">/</span>
                <span class="month">hr</span>
              </div>
              <ul>
                <li>20GB<span>SSD Disk</span></li>
                <li>512MB<span>Memory</span></li>
                <li>1 Core<span>vCPU</span></li>
                <li>Transfer<span>Pay as you use it</span></li>
              </ul>
              <a class="button sign-up" href="https://orders.gigenetcloud.com/order.php?quick=79,20,512,1">Sign Up</a>
            </div>
            <div class="plan ">
              <div class="price">
                <span class="dollar">$</span>
                <span class="amount" data-dollar-amount="0.05">0.05</span>
                <span class="slash">/</span>
                <span class="month">hr</span>
              </div>
              <ul>
                <li>30GB<span>SSD Disk</span></li>
                <li>1GB<span>Memory</span></li>
                <li>1 Core<span>vCPU</span></li>
                <li>Transfer<span>Pay as you use it</span></li>
              </ul>
              <a class="button sign-up" href="https://orders.gigenetcloud.com/order.php?quick=79,30,1024,1">Sign Up</a>
            </div>
            <div class="plan popular">
              <div class="price">
                <span class="dollar">$</span>
                <span class="amount" data-dollar-amount="0.08">0.08</span>
                <span class="slash">/</span>
                <span class="month">hr</span>
              </div>
              <p class="pop-plan">Most Popular Plan</p>
              <ul>
                <li>40GB<span>SSD Disk</span></li>
                <li>2GB<span>Memory</span></li>
                <li>1 Core<span>vCPU</span></li>
                <li>Transfer<span>Pay as you use it</span></li>
              </ul>
              <a class="button sign-up" href="https://orders.gigenetcloud.com/order.php?quick=79,40,2048,1">Sign Up</a>
            </div>
            <div class="plan">
              <div class="price">
                <span class="dollar">$</span>
                <span class="amount" data-dollar-amount="0.14">0.14</span>
                <span class="slash">/</span>
                <span class="month">hr</span>
              </div>
              <ul>
                <li>60GB<span>SSD Disk</span></li>
                <li>4GB<span>Memory</span></li>
                <li>2 Cores<span>vCPU</span></li>
                <li>Transfer<span>Pay as you use it</span></li>
              </ul>
              <a class="button sign-up" href="https://orders.gigenetcloud.com/order.php?quick=79,60,4096,1">Sign Up</a>
            </div>
            <div class="plan">
              <div class="price">
                <span class="dollar">$</span>
                <span class="amount" data-dollar-amount="0.28">0.28</span>
                <span class="slash">/</span>
                <span class="month">hr</span>
              </div>
              <ul>
                <li>80GB<span>SSD Disk</span></li>
                <li>8GB<span>Memory</span></li>
                <li>4 Cores<span>vCPU</span></li>
                <li>Transfer<span>Pay as you use it</span></li>
              </ul>
              <a class="button sign-up" href="https://orders.gigenetcloud.com/order.php?quick=79,80,8192,1">Sign Up</a>
            </div>
        </div>

        </div>
      </div>
    </div>
  </div>
</section>

CSS

* {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}
body {
    font-family: "proxima-nova", sans-serif;
    font-weight: 400;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    -moz-osx-font-smoothing: grayscale;
}
ul, li {
    margin: 0;
    padding: 0;
    list-style: none;
}
.toggle, .toggler {
  display: inline-block;
  vertical-align: middle;
  margin: 10px;
}

.toggler {
  color: #ddd;
  transition: .2s;
  font-weight: bold;
}

.toggler--is-active {
  color: #9D1726;
}

.b {
  display: block;
}

.toggle {
  position: relative;
  width: 80px;
  height: 35px;
  border-radius: 100px;
  background-color: #9D1726;
  overflow: hidden;
  box-shadow: inset 0 0 2px 1px rgba(0, 0, 0, 0.05);
}

.check {
  position: absolute;
  display: block;
  cursor: pointer;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  z-index: 6;
}

.check:checked ~ .switch {
  right: 2px;
  left: 57.5%;
  transition: 0.25s cubic-bezier(0.785, 0.135, 0.15, 0.86);
  transition-property: left, right;
  transition-delay: .08s, 0s;
}

.switch {
  position: absolute;
  left: 2px;
  top: 2px;
  bottom: 2px;
  right: 57.5%;
  background-color: #fff;
  border-radius: 36px;
  z-index: 1;
  transition: 0.25s cubic-bezier(0.785, 0.135, 0.15, 0.86);
  transition-property: left, right;
  transition-delay: 0s, .08s;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}
.pricing-section {
    padding: 110px 0 150px 0;
    float: left;
    width: 100%;
    text-align: center;
}
.pricing-columns .wrapper-full {
    position: relative;
    width: 1170px;
    margin: 0 auto;
}
.pricing-columns #pricing-chart, .pricing-columns-both #pricing-chart {
    margin-top: 100px;
    float: left;
    position: relative;
}
.pricing-columns #pricing-chart #smaller-plans, .pricing-columns-both #pricing-chart #smaller-plans {
    display: block;
}
.pricing-columns #pricing-chart .plan, .pricing-columns-both #pricing-chart .plan {
    float: left;
    background-color: #fafafa;
    position: relative;
    color: #454545;
    padding: 14px;
    border-right: 1px solid #e1e1e1;
    border-bottom: 1px solid #e1e1e1;
    width: 207px;
}
.pricing-columns #pricing-chart .plan:first-child, .pricing-columns-both #pricing-chart .plan:first-child {
    border-left: 1px solid #e1e1e1;
}
.pricing-columns #pricing-chart .plan:before, 
.pricing-columns-both #pricing-chart .plan:before {
    content: "";
    position: absolute;
    height: 5px;
    left: -1px;
    top: 0;
    background-color: #233E48;
    width: 207px;
}
.pricing-columns #pricing-chart .plan .price, .pricing-columns-both #pricing-chart .plan .price {
    font-size: 26px;
    float: left;
    width: 100%;
    margin-bottom: 35px;
    margin-top: 17px;
}
.pricing-columns #pricing-chart .plan .price .dollar, .pricing-columns-both #pricing-chart .plan .price .dollar {
    top: -10px;
    letter-spacing: -1px;
    left: 3px;
}
.pricing-columns #pricing-chart .plan .price .amount, .pricing-columns-both #pricing-chart .plan .price .amount {
    font-size: 30px;
    font-weight: 600;
}
.pricing-columns #pricing-chart .plan .price .slash, .pricing-columns-both #pricing-chart .plan .price .slash {
    font-weight: 600;
    left: -2px;
}
.pricing-columns #pricing-chart .plan .price .month, .pricing-columns-both #pricing-chart .plan .price .month {
    font-weight: 600;
    left: -7px;
}
.pricing-columns #pricing-chart .plan ul, .pricing-columns-both #pricing-chart .plan ul {
    padding: 0 18px;
    margin-bottom: 40px;
}
.pricing-columns #pricing-chart .plan ul li, .pricing-columns-both #pricing-chart .plan ul li {
    font-weight: 600;
    font-size: 15px;
    text-align: left;
    margin-bottom: 20px;
}
.pricing-columns #pricing-chart .plan ul li span, .pricing-columns-both #pricing-chart .plan ul li span {
    color: #9e9e9e;
    display: inline-block;
    margin-left: 7px;
    font-weight: 400;
    font-size: 14px;
}
.pricing-columns #pricing-chart .plan a.sign-up, .pricing-columns-both #pricing-chart .plan a.sign-up {
  width: 100%;
    padding: 13px;
    background-color: white;
    border: 1px solid #e1e1e1;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    -ms-border-radius: 3px;
    -o-border-radius: 3px;
    border-radius: 3px;
    text-decoration: none;
    text-transform: uppercase;
    font-weight: 600;
    color: #9e9e9e;
    display: block;
    margin-bottom: 5px;
    font-size: 15px;
    clear: left;
    letter-spacing: 1.5px;
    -webkit-transition: all 0.2s ease-in-out;
    -moz-transition: all 0.2s ease-in-out;
    -ms-transition: all 0.2s ease-in-out;
    -o-transition: all 0.2s ease-in-out;
    transition: all 0.2s ease-in-out;
}
.pricing-section .sign-up {
    padding: 17px 50px;
    text-transform: uppercase;
    background-color: #93cc76;
    color: white;
    letter-spacing: 0.1em;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    -ms-border-radius: 3px;
    -o-border-radius: 3px;
    border-radius: 3px;
    -webkit-transition: all 0.2s ease-in-out;
    -moz-transition: all 0.2s ease-in-out;
    -ms-transition: all 0.2s ease-in-out;
    -o-transition: all 0.2s ease-in-out;
    transition: all 0.2s ease-in-out;
    text-decoration: none;
    font-weight: 600;
    display: inline-block;
    white-space: pre;
    padding-left: 100px;
    padding-right: 100px;
    margin-top: 30px;
}

.pricing-columns #pricing-chart .popular, .pricing-columns-both #pricing-chart .popular {
    width: 274px;
    position: relative;
    top: -30px;
    background-color: white;
    margin-left: -2px;
    right: 0;
    border-left: 1px solid #e1e1e1;
    border-right: 1px solid #e1e1e1;
}
.pricing-columns #pricing-chart .popular:before, .pricing-columns-both #pricing-chart .popular:before {
    width: 274px;
    background-color: #9D1726;
    height: 7px;
}
.pricing-columns #pricing-chart .popular a.sign-up, .pricing-columns-both #pricing-chart .popular a.sign-up {
    background-color: #9D1726;
    border: none;
    color: #ffffff;
}
.pricing-columns #pricing-chart .popular .price .amount, .pricing-columns-both #pricing-chart .popular .price .amount {
    font-size: 60px;
}
.bandwidth {
    display: block;
    color: #9e9e9e;
    font-size: 16px;
    position: absolute;
    right: 0;
    bottom: -90px;
}
.pricing-columns #pricing-chart .popular p.pop-plan, .pricing-columns-both #pricing-chart .popular p.pop-plan {
    color: #454545;
    font-size: 16px;
    margin-bottom: 45px;
}
.pricing-columns #pricing-chart .popular .price, .pricing-columns-both #pricing-chart .popular .price {
    margin-bottom: 0px;
}
.pricing-columns #pricing-chart .plan a.sign-up:hover, .pricing-columns-both #pricing-chart .plan a.sign-up:hover {
    border: 0;
    color: #fff;
    opacity: 0.8;
}
.hide{
  display: none;
}

JS

var e = document.getElementById("filt-monthly"),
    d = document.getElementById("filt-hourly"),
    t = document.getElementById("switcher"),
    m = document.getElementById("monthly"),
    y = document.getElementById("hourly");

e.addEventListener("click", function(){
  t.checked = false;
  e.classList.add("toggler--is-active");
  d.classList.remove("toggler--is-active");
  m.classList.remove("hide");
  y.classList.add("hide");
});

d.addEventListener("click", function(){
  t.checked = true;
  d.classList.add("toggler--is-active");
  e.classList.remove("toggler--is-active");
  m.classList.add("hide");
  y.classList.remove("hide");
});

t.addEventListener("click", function(){
  d.classList.toggle("toggler--is-active");
  e.classList.toggle("toggler--is-active");
  m.classList.toggle("hide");
  y.classList.toggle("hide");
})

Ответы [ 4 ]

1 голос
/ 19 апреля 2020

Это происходит потому, что в вашем html есть 2 дополнительных закрывающих тега </div> (один в строке 95 и один в строке 182). Это вызывает рендеринг #hourly div вне .pricing-columns, в результате чего #hourly не выбирает стили .pricing-columns.

Удалите эти дополнительные теги </div>, и это должно сработать.

0 голосов
/ 19 апреля 2020

Спасибо за все ваши быстрые ответы. Ответ Крогерса об удалении лишних тегов div решил проблему

0 голосов
/ 19 апреля 2020

Я проверил ваш сайт. В соответствии с этим вы не используете CSS классы для почасовых планов. Вы должны добавить pricing-columns class к #hourly div. Это будет работать. Остальные вы можете настроить дополнительный интервал, отредактировав CSS. Если вам нужна помощь с этим, позвольте мне сейчас.

0 голосов
/ 19 апреля 2020

Вы не импортировали файл css.

...