Эффект hover
не является мобильным (хотя появляется все больше и больше «чувствительных к зависанию» устройств). Чтобы приспособить большинство устройств, я часто использую :hover
и :focus
для «выпадающих» вещей. Однако для этого нужны «фокусируемые» элементы, для которых я обычно использую тег <a>
nchor.
Но сначала: смысл в вашем коде - это согласованность, поскольку вы сочетаете строчные и прописные буквы в #content
и id="Content"
. Вот почему это не работает в любом случае.
Отвечая на ваши вопросы:
1) сделайте верхний / нижний регистр непротиворечивым!
2) Чтобы создать наведение с постоянством, активируйте отображение «контента» с фокусируемым » триггерный элемент
При наведении / щелчке внешний <a>
остается сфокусированным и, следовательно, его родной элемент #content
виден. При наведении курсора .shorttext
будет отображаться его брат .longtext
.
При нажатии .shorttext
(фактически в любом месте #content
) окно содержимого снова закроется, поскольку внешний <a>
снова потеряет фокус.
FYI-1, атрибут display
не анимируемый, поэтому вам понадобится альтернатива, когда вам понадобится переход к какому-либо элементу. В этом случае используется opacity
от 0 до 1 (необязательно в сочетании с width
и height
, от 0 до 300 пикселей).
FYI-2, используя href="javascript:void(0)"
вместо href="#"
запретит браузерам добавлять записи в свой журнал истории при каждом клике.
FYI-3 final, по умолчанию используются классы CSS, это обобщенно c, что значительно упрощает копирование того же поведения в ваш HTML, без повторения CSS каждый раз. Идентификаторы указаны c и требуют, чтобы вы копировали равные CSS снова и снова.
a {
color: currentColor;
text-decoration: none
}
.picture {
position: fixed;
left: 0px;
right: 0px;
top: 0px;
bottom: 0px;
margin: auto;
width: 375px;
height: 375px;
}
.content {
/* display: none; remove */
opacity: 0; /* add */
transition: all 150ms ease-in-out; /* add */
position: fixed;
left: -800px;
right: 0px;
top: 0px;
bottom: 0px;
margin: auto;
width: 0; /* [OPTIONAL] modify from 300px */
height: 0; /* ditto */
background-color: #7377a8;
}
.trigger:hover+.content,
.trigger:focus+.content {
/* add, for persistent display of content. click elsewhere to close again */
/* display: block; remove */
opacity: 1; /* add */
width: 300px; /* [OPTIONAL] add, see above */
height: 300px;
}
.shorttext { /* eye-candy only */
width: 100%;
text-align: center
}
.longtext {
display: none
}
.shorttext:hover+.longtext {
display: block;
}
/* little debug helper */
[outlines="1"] * {
outline: 1px dashed purple
}
<body outlines="0">
<a class="trigger" href="javascript:void(0)"><img src="https://picsum.photos/300?random=1" alt="Picture" class="picture" /></a>
<div class="content">
<h3 class="shorttext">short intro text, hover me</h3>
<p class="longtext">Lorem ipsum dolor sit amet, exerci dolorem est ad. Sumo rebum prompta vim ad. Legendos expetendis id sed. Ex ius quem accusamus, pri et
deleniti copiosae.</p>
</div>
</body>