Как настроить один элемент на другой в абсолютном положении? - PullRequest
0 голосов
/ 09 июля 2019

Что я хочу сделать:

что блочный элемент регулирует свою высоту относительно элемента в абсолютном положении.

проблематичен:

Если цена слишком длинная, цена покидает блок.

Условия:

  • Для перехода по ссылке элемент блока должен быть кликабельным.
  • Цена не должна быть в ссылке для ссылки.

Что я пытался сделать:

Сделайте элемент цены кликабельным в javascript, чтобы перейти по ссылке и удалить абсолютную позицию, это решение не было выбрано, потому что вы не можете нажать «CTRL + CLICK», чтобы открыть новую вкладку.

Дело, которое хорошо работает:

* {
  box-sizing: border-box;
}

.block {
  background: #3CAEA3;
  display: inline-block;
  position: relative;
}

.link {
  display: inline-block;
  padding: 20px 20px 40px 20px;
  text-align: center;
  text-decoration: none;
}

.title {
  font-size: 20px;
}

.subtitle {
  font-size: 16px;
}

.price {
  height: 20px;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  text-align: center;
  pointer-events: none;
}
<div class="block">
  <a class="link" href="https://google.com">
    <div class="title">Coffee table</div>
    <div class="subtitle">Made of wood</div>
  </a>
  <div class="price">
     The price is: 100€
  </div>
</div>

Случай, который не работает:

* {
  box-sizing: border-box;
}

.block {
  background: #3CAEA3;
  display: inline-block;
  position: relative;
}

.link {
  display: inline-block;
  padding: 20px 20px 40px 20px;
  text-align: center;
  text-decoration: none;
}

.title {
  font-size: 20px;
}

.subtitle {
  font-size: 16px;
}

.price {
  height: 20px;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  text-align: center;
  pointer-events: none;
}
<div class="block">
  <a class="link" href="https://google.com">
    <div class="title">Coffee table</div>
    <div class="subtitle">Made of wood</div>
  </a>
  <div class="price">
     The price is tooooo long: 100€
  </div>
</div>

У вас есть какие-нибудь решения моей проблемы?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 09 июля 2019

Я думаю, что использование flex решит вашу проблему.

 * {
  box-sizing: border-box;
}

.block {
  background: #3CAEA3;
  display: inline-flex;
  justify-content: space-between;
  flex-direction: column;
}

.link {
  display: inline-block;
  padding: 20px;
  text-align: center;
  text-decoration: none;
}

.title {
  font-size: 20px;
}

.subtitle {
  font-size: 16px;
}

.price {
  padding: 20px;
  text-align: center;
  /*pointer-events: none;*/
}

    <div class="block">
  <a class="link" href="https://google.com">
    <div class="title">Coffee table</div>
    <div class="subtitle">Made of wood</div>
  </a>
  <a href="https://www.apple.com/" class="link price">
     The price is tooooo long: 100€
  </a>
</div>
0 голосов
/ 10 июля 2019

Я нашел решение!

.block {
  background: #3CAEA3;
  position: relative;
  text-align: center;
  max-width: 200px;
  margin: 10px;
}

.link,
.fakeLink {
  padding: 20px;
}

.link {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  cursor: pointer;
  text-decoration: none;
}

.fakeLink{
  opacity: 0;
}

.price {
  padding: 0 10px 10px 10px;
  text-align: center;
  pointer-events: none;
}

.title {
  font-size: 20px;
}

.subtitle {
  font-size: 16px;
}
<div class="block">
   <div class="fakeLink">
    <div class="title">Coffee table</div>
    <div class="subtitle">Made of wood</div>
  </div>
  <div class="price">
     The price is tooooo tooo tooo tooo too long: 100€
  </div>
  <a class="link" href="https://www.google.com">
    <div class="title">Coffee table</div>
    <div class="subtitle">Made of wood</div>
  </a>  
</div>

<div class="block">
   <div class="fakeLink">
    <div class="title">Coffee table</div>
    <div class="subtitle">Made of wood</div>
  </div>
  <div class="price">
     The price is 100€
  </div>
  <a class="link" href="https://www.google.com">
    <div class="title">Coffee table</div>
    <div class="subtitle">Made of wood</div>
  </a>  
</div>

Спасибо за вашу помощь.

0 голосов
/ 09 июля 2019

* {
  box-sizing: border-box;
}

.block {
  background: #3CAEA3;
  display: inline-block;
  position: relative;
}

.link {
  margin-bottom: 50px;
  display: inline-block;
  padding: 20px 20px 40px 20px;
  text-align: center;
  text-decoration: none;
}

.title {
  font-size: 20px;
}

.subtitle {
  font-size: 16px;
}

.price {
  height: auto;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  text-align: center;
  pointer-events: none;
}
<div class="block">
  <a class="link" href="https://google.com">
    <div class="title">Coffee table</div>
    <div class="subtitle">Made of wood</div>
  </a>
  <div class="price">
     The price is toooooooo toooooo tooooo tooooo long: 100€
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...