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

时间:2017-06-14 12:12:53

标签: css hover transform

我正在使用transform:translateY();将文字悬停在两张图片上。

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

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

随时欢迎替代方法建议。

代码位于下方,此处为codepen - (由于我未包含媒体查询,因此将图片悬停在屏幕全宽处。) < / p>

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;
}

2 个答案:

答案 0 :(得分:2)

尝试使用translate();)

希望这有帮助!

答案 1 :(得分:0)

如果对元素使用position: absolute,则首先需要为其父容器position relative。然后,您只需使用topleft(或bottomright参数来定位绝对元素(百分比或像素值),无需{{1}完全(除非你需要精确居中)。

&#13;
&#13;
transform: translate
&#13;
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;
}
&#13;
&#13;
&#13;