我正在创建一个网格画廊。在每个img
下面,我有一个图片的简短名称p
。
<div id="projects-grid">
<figure class="project-tile">
<a href="">
<img src="Portfolio_project_img_1.png" alt="">
<p>Tribute Page</p>
</a>
</figure>
</div>
在每个p
之前和之后,当鼠标悬停在p
上时,我需要显示以下字符:“<”- before;“/>”-在此之后,我需要此过渡平滑,如ease-in-out, 0.3s
我现在有这样的CSS代码:
#projects-grid p:hover::after {
content: " />";
font-size: 1.1rem;
vertical-align: baseline;
color: orange;
}
#projects-grid p:hover::before {
content: "< ";
font-size: 1.1rem;
vertical-align: 5%;
color: orange;
}
我尝试将transition
添加到#projects-grid p:hover::after
和#projects-grid p:hover::before
,但它不起作用。
那么,如何专门针对:hover::after
和:hover::before
中的那些字符呢?
1条答案
按热度按时间new9mtju1#
要平滑地转换某些内容,您需要一个支持这种转换的特定CSS属性。
我的解决方案是从
opacity:0
过渡到opacity:1
为了避免内容在悬停时跳来跳去,伪元素总是占用页面上的空间,它们只是“看穿”,直到你将鼠标悬停在段落上。
你的问题很可能是你只是试图“将元素转换为存在”,或者你使用了一个不支持平滑动画转换的属性--比如
visibility:hidden
到visibility:visible
--它只是瞬间翻转。visibility
是不平滑的,只是从可见到不可见的瞬间翻转。