Моя шкала преобразования :hover и кнопка не работают на части страницы

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

Вот мой код CSS и HTML для этой части сайта:

.first-titre-table {
  color: black;
  font-size: 40px;
  font-family: 'Open Sans';
}

.titre-table {
  margin-top: 50%;
  color: black;
  width: auto;
  height: auto;
  font-size: 40px;
  font-family: 'Open Sans';
}

@import url(https://fonts.googleapis.com/css?family=Open+Sans:300,400,700);

.snip1404 {
  font-family: 'Open Sans';
  color: #ffffff;
  text-align: left;
  font-size: 16px;
  max-width: 1000px;
  left: 20%;
  margin-right: auto;
  width: 100%;
  padding: 10px;
  margin-top: 7%;
  display: block;
  flex-wrap: wrap;
  align-content: center;
  position: relative;
}

.snip1404 img {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  z-index: -1;
}

.snip1404 .plan {
  margin: 6px;
  margin-top: 7px;
  width: 25%;
  position: relative;
  float: left;
  overflow: hidden;
  border: 5px solid #730000;
  box-shadow: 0px 0px 10px #000;
  background-color: #b30000;
}

.snip1404 .plan:hover {
  -webkit-transform: scale(1.1);
  transform: scale(1.1);
}

.snip1404 * {
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-transition: all 0.25s ease-out;
  transition: all 0.25s ease-out;
}

.snip1404 header {
  background-color: #b30000;
  color: #ffffff;
}

.snip1404 .plan-title {
  background-color: rgba(0, 0, 0, 0.5);
  position: relative;
  margin: 0;
  padding: 20px 20px 0;
  text-transform: uppercase;
  letter-spacing: 4px;
}

.snip1404 .plan-title::after {
  position: absolute;
  content: '';
  top: 100%;
  left: 0;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 40px 300px 0 0;
  border-color: rgba(0, 0, 0, 0.5) transparent transparent;
}

.snip1404 .plan-cost {
  padding: 40px 20px 10px;
  text-align: right;
}

.snip1404 .plan-price {
  font-weight: 600;
  font-size: 3em;
}

.snip1404 .plan-type {
  opacity: 0.8;
  font-size: 0.9em;
  text-transform: uppercase;
}

.snip1404 .plan-features {
  padding: 0 0 20px;
  margin-left: 10px;
  list-style: outside none none;
  text-align: center;
}

.snip1404 .plan-features li {
  padding: 8px 5%;
}

.snip1404 .plan-features i {
  margin-right: 8px;
  color: rgba(0, 0, 0, 0.5);
}

.snip1404 .plan-select {
  border-top: 1px solid rgba(0, 0, 0, 0.2);
  padding: 20px;
  text-align: center;
}

.snip1404 .plan-select a {
  background-color: #700000;
  color: #ffffff;
  text-decoration: none;
  padding: 12px 20px;
  font-size: 0.75em;
  font-weight: 600;
  border-radius: 20px;
  text-transform: uppercase;
  letter-spacing: 4px;
  display: inline-block;
}

.snip1404 .plan-select a:hover {
  background-color: #ff4d4d;
}

.text-garantie {
  font-size: 17px;
  display: inline;
  color: #fff;
  font-weight: bold;
  text-shadow: 0px 0px 7px #ddd;
}

@media only screen and (max-width: 767px) {
  .snip1404 .plan {
    width: 50%;
  }
  
  .snip1404 .plan-title,
  .snip1404 .plan-select a {
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
  
  .snip1404 .plan-select,
  .snip1404 .plan-featured .plan-select {
    padding: 20px;
  }
  
  .snip1404 .plan-featured {
    margin-top: 0;
  }
}

@media only screen and (max-width: 440px) {
  .snip1404 .plan {
    width: 100%;
  }
  
  .snip1404 .plan-non-featured {
    width: 100%;
  }
  
  .snip1404 .plan-featured {
    width: 100%;
  }
}
<div class = "snip1404">
  <h2 class = "first-titre-table">
    Contrats Chaudière Gaz
  </h2>
  <div class = "plan">
    <header>
      <h4 class = "plan-title">
        Contrat 1 an
      </h4>
      <div class = "plan-cost">
        <span class = "plan-price">
          188€
        </span>
        <span class = "plan-type">
          /an
        </span>
      </div>
    </header>
    <ul class = "plan-features">
      <li>
        1 intervention/an
      </li>
      <li style = "margin-bottom:63%;">
      </li>
    </ul>
    <div class = "plan-select">
      <a href = "">
        Choisir
      </a>
    </div>
  </div>
</div>

Для HTML все таблицы цен имеют одинаковый код. Единственная разница между ними заключается в показанной цене и количестве строк в списке «план-функции». Я также использую некоторый код JavaScript, но не думаю, что это вызывает проблему. Я всегда могу опубликовать сценарий, если это необходимо.

Я задавался вопросом о консоли веб-сайта с указанной выше ссылкой, где я вижу ошибку Jquery, что-то вроде этого $(".hover").mouseleave(он показывает ошибку Uncaught ReferenceError: $ не определен в main.js:1 это означает, что jquery script не связан должным образом. Пожалуйста, попробуйте устранить эту ошибку, и она может начать работать нормально, спасибо

HaSnen Tai 19.06.2019 10:26

потому что snip1404 имеет неправильную высоту, дайте ему 700, это должно исправить

Andam 19.06.2019 10:30

Нет, это было не так, но Михай Т продвинул меня на один шаг вперед в решении моей проблемы.

Ghuleh 19.06.2019 10:37

Похоже, это проблема с JS - если вы берете последний блок из класса (этот блок затем сильно ломается), но теперь работает предпоследний блок

Mike Brockington 19.06.2019 10:37

Пожалуйста, взгляните на мой ответ. Я добавил к нему еще несколько деталей. Дайте мне знать в комментариях к этому ответу, если он работает для вас или вам нужна дополнительная помощь.

Mihai T 19.06.2019 10:43
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
1 032
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема с float:left на .plan . Использование float выведет элемент из обычного потока документа. Вот почему вы никогда не должны использовать float для целей макета. Это приводит к тому, что плавающий элемент не находится внутри своего контейнера, поэтому вы не можете взаимодействовать с ним (наводить указатель мыши) так, как вам хотелось бы.

Вместо этого используйте flex на контейнере snip1404 . И width:100% в заголовке, который я вижу, имеет много «имен». Вы должны использовать общий класс для всех заголовков и присвоить этому классу width:100% . Тогда все пойдет хорошо.

Также позиционирование с position:absolute на контенте не идеально. Другие поля и т. д. выглядят странно. Но ваша проблема определенно вызвана float:left.

Кроме того, чтобы разместить кнопку внизу, не используйте margin-bottom:63% или что-то подобное на li. Это почти никогда не работает на адаптивном веб-сайте. У вас есть много вариантов, чтобы кнопка всегда оставалась внизу. Вы также можете использовать display:flex вместе с flex-direction: column в элементе plan. Это потому, что мы хотим использовать гибкие стили для его дочерних элементов и column потому что мы хотим, чтобы его дочерние элементы располагались один поверх другого, а не рядом. Затем используйте flex-grow:1 в списке (функции), чтобы он увеличивался и занимал по высоте доступное пространство между заголовком и кнопкой. Таким образом, кнопка всегда будет в самом низу элемента plan.

я сделал простой пример ниже

.snip1404 {
  display:flex;
  flex-wrap: wrap;
 }
 .first-titre-table { /* here use a common class for all titles */
  width:100%;
 }
 .plan {
  background:red;
  /* use display:flex so we can use flex styles on the children */
  display:flex; 
  flex-direction: column;
  /* no float left */
 }
 .plan-features {
 /* will occupy all the space available between the header and the button */
  flex-grow:1;
 }
 .plan:hover {
  transform: scale(1.2);
 }
<div class = "snip1404">
  <h2 class = "first-titre-table">Contrats Chaudière Gaz</h2>
  <div class = "plan">
    <header>
      <h4 class = "plan-title">
        Contrat 1 an
      </h4>
      <div class = "plan-cost"><span class = "plan-price">188€</span><span class = "plan-type">/an</span></div>
    </header>
    <ul class = "plan-features">
      <li>1 intervention/an</li>
      <li style = "margin-bottom:63%;"></li>
    </ul>
    <div class = "plan-select"><a href = "">Choisir</a></div>
  </div>
  <div class = "plan">
    <header>
      <h4 class = "plan-title">
        Contrat 1 an
      </h4>
      <div class = "plan-cost"><span class = "plan-price">188€</span><span class = "plan-type">/an</span></div>
    </header>
    <ul class = "plan-features">
      <li>1 intervention/an</li>
      <li style = "margin-bottom:63%;"></li>
    </ul>
    <div class = "plan-select"><a href = "">Choisir</a></div>
  </div>
  <div class = "plan">
    <header>
      <h4 class = "plan-title">
        Contrat 1 an
      </h4>
      <div class = "plan-cost"><span class = "plan-price">188€</span><span class = "plan-type">/an</span></div>
    </header>
    <ul class = "plan-features">
      <li>1 intervention/an</li>
      <li></li>
    </ul>
    <div class = "plan-select"><a href = "">Choisir</a></div>
  </div>
</div>

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

Ghuleh 19.06.2019 10:45

Другие вопросы по теме