Revealing overlay div based on height?












1















I have an image with a text overlay with a title describing the image. On hover, I want the title text to push up, revealing the description text underneath the title. But, my code doesn't work if the divs that contain the text change in height. For example, when the description text is short, the title text moves up too much, resulting in a gap between the two divs.



So, the title text should move up based on the height of the description div. How do I do that?



https://codepen.io/tayanderson/pen/qJrmXE



<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
Caramel Walnut Apple Pie
</div>
<div class="desc">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</div>
</div>

<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
Butter Cake
</div>
<div class="desc">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>

<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
Chocolate Pecan Ice Cream
</div>
<div class="desc">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>

.grid-item {
display: inline-block;
height:300px;
background-size: cover;
width:300px;
position: relative;
overflow: hidden;
color: #fff;

.title {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
padding: 0 20px;
font-size: 35px;
}

.desc {
position: absolute;
bottom: 0;
transform: translateY(100%);
padding: 5px 20px;
}

&:hover .title {
bottom: 30%;
}
&:hover .desc {
transform: translateY(0%);
}
}









share|improve this question























  • I would put the .title in the .desc div as a h4 - for example. This would solve your problem.

    – enxaneta
    Nov 14 '18 at 18:15


















1















I have an image with a text overlay with a title describing the image. On hover, I want the title text to push up, revealing the description text underneath the title. But, my code doesn't work if the divs that contain the text change in height. For example, when the description text is short, the title text moves up too much, resulting in a gap between the two divs.



So, the title text should move up based on the height of the description div. How do I do that?



https://codepen.io/tayanderson/pen/qJrmXE



<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
Caramel Walnut Apple Pie
</div>
<div class="desc">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</div>
</div>

<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
Butter Cake
</div>
<div class="desc">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>

<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
Chocolate Pecan Ice Cream
</div>
<div class="desc">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>

.grid-item {
display: inline-block;
height:300px;
background-size: cover;
width:300px;
position: relative;
overflow: hidden;
color: #fff;

.title {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
padding: 0 20px;
font-size: 35px;
}

.desc {
position: absolute;
bottom: 0;
transform: translateY(100%);
padding: 5px 20px;
}

&:hover .title {
bottom: 30%;
}
&:hover .desc {
transform: translateY(0%);
}
}









share|improve this question























  • I would put the .title in the .desc div as a h4 - for example. This would solve your problem.

    – enxaneta
    Nov 14 '18 at 18:15
















1












1








1








I have an image with a text overlay with a title describing the image. On hover, I want the title text to push up, revealing the description text underneath the title. But, my code doesn't work if the divs that contain the text change in height. For example, when the description text is short, the title text moves up too much, resulting in a gap between the two divs.



So, the title text should move up based on the height of the description div. How do I do that?



https://codepen.io/tayanderson/pen/qJrmXE



<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
Caramel Walnut Apple Pie
</div>
<div class="desc">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</div>
</div>

<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
Butter Cake
</div>
<div class="desc">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>

<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
Chocolate Pecan Ice Cream
</div>
<div class="desc">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>

.grid-item {
display: inline-block;
height:300px;
background-size: cover;
width:300px;
position: relative;
overflow: hidden;
color: #fff;

.title {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
padding: 0 20px;
font-size: 35px;
}

.desc {
position: absolute;
bottom: 0;
transform: translateY(100%);
padding: 5px 20px;
}

&:hover .title {
bottom: 30%;
}
&:hover .desc {
transform: translateY(0%);
}
}









share|improve this question














I have an image with a text overlay with a title describing the image. On hover, I want the title text to push up, revealing the description text underneath the title. But, my code doesn't work if the divs that contain the text change in height. For example, when the description text is short, the title text moves up too much, resulting in a gap between the two divs.



So, the title text should move up based on the height of the description div. How do I do that?



https://codepen.io/tayanderson/pen/qJrmXE



<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
Caramel Walnut Apple Pie
</div>
<div class="desc">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</div>
</div>

<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
Butter Cake
</div>
<div class="desc">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>

<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
Chocolate Pecan Ice Cream
</div>
<div class="desc">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>

