Как отобразить div друг на друге? - PullRequest
0 голосов
/ 10 мая 2019

Я пытался выяснить, как отображать мои div'ы рядом, что мне удалось. Css ниже работает почти идеально.

.awpcp-listing-excerpt {
  width: 40%! important;
  height: 120px! Important;
  float: left! Important;
  margin-right: 15px! Important;
  margin-top: -30px!important;
}

.awpcp-listing-excerpt-inner {
  margin-right: 50px !important;
  margin: auto !important;
  margin-left: -50px !important;
  width: 140px !important;
  height: 300px !important;
  margin-top: -140px !important;
  box-shadow: 0 8px 16px #888888!important;
}

.awpcp-listing-excerpt-content {
  display: none;
}

.awpcp-listing-excerpt-thumbnail {
  margin-top: 40px! Important;
  margin-left: -7px!important;
}

.awpcp-listing-title {
  margin-top: 140px! Important;
  font-size: 10px;
  text-align: left! Important;
  background-color: yellow;
}

.awpcp-listing-excerpt-extra {
  margin-top: -100px !important;
  margin-left: 20px !important;
}

Проблема в том, что когда я прихожу показывать третье объявление, повторять текущий шаблон двух объявлений рядом, это не работает. Пожалуйста, смотрите страницу для примера. https://adsler.co.uk/browse-adsler/

1 Ответ

0 голосов
/ 10 мая 2019

Здравствуйте, Sta и добро пожаловать в Stack Overflow. Есть несколько проблем с вашим кодом, которые вызывают наложение:

  • неочищенные плавающие элементы (float: left;)
  • дает фиксированную ширину и высоту
  • дает ширину в процентах, которая не позволяет размещать три столбца (объявления) рядом друг с другом
  • с использованием отрицательных полей (margin-top: -140px !important;)

Довольно сложно дать вам простой ответ, который решит все ваши проблемы.

Вот несколько подсказок:

  • При использовании плавающих элементов внутри контейнера, используйте <br style="clear:both">, чтобы убедиться, что расчет высоты и ширины исправлен. Плавающие элементы удаляются из потока документов, в результате чего его родительские контейнеры не учитывают высоту и ширину плавающих дочерних элементов
  • вместо фиксированной ширины, используйте (если требуется) min-width: 100px; (100 как примерное значение), чтобы позволить большему количеству элементов быть в строке. Лучше всего было бы использовать flex box вместе с flex-wrap: wrap; для определения столбцов данных

Правила смешивания, такие как position: relative;, float: left; и margin-top: -140px;, часто являются признаком плохого дизайна GUI. Я бы рекомендовал сначала разработать только один блок, содержащий всю информацию, используя как можно меньше CSS, а на втором шаге проверить, как несколько из этих блоков располагаются рядом друг с другом.

Обновление 1:

Чтобы дать вам представление о том, как это может выглядеть, отметьте Codepen . По сути, мы устанавливаем, что списки занимают 20% от общей ширины, но расходуем их на доступную ширину, если остается место.

Вот оставшийся CSS, который я использовал:

.awpcp-listings {
  display: flex;
  flex-wrap: wrap;
}

.awpcp-listing-excerpt 
{
  min-width: 20%;
  margin-right: 15px;
  box-shadow: 0 8px 16px #888888 !important;
  border-style: solid;
  color: grey;
  border-radius: 4px;
  margin-bottom: 10px;
  flex-grow: 2;
}

.awpcp-listing-excerpt-inner {
  min-width: 140px;
  min-height: 200px;
}
.awpcp-listing-excerpt-content {
  display: none;
}

.awpcp-listing-title {
  font-size: 10px;
  padding: 5px;
  text-align: left;
  background-color: yellow;
}
.awpcp-listing-excerpt-extra {
  margin-left: 20px;
}

Кстати, всегда старайтесь избегать !important, поскольку это делает перезапись невозможной. Вместо этого попытайтесь быть более явным в определении вашего правила.

Краткий пример:

У вас есть <div class="special">This is red</div> и соответствующие правила CSS, чтобы раскрасить DIV в желтый цвет:

div {
  background-color: yellow;
}

но если вы хотите, чтобы он был красным, вы можете быть более точным и добавить правило:

div.special {
  background-color: red;
}

Если вы видите, что один элемент не соответствует вашему правилу CSS, используйте Инструменты разработчика (F12 в большинстве браузеров) и нажмите «Проверить элемент», затем выберите элемент, который необходимо изменить. Затем вы увидите все правила CSS, применяемые к этому объекту, а затем сопоставите свои правила CSS, чтобы перезаписать эти правила, используя точно такое же правило. Для этого необходимо, чтобы ваш CSS-файл был загружен ПОСЛЕ предыдущего загруженного файла.

Обновление 2:

Сначала измените следующие правила CSS, чтобы элементы отображались в столбцах. Все закомментированные правила означают, что они должны быть удалены из таблицы стилей.

/* Inline #51 | https://adsler.co.uk/browse-adsler/ */

.awpcp-listing-excerpt {
  min-width: 32%;
  /* float: left; */
  /* flex-grow: 2; */
}

.awpcp-listing-excerpt-extra {
  /* height: 50%; */
}

/* awpcpstyle.css | https://adsler.co.uk/wp-content/plugins/another-wordpress-classifieds-plugin/resources/css/awpcpstyle.css?ver=3.9.5 */

.awpcp-listing-excerpt-small .awpcp-listing-excerpt-thumbnail, .awpcp-listing-excerpt-medium .awpcp-listing-excerpt-thumbnail {
  /* float: left; */
}

.displayaditemseven {
  /* width: 100%; */
}

.awpcp-listing-excerpt-medium .awpcp-listing-excerpt-thumbnail {
  /* width: auto; */
}

.displayaditemsodd {
  /* width: 100%; */
}

/* so-css-shapely.css | https://adsler.co.uk/wp-content/uploads/so-css/so-css-shapely.css?ver=1557474259 */

.awpcp-listing-excerpt-extra {
  /* height: 0px; */
}

На втором шаге добавьте media query к вашей таблице стилей, чтобы показывать только два столбца, если размер экрана меньше 900 пикселей.

@media (max-width: 900px) {
  .awpcp-listing-excerpt {
    min-width: 46%;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...