Как я могу исправить этот код CSS?и как & ~ работает? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть этот код CSS.это часть навигационного ящика для сайта.Я получил с этого сайта:

https://codepen.io/cassiocardoso/pen/fjqLp

, но этот код не работает, и я проверил его с помощью валидатора CSS, он имеет ошибку.И я не понимаю, как это работает!Может ли кто-нибудь помочь мне, что это ошибка и как я могу это исправить?

Большое спасибо

#mobile-menu-checkbox {
display: none;

&:checked {
  & ~ #mobile-menu-overlay {
     display: block;
  }

& ~ .mobile-menu {
  visibility: visible;
  -webkit-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
}
}
}

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

Этот код является подмножеством CSS высокого уровня AKA: SCSS с использованием синтаксиса LESS (аналогично SASS).

Таким образом, он делает недействительными использование валидаторов CSS для правил.Код интерпретируется и должен быть скомпилирован в CSS с использованием правильных инструментов.
При преобразовании в CSS он должен преобразовываться в

#mobile-menu-checkbox {
  display: none;
}

#mobile-menu-checkbox:checked ~ #mobile-menu-overlay {
  display: block;
}

#mobile-menu-checkbox:checked ~ .mobile-menu {
  visibility: visible;
  -webkit-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
}

& (сопровождаемый селектором) является обратной ссылкойк ближайшему селектору:

#someId {

    background: blue;

    &.red {                 /* same as #someId.red */
        background: red;
    }
}
0 голосов
/ 18 февраля 2019

С файлом less ваш код работает отлично.

Для использования css используйте код, как показано ниже (я конвертирую его с меньше в css ):

html,
body {
  font-family: 'Century Gothic', Sans-serif;
  font-size: 16px;
  line-height: 1.25;
  margin: 0;
  padding: 0;
}
#mobile-menu-checkbox {
  display: none;
}
#mobile-menu-checkbox:checked ~ #mobile-menu-overlay {
  display: block;
}
#mobile-menu-checkbox:checked ~ .mobile-menu {
  visibility: visible;
  -webkit-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
}
#mobile-menu-overlay {
  background-color: rgba(0, 0, 0, 0.6);
  display: none;
  height: 100%;
  left: 0;
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 100;
}
.mobile-menu {
  position: fixed;
  left: 0;
  z-index: 101;
  top: 0;
  visibility: hidden;
  width: 300px;
  height: 100%;
  background: #dcdcdc;
  color: white;
  -webkit-transition: all 0.2s;
  transition: all 0.2s;
  -webkit-transform: translate3d(-100%, 0, 0);
  transform: translate3d(-100%, 0, 0);
  padding: 10px;
}
.mobile-menu h1 {
  color: black;
}
#mobile-menu-btn {
  background-color: transparent;
  border: none;
  color: #222;
  font-size: 30px;
  font-weight: 300;
  left: 0;
  line-height: 1.6em;
  position: relative;
  padding: 0;
  cursor: pointer;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
header {
  background-color: #333;
  padding: 0.5em;
}
header .menu-link {
  color: #fff;
  text-transform: uppercase;
}
#items {
  line-height: 1.75;
}
  <input type="checkbox" id="mobile-menu-checkbox">
  
  <nav role="navigation" class="mobile-menu">
    <h1>This is the menu</h1>
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Clients</a></li>
      <li><a href="#">Contact Us</a></li>
    </ul>
  </nav>
  
  <label for="mobile-menu-checkbox" id="mobile-menu-overlay"></label>
  
  <header>
    <label for="mobile-menu-checkbox" id="mobile-menu-btn">
      <span class="menu-link">Menu</span>
    </label>
  </header>
  
  <div id="content">
    <ul id="items">
      <li>Click in "MENU" to open the navigation.</li>
      <li>Mobile menu using just HTML + CSS.</li>
      <li>Uses Android's navigation drawer pattern.</li>
      <li>Lightweight and customizable.</li>
    </ul>  
  </div>
0 голосов
/ 18 февраля 2019

Скорее всего, вы используете синтаксис LESS в обычном CSS.Это операторы наследования, специфичные для LESS.Установите меньше для компилятора CSS в вашем проекте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...