.grid-item {
display: inline-block;
height:300px;
background-size: cover;
width:300px;
position: relative;
overflow: hidden;
color: #fff;

.title {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
padding: 0 20px;
font-size: 35px;
}

.desc {
position: absolute;
bottom: 0;
transform: translateY(100%);
padding: 5px 20px;
}

&:hover .title {
bottom: 30%;
}
&:hover .desc {
transform: translateY(0%);
}
}






html css






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 14 '18 at 17:28









taylor018taylor018

254




254













  • I would put the .title in the .desc div as a h4 - for example. This would solve your problem.

    – enxaneta
    Nov 14 '18 at 18:15





















  • I would put the .title in the .desc div as a h4 - for example. This would solve your problem.

    – enxaneta
    Nov 14 '18 at 18:15



















I would put the .title in the .desc div as a h4 - for example. This would solve your problem.

– enxaneta
Nov 14 '18 at 18:15







I would put the .title in the .desc div as a h4 - for example. This would solve your problem.

– enxaneta
Nov 14 '18 at 18:15














3 Answers
3






active

oldest

votes


















2














I came up with this, first I changed your markup a little bit



<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
<div class="title">
<h1>Test</h1>
<p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quibusdam eius perspiciatis similique, unde impedit esse, temporibus quo.</p>
</div>
</div>


Now you have the title and text in the same div, and then you need to change your css a little bit, I translated the div 100% less the height of the title, transform: translateY(calc(100% - 40px)); and then added a transition



.grid-item {
display: inline-block;
height:300px;
background-size: cover;
width:300px;
position: relative;
overflow: hidden;
color: #fff;
padding: 10px;

.title h1 {
font-size: 35px;
margin: 0;
height: 40px;
}

.title p {
margin: 0;
left: 0;
right: 0;
width: 90%;
}

.title {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
transform: translateY(calc(100% - 40px));
transition: all .4s ease-out;
padding: 0 20px;
}

&:hover .title {
transform: translateY(0%);
}
}


Let me know if that what you are looking for! Here you have a codepen.






share|improve this answer
























  • This is perfect! Thanks alot!

    – taylor018
    Nov 14 '18 at 18:27



















1














As I've told you in my comment I would put the .title in the .desc div as a h4 - for example. This would solve your problem. Next come a demo:






.grid-item {
height: 250px;
background-size: cover;
width: 250px;
position: relative;
overflow: hidden;
color: #fff;

display:inline-block;
margin:1em;
}

.grid-item .desc {
position: absolute;
bottom: 0;
transform: translateY(100%);
padding: 5px 20px;
transition: transform 1.5s;
}
.grid-item:hover .desc {
transform: translateY(0%);
}

<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

<div class="desc">
<h4>Title</h4>
Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet
</div>
</div>

<div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

<div class="desc">
<h4>Title</h4>
Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet
</div>
</div>








