Задержка в CSS: вступает в силу активный селектор

#html #css

#HTML #css

Вопрос:

У меня возникли проблемы с правильной работой кнопки CSS 3. Вы можете просмотреть кнопку на одной из страниц моего проекта. Проблема в том, что существует секундная задержка или около того, прежде чем :active CSS селектор вступит в силу, заставляя кнопку слегка перемещаться и изменяя тень; раньше этого не делалось. Вот код Sass:

 @mixin transition($type, $time, $ease) {
  -webkit-transition: $type $time $ease;
  transition: $type $time $ease;
}

@mixin border-radius($length) {
  border-radius: $length;
  -webkit-border-radius: $length;
  -moz-border-radius: $length;
}

.project-download {
  color: #000300;
  background-color: #00910A;
  padding: 10px;
  position: relative;
  text-align: center;
  font-size: 24px;
  font-weight: bold;

  @include transition(background-color, 0.2s, linear);
  @include border-radius(10px);

  box-shadow:
    1px 1px 0 0 #014D06,
    2px 2px 0 0 #014D06,
    3px 3px 0 0 #014D06,
    4px 4px 0 0 #014D06,
    5px 5px 5px 0 #000000;

  -webkit-box-shadow:
    1px 1px 0 0 #014D06,
    2px 2px 0 0 #014D06,
    3px 3px 0 0 #014D06,
    4px 4px 0 0 #014D06,
    5px 5px 5px 0 #000000;

  -moz-box-shadow:
    1px 1px 0 0 #014D06,
    2px 2px 0 0 #014D06,
    3px 3px 0 0 #014D06,
    4px 4px 0 0 #014D06,
    5px 5px 5px 0 #000000;

  amp;:hover { background-color: #00B00C; }
  amp;:active {
    box-shadow: 1px 1px 5px 0 #000000;
    -webkit-box-shadow: 1px 1px 5px 0 #000000;    
    -moz-box-shadow: 1px 1px 5px 0 #000000;
    top: 4px;
    left: 4px;
  }
}
  

который преобразуется в CSS в:

 .project-download {
  color: #000300;
  background-color: #00910A;
  padding: 10px;
  position: relative;
  text-align: center;
  font-size: 24px;
  font-weight: bold;

  box-shadow:
    1px 1px 0 0 #014D06,
    2px 2px 0 0 #014D06,
    3px 3px 0 0 #014D06,
    4px 4px 0 0 #014D06,
    5px 5px 5px 0 #000000;

  -webkit-box-shadow:
    1px 1px 0 0 #014D06,
    2px 2px 0 0 #014D06,
    3px 3px 0 0 #014D06,
    4px 4px 0 0 #014D06,
    5px 5px 5px 0 #000000;

  -moz-box-shadow:
    1px 1px 0 0 #014D06,
    2px 2px 0 0 #014D06,
    3px 3px 0 0 #014D06,
    4px 4px 0 0 #014D06,
    5px 5px 5px 0 #000000;

  border-radius: 10px;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;

  -webkit-transition: background-color 0.2s linear;
  transition: background-color 0.2s linear;
}

.project-download:active {
  box-shadow: 1px 1px 5px 0 #000000;
  -webkit-box-shadow: 1px 1px 5px 0 #000000;    
  -moz-box-shadow: 1px 1px 5px 0 #000000;
  top: 4px;
  left: 4px;
}

.project-download:hover { background-color: #00B00C; }
  

Я немного поискал в Google, но безуспешно. Есть идеи?

РЕДАКТИРОВАТЬ: Я решил проблему, которая вызывала щелчок, используя эту функцию JavaScript:

 function removeLinkListeners()
{
  var links = document.getElementsByTagName('a');
  for (var i = 0; i < links.length; i  )
  {
    if (links[i].classList.contains('project-download-link'))
    {
      links[i].removeEventListener('mousedown', clicky.outbound);
    }
  }
}
  

И меняем скрипт инициализации на этот:

 <script type="text/javascript">
try
{
  clicky.init(234973);
  window.onload = removeLinkListeners;
}
catch(e) {}
</script>
  

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

1. не увидел ничего неправильного

2. @Ibu Какой браузер? А у вас был отключен JavaScript?

3. прямо сейчас я использую safari на старом powerbook g4 Mac os 10.4, и задержки нет

4. @Ibu Это странно. Я протестировал это в Safari и получил ту же задержку. Но, как вы могли заметить, если у вас отключен JavaScript, никакой задержки не будет.

5. возможно, вам следует пересмотреть свой javascript

Ответ №1:

Если вы разместите свой код в примере jsfiddle…

http://jsfiddle.net/zfFtv/

Вы заметите, что задержки нет. Так что я подозреваю, что это ваш javascript. Возможно, код getclicky неэффективен и вызывает задержку при нажатии на него? Попробуйте отключать ваши js-файлы один за другим, чтобы точно определить проблему.

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

1. Да, это мой код отслеживания Clicky. Кажется, он отправляет запрос каждый раз, когда я нажимаю на кнопку, вероятно, для отслеживания перехода по ссылке. Теперь давайте разберемся, как это отключить.