使用CSS转换属性将文本悬停在图像上

问题描述:

我正在使用transform:translateY();将文本悬停在两张图像上。使用CSS转换属性将文本悬停在图像上

问题是这种方法不允许我将文本放置在图像的特定部分上。

理想情况下,我希望能够将文本更多地移动到左侧或右侧。目前我只能上下移动文本。

替代方法建议始终欢迎。

代码在下面,这里是一个codepen - (将图像悬停在屏幕上,因为我没有包含媒体查询)。

HTML

<div class="projects"> 

      <div class="art-project1"> 
      <img class="img-img" src="https://static.standard.co.uk/s3fs-public/thumbnails/image/2014/12/16/08/138188934.png" width="600" height="400" /> 
      <p class="project-description1">Get Involved</p> 
      </div> 

      <div class="art-project2"> 
      <img class="img-img" src="http://i.huffpost.com/gadgets/slideshows/343100/slide_343100_3557153_free.jpg" width="600"height="500" /> 
      <p class="project-description2">Be Apart</p> 
      </div> 
     </div> 

CSS

body { 
background-color:#f5f5dc; 
} 

* { 
    box-sizing: border-box; 
} 

p { 
    color: #3232CD; 
    font-weight:bold; 
    font-size: 2rem; 
} 

.projects { 
    margin-left: auto; 
    margin-right: auto; 
    display: inline-block; 
} 
/* Images -------------------*/ 
.img-img { 
    padding-top: 80px; 
    display: block; 
    margin-left: auto; 
    margin-right: auto; 
    max-width: 100%; 
    height: auto; 
} 

.art-project1 { 
    display: inline-block; 
    vertical-align: middle; 
    margin-left: 20%; 
    margin-right: auto; 
    max-width: 100%; 
    height: auto; 
} 

.art-project2 { 
    display: inline-block; 
    vertical-align: middle; 
    margin-left: -20%; 
    margin-right: auto; 
    margin-top:10%; 
    max-width: 100%; 
    height: auto; 
} 

.project-description1 { 
    position:absolute; 
    color: #3232CD; 
    visibility: hidden; 
    opacity: 0; 
    transform:translateY(-1000%); 
} 
.art-project1:hover .project-description1 { 
    visibility: visible; 
    opacity: 1; 
    -o-transition:.5s; 
    -ms-transition:.5s; 
    -moz-transition:.5s; 
    -webkit-transition:.5s; 
    /* ...and now for the proper property */ 
    transition:.70s; 
} 

.project-description2 { 
    position:absolute; 
    color: #3232CD; 
    visibility: hidden; 
    opacity: 0; 
    transform:translateY(-400%); 
} 

.art-project2:hover .project-description2 { 
    visibility: visible; 
    opacity: 1; 
    -o-transition:.5s; 
    -ms-transition:.5s; 
    -moz-transition:.5s; 
    -webkit-transition:.5s; 
    /* ...and now for the proper property */ 
    transition:.70s; 
} 
+0

_“理想情况下,我希望能够将文本向左或向右移动的自由度,此刻我只能上下移动文本。”_ - 并且您是否尝试过想想'translateY'中的'Y'代表第二个...? – CBroe

+0

@CBroe是的,我有。你是否想要hel p或只是添加一个居高临下的评论? –

+0

那么你的实际问题是什么?与'translateY'相同,您可以将元素“移动”到Y轴,'translateX'允许您在X轴上执行相同的操作,或者使用'translate'同时在两个方向上执行操作。如果你知道这一点,那么请解释一下如何不适合你。 – CBroe

尝试使用translate();)

希望这有助于!

+1

谢谢,我的印象是,只有'translateY()'或'translateX()' 才能完成工作:) –

如果您在某个元素上使用position: absolute,则首先需要给它的父容器position relative。然后,你可以简单地使用topleft(或bottomright参数绝对元素位置,用百分比或像素值 - 无需transform: translate在所有的(除非你需要准确定心)

body { 
 
background-color:#f5f5dc; 
 
} 
 

 
* { 
 
    box-sizing: border-box; 
 
} 
 

 
p { 
 
    color: #3232CD; 
 
    font-weight:bold; 
 
    font-size: 2rem; 
 
} 
 

 
.projects { 
 
    margin-left: auto; 
 
    margin-right: auto; 
 
    display: inline-block; 
 
} 
 
/* Images -------------------*/ 
 
.img-img { 
 
    padding-top: 80px; 
 
    display: block; 
 
    margin-left: auto; 
 
    margin-right: auto; 
 
    max-width: 100%; 
 
    height: auto; 
 
} 
 

 
.art-project1 { 
 
    position: relative; 
 
    display: inline-block; 
 
    vertical-align: middle; 
 
    left: 20%; 
 
    max-width: 100%; 
 
    height: auto; 
 
} 
 

 

 
.project-description1 { 
 
    position:absolute; 
 
    top: 15%; 
 
    left: 6%; 
 
    color: #3232CD; 
 
    visibility: hidden; 
 
    opacity: 0; 
 
} 
 
.art-project1:hover .project-description1 { 
 
    visibility: visible; 
 
    opacity: 1; 
 
    -o-transition:.5s; 
 
    -ms-transition:.5s; 
 
    -moz-transition:.5s; 
 
    -webkit-transition:.5s; 
 
    /* ...and now for the proper property */ 
 
    transition:.70s; 
 
} 
 

 
    -moz-transition:.5s; 
 
    -webkit-transition:.5s; 
 
    /* ...and now for the proper property */ 
 
    transition:.70s; 
 
}
<div class="projects"> 
 

 
      <div class="art-project1"> 
 
      <img class="img-img" src="https://static.standard.co.uk/s3fs-public/thumbnails/image/2014/12/16/08/138188934.png" width="600" height="400" /> 
 
      <p class="project-description1">Get Involved</p> 
 
      </div>