Селекторы nth-child не работают с классами Tingle. js ', которые относятся к JavaScript на мобильных телефонах. - PullRequest
0 голосов
/ 28 января 2020
  • Класс tingle-modal__close не существует в HTML, поскольку он принадлежит JavaScript. JavaScript добавит этот класс, когда вы нажмете на ссылку гиперссылки, чтобы открыть модал.
  • Класс tingle-modal__close действительно существует в файле Tinge CSS. Но селектор nth-child не работает с этим классом, поскольку этот класс принадлежит JavaScript. Вот небольшой пример:
  .tingle-modal__close:nth-child(1) 
  {
    background-color: var(--orange-600) !important;
  }

  .tingle-modal__close:nth-child(2) 
  {
    background-color: var(--purple-600) !important;
  }

Это означает, что кнопка закрытия первого окна оранжевая, а вторая фиолетовая.

При модальном нажатии / включении / открытии скомпилированный HTML с добавлением tingle-modal__close с помощью JavaScript:

<div class="tingle-modal tingle-modal--visible" style="">
  <button type="button" class="tingle-modal__close">
    <span class="tingle-modal__closeIcon">
      <svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg">
                <path d="M.3 9.7c.2.2.4.3.7.3.3 0 .5-.1.7-.3L5 6.4l3.3 3.3c.2.2.5.3.7.3.2 0 .5-.1.7-.3.4-.4.4-1 0-1.4L6.4 5l3.3-3.3c.4-.4.4-1 0-1.4-.4-.4-1-.4-1.4 0L5 3.6 1.7.3C1.3-.1.7-.1.3.3c-.4.4-.4 1 0 1.4L3.6 5 .3 8.3c-.4.4-.4 1 0 1.4z" fill="#000" fill-rule="nonzero"></path>
      </svg>
    </span>
    <span class="tingle-modal__closeLabel">Close</span>
  </button>
    <div class="tingle-modal-box">
        <div class="tingle-modal-box__content">
            <h1>Section 1</h1>
            <blockquote>“I'm selfish, impatient and a little insecure. I make mistakes, I am out of control and at times hard to handle. But if you can't handle me at my worst, then you sure as hell don't deserve me at my best.”</blockquote>
            <cite>Marilyn Monroe</cite>
        </div>
    </div>
</div>

Вы можете проверить с помощью JSFiddle и измените размер окна предварительного просмотра, чтобы менее 530 пикселей: https://jsfiddle.net/gusbemacbe/k8v74gwb/1/

1 Ответ

1 голос
/ 29 января 2020

:nth-child, как предполагает его название, является N-м дочерним элементом своего родителя. Когда вы открываете модальное, кнопка закрытия всегда является первым потомком модального. Использование чего-то вроде .tingle-modal:nth-child(1) .tingle-modal__close было бы более уместно, если бы модалы всегда были в правильном порядке (, похоже, не так, они поменялись местами )

Но Tingle. js библиотека позволяет вам предоставить опцию cssClass, если вы хотите добавить классы к модалу. Вы можете использовать это, чтобы сделать то, что вы хотите:

https://jsfiddle.net/d60f4jz8/2/

JS

var modalTinyNoFooter = new tingle.modal({
        cssClass: ['modal-1'],
        // ...
    });
// ...
var modalTinyNoFooter2 = new tingle.modal({
        cssClass: ['modal-2'],
        // ...
    });
// ...
var modalTinyNoFooter3 = new tingle.modal({
        cssClass: ['modal-3'],
        // ...
    });
// ...

CSS

.tingle-modal.modal-1 .tingle-modal__close {
  background-color: var(--orange-600) !important;
}

.tingle-modal.modal-2 .tingle-modal__close {
  background-color: var(--purple-600) !important;
}
...