share|improve this answer































    0














    hmm, or maybe could you place title at the top?



    <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
    <div class="title">
    Short text
    </div>
    <div class="desc">
    ectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    </div>
    </div>


    style:



    .title {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    padding: 0 20px;
    }

    .desc {
    position: absolute;
    bottom: 0;
    transform: translateY(100%);
    padding: 5px 20px;
    word-break: break-all;
    }

    &:hover .title {
    position: relative;
    }
    &:hover .desc {
    transform: translateY(0%);
    position: relative;
    word-break: break-all;
    }


    in that case everything looks more correctly, without jumping the title
    Like here : https://codepen.io/anon/pen/XyMQjO






    share|improve this answer























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53305749%2frevealing-overlay-div-based-on-height%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      3 Answers
      3






      active

      oldest

      votes








      3 Answers
      3






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      2














      I came up with this, first I changed your markup a little bit



      <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
      <div class="title">
      <h1>Test</h1>
      <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quibusdam eius perspiciatis similique, unde impedit esse, temporibus quo.</p>
      </div>
      </div>


      Now you have the title and text in the same div, and then you need to change your css a little bit, I translated the div 100% less the height of the title, transform: translateY(calc(100% - 40px)); and then added a transition



      .grid-item {
      display: inline-block;
      height:300px;
      background-size: cover;
      width:300px;
      position: relative;
      overflow: hidden;
      color: #fff;
      padding: 10px;

      .title h1 {
      font-size: 35px;
      margin: 0;
      height: 40px;
      }

      .title p {
      margin: 0;
      left: 0;
      right: 0;
      width: 90%;
      }

      .title {
      position: absolute;
      left: 0;
      bottom: 0;
      width: 100%;
      transform: translateY(calc(100% - 40px));
      transition: all .4s ease-out;
      padding: 0 20px;
      }

      &:hover .title {
      transform: translateY(0%);
      }
      }


      Let me know if that what you are looking for! Here you have a codepen.






      share|improve this answer
























      • This is perfect! Thanks alot!

        – taylor018
        Nov 14 '18 at 18:27
















      2














      I came up with this, first I changed your markup a little bit



      <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
      <div class="title">
      <h1>Test</h1>
      <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quibusdam eius perspiciatis similique, unde impedit esse, temporibus quo.</p>
      </div>
      </div>


      Now you have the title and text in the same div, and then you need to change your css a little bit, I translated the div 100% less the height of the title, transform: translateY(calc(100% - 40px)); and then added a transition



      .grid-item {
      display: inline-block;
      height:300px;
      background-size: cover;
      width:300px;
      position: relative;
      overflow: hidden;
      color: #fff;
      padding: 10px;

      .title h1 {
      font-size: 35px;
      margin: 0;
      height: 40px;
      }

      .title p {
      margin: 0;
      left: 0;
      right: 0;
      width: 90%;
      }

      .title {
      position: absolute;
      left: 0;
      bottom: 0;
      width: 100%;
      transform: translateY(calc(100% - 40px));
      transition: all .4s ease-out;
      padding: 0 20px;
      }

      &:hover .title {
      transform: translateY(0%);
      }
      }


      Let me know if that what you are looking for! Here you have a codepen.






      share|improve this answer
























      • This is perfect! Thanks alot!

        – taylor018
        Nov 14 '18 at 18:27














      2












      2








      2







      I came up with this, first I changed your markup a little bit



      <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
      <div class="title">
      <h1>Test</h1>
      <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quibusdam eius perspiciatis similique, unde impedit esse, temporibus quo.</p>
      </div>
      </div>


      Now you have the title and text in the same div, and then you need to change your css a little bit, I translated the div 100% less the height of the title, transform: translateY(calc(100% - 40px)); and then added a transition



      .grid-item {
      display: inline-block;
      height:300px;
      background-size: cover;
      width:300px;
      position: relative;
      overflow: hidden;
      color: #fff;
      padding: 10px;

      .title h1 {
      font-size: 35px;
      margin: 0;
      height: 40px;
      }

      .title p {
      margin: 0;
      left: 0;
      right: 0;
      width: 90%;
      }

      .title {
      position: absolute;
      left: 0;
      bottom: 0;
      width: 100%;
      transform: translateY(calc(100% - 40px));
      transition: all .4s ease-out;
      padding: 0 20px;
      }

      &:hover .title {
      transform: translateY(0%);
      }
      }


      Let me know if that what you are looking for! Here you have a codepen.






      share|improve this answer













      I came up with this, first I changed your markup a little bit



      <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
      <div class="title">
      <h1>Test</h1>
      <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quibusdam eius perspiciatis similique, unde impedit esse, temporibus quo.</p>
      </div>
      </div>


      Now you have the title and text in the same div, and then you need to change your css a little bit, I translated the div 100% less the height of the title, transform: translateY(calc(100% - 40px)); and then added a transition



      .grid-item {
      display: inline-block;
      height:300px;
      background-size: cover;
      width:300px;
      position: relative;
      overflow: hidden;
      color: #fff;
      padding: 10px;

      .title h1 {
      font-size: 35px;
      margin: 0;
      height: 40px;
      }

      .title p {
      margin: 0;
      left: 0;
      right: 0;
      width: 90%;
      }

      .title {
      position: absolute;
      left: 0;
      bottom: 0;
      width: 100%;
      transform: translateY(calc(100% - 40px));
      transition: all .4s ease-out;
      padding: 0 20px;
      }

      &:hover .title {
      transform: translateY(0%);
      }
      }


      Let me know if that what you are looking for! Here you have a codepen.







      share|improve this answer












      share|improve this answer



      share|improve this answer










      answered Nov 14 '18 at 18:08









      MartinBAMartinBA

      7161213




      7161213













      • This is perfect! Thanks alot!

        – taylor018
        Nov 14 '18 at 18:27



















      • This is perfect! Thanks alot!

        – taylor018
        Nov 14 '18 at 18:27

















      This is perfect! Thanks alot!

      – taylor018
      Nov 14 '18 at 18:27





      This is perfect! Thanks alot!

      – taylor018
      Nov 14 '18 at 18:27













      1














      As I've told you in my comment I would put the .title in the .desc div as a h4 - for example. This would solve your problem. Next come a demo:






      .grid-item {
      height: 250px;
      background-size: cover;
      width: 250px;
      position: relative;
      overflow: hidden;
      color: #fff;

      display:inline-block;
      margin:1em;
      }

      .grid-item .desc {
      position: absolute;
      bottom: 0;
      transform: translateY(100%);
      padding: 5px 20px;
      transition: transform 1.5s;
      }
      .grid-item:hover .desc {
      transform: translateY(0%);
      }

      <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

      <div class="desc">
      <h4>Title</h4>
      Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet
      </div>
      </div>

      <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

      <div class="desc">
      <h4>Title</h4>
      Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet
      </div>
      </div>








      share|improve this answer




























        1














        As I've told you in my comment I would put the .title in the .desc div as a h4 - for example. This would solve your problem. Next come a demo:






        .grid-item {
        height: 250px;
        background-size: cover;
        width: 250px;
        position: relative;
        overflow: hidden;
        color: #fff;

        display:inline-block;
        margin:1em;
        }

        .grid-item .desc {
        position: absolute;
        bottom: 0;
        transform: translateY(100%);
        padding: 5px 20px;
        transition: transform 1.5s;
        }
        .grid-item:hover .desc {
        transform: translateY(0%);
        }

        <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

        <div class="desc">
        <h4>Title</h4>
        Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet
        </div>
        </div>

        <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

        <div class="desc">
        <h4>Title</h4>
        Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet
        </div>
        </div>








        share|improve this answer


























          1












          1








          1







          As I've told you in my comment I would put the .title in the .desc div as a h4 - for example. This would solve your problem. Next come a demo:






          .grid-item {
          height: 250px;
          background-size: cover;
          width: 250px;
          position: relative;
          overflow: hidden;
          color: #fff;

          display:inline-block;
          margin:1em;
          }

          .grid-item .desc {
          position: absolute;
          bottom: 0;
          transform: translateY(100%);
          padding: 5px 20px;
          transition: transform 1.5s;
          }
          .grid-item:hover .desc {
          transform: translateY(0%);
          }

          <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

          <div class="desc">
          <h4>Title</h4>
          Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet
          </div>
          </div>

          <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

          <div class="desc">
          <h4>Title</h4>
          Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet
          </div>
          </div>








          share|improve this answer













          As I've told you in my comment I would put the .title in the .desc div as a h4 - for example. This would solve your problem. Next come a demo:






          .grid-item {
          height: 250px;
          background-size: cover;
          width: 250px;
          position: relative;
          overflow: hidden;
          color: #fff;

          display:inline-block;
          margin:1em;
          }

          .grid-item .desc {
          position: absolute;
          bottom: 0;
          transform: translateY(100%);
          padding: 5px 20px;
          transition: transform 1.5s;
          }
          .grid-item:hover .desc {
          transform: translateY(0%);
          }

          <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

          <div class="desc">
          <h4>Title</h4>
          Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet
          </div>
          </div>

          <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

          <div class="desc">
          <h4>Title</h4>
          Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet
          </div>
          </div>








          .grid-item {
          height: 250px;
          background-size: cover;
          width: 250px;
          position: relative;
          overflow: hidden;
          color: #fff;

          display:inline-block;
          margin:1em;
          }

          .grid-item .desc {
          position: absolute;
          bottom: 0;
          transform: translateY(100%);
          padding: 5px 20px;
          transition: transform 1.5s;
          }
          .grid-item:hover .desc {
          transform: translateY(0%);
          }

          <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

          <div class="desc">
          <h4>Title</h4>
          Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet
          </div>
          </div>

          <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

          <div class="desc">
          <h4>Title</h4>
          Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet
          </div>
          </div>





          .grid-item {
          height: 250px;
          background-size: cover;
          width: 250px;
          position: relative;
          overflow: hidden;
          color: #fff;

          display:inline-block;
          margin:1em;
          }

          .grid-item .desc {
          position: absolute;
          bottom: 0;
          transform: translateY(100%);
          padding: 5px 20px;
          transition: transform 1.5s;
          }
          .grid-item:hover .desc {
          transform: translateY(0%);
          }

          <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

          <div class="desc">
          <h4>Title</h4>
          Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet Lorem ipsum dolor sit amet
          </div>
          </div>

          <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">

          <div class="desc">
          <h4>Title</h4>
          Lorem ipsum dolor sit amet Lorem ipsum dolor sit ametLorem ipsum dolor sit amet
          </div>
          </div>






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 14 '18 at 18:22









          enxanetaenxaneta

          7,8842518




          7,8842518























              0














              hmm, or maybe could you place title at the top?



              <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
              <div class="title">
              Short text
              </div>
              <div class="desc">
              ectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
              </div>
              </div>


              style:



              .title {
              position: absolute;
              left: 0;
              top: 0;
              width: 100%;
              padding: 0 20px;
              }

              .desc {
              position: absolute;
              bottom: 0;
              transform: translateY(100%);
              padding: 5px 20px;
              word-break: break-all;
              }

              &:hover .title {
              position: relative;
              }
              &:hover .desc {
              transform: translateY(0%);
              position: relative;
              word-break: break-all;
              }


              in that case everything looks more correctly, without jumping the title
              Like here : https://codepen.io/anon/pen/XyMQjO






              share|improve this answer




























                0














                hmm, or maybe could you place title at the top?



                <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
                <div class="title">
                Short text
                </div>
                <div class="desc">
                ectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
                </div>
                </div>


                style:



                .title {
                position: absolute;
                left: 0;
                top: 0;
                width: 100%;
                padding: 0 20px;
                }

                .desc {
                position: absolute;
                bottom: 0;
                transform: translateY(100%);
                padding: 5px 20px;
                word-break: break-all;
                }

                &:hover .title {
                position: relative;
                }
                &:hover .desc {
                transform: translateY(0%);
                position: relative;
                word-break: break-all;
                }


                in that case everything looks more correctly, without jumping the title
                Like here : https://codepen.io/anon/pen/XyMQjO






                share|improve this answer


























                  0












                  0








                  0







                  hmm, or maybe could you place title at the top?



                  <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
                  <div class="title">
                  Short text
                  </div>
                  <div class="desc">
                  ectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
                  </div>
                  </div>


                  style:



                  .title {
                  position: absolute;
                  left: 0;
                  top: 0;
                  width: 100%;
                  padding: 0 20px;
                  }

                  .desc {
                  position: absolute;
                  bottom: 0;
                  transform: translateY(100%);
                  padding: 5px 20px;
                  word-break: break-all;
                  }

                  &:hover .title {
                  position: relative;
                  }
                  &:hover .desc {
                  transform: translateY(0%);
                  position: relative;
                  word-break: break-all;
                  }


                  in that case everything looks more correctly, without jumping the title
                  Like here : https://codepen.io/anon/pen/XyMQjO






                  share|improve this answer













                  hmm, or maybe could you place title at the top?



                  <div class="grid-item" style="background-image: url(https://source.unsplash.com/WLUHO9A_xik/1600x900);">
                  <div class="title">
                  Short text
                  </div>
                  <div class="desc">
                  ectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
                  </div>
                  </div>


                  style:



                  .title {
                  position: absolute;
                  left: 0;
                  top: 0;
                  width: 100%;
                  padding: 0 20px;
                  }

                  .desc {
                  position: absolute;
                  bottom: 0;
                  transform: translateY(100%);
                  padding: 5px 20px;
                  word-break: break-all;
                  }

                  &:hover .title {
                  position: relative;
                  }
                  &:hover .desc {
                  transform: translateY(0%);
                  position: relative;
                  word-break: break-all;
                  }


                  in that case everything looks more correctly, without jumping the title
                  Like here : https://codepen.io/anon/pen/XyMQjO







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 14 '18 at 17:49









                  BartoszTermenaBartoszTermena

                  7381311




                  7381311






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53305749%2frevealing-overlay-div-based-on-height%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Xamarin.iOS Cant Deploy on Iphone

                      Glorious Revolution

                      Dulmage-Mendelsohn matrix decomposition in Python