CSS как сделать так, чтобы текст отображался рядом с изображением при наведении курсора вместо него? - PullRequest
2 голосов
/ 23 апреля 2020

Я пытался выяснить, как можно сделать так, чтобы блок текста появлялся сбоку изображения, когда он висел над ним, а не появлялся поверх него, однако, похоже, я не могу найти никаких объяснений чему-либо другому чем текст на самом изображении. Это то, с чем я экспериментировал (адаптировано из w3schools), на данный момент на нем только текст. Если бы кто-нибудь мог отредактировать его так, чтобы текст перешел на ту сторону, которая была бы невероятно полезной.

.container {
  position: relative;
  width: 50%;
}

.image {
  opacity: 1;
  display: block;
  width: 100%;
  height: auto;
  transition: .5s ease;
  backface-visibility: hidden;
}

.middle {
  transition: .5s ease;
  opacity: 0;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  text-align: center;
}

.container:hover .image {
  opacity: 0.3;
}

.container:hover .middle {
  opacity: 1;
}

.text {
  color: black;
  font-size: 16px;
  padding: 16px 32px;
}
<div class="container">
  <img src="https://miro.medium.com/max/1200/1*mk1-6aYaf_Bes1E3Imhc0A.jpeg" alt="placeholder" class="image" style="width:100%">
  <div class="middle">
    <div class="text">This should be to the side of the image</div>
  </div>
</div>

Ответы [ 2 ]

3 голосов
/ 23 апреля 2020

Если я правильно понимаю, вы хотите, чтобы текст находился вне изображения.

Вы используете position: relative на .container, поэтому .middle останется внутри него, удалив что решит проблему:

.container {
  /* position: relative; */
  width: 50%;
}

.image {
  opacity: 1;
  display: block;
  width: 100%;
  height: auto;
  transition: .5s ease;
  backface-visibility: hidden;
}

.middle {
  transition: .5s ease;
  opacity: 0;
  position: absolute;
  top: 0;
  left: 50%;
  /* transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  text-align: center; */
}

.container:hover .image {
  opacity: 0.3;
}

.container:hover .middle {
  opacity: 1;
}

.text {
  color: black;
  font-size: 16px;
  padding: 16px 32px;
}
<div class="container">
  <img src="https://via.placeholder.com/350x150" alt="placeholder" class="image" style="width:100%">
  <div class="middle">
    <div class="text">This should be to the side of the image</div>
  </div>
</div>
0 голосов
/ 23 апреля 2020

Проверьте, нужно ли вам это (сделал быстрый пример):

.container {
  display: flex;
}

.leftBlock {
  width: 50%;
  height: auto;
  transition: all 0.3s ease;
}

.leftBlock:hover {
  opacity: 0.5;
  
}

.leftBlock:hover + .rightBlock {
  opacity: 1;
}

.rightBlock {
  right: 0;
  background-color: #222;
  flex-grow: 1;
  text-align: center;
  vertical-align: middle;
  opacity: 0;
  transition: all 0.4s ease;
  color: #fff;
}
<div class="container">
  <img src="https://images.pexels.com/photos/3683056/pexels-photo-3683056.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" class="leftBlock">
  <div class="rightBlock">Text Goes Here</div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...