Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

using :focus to show something with a button

I have a question regarding :focus. I want to have a button/text that shows <div class="contentbox2"> when clicked, but i’m really struggling with that. I tried several ways but i can only make the contentbox show up when clicked and not "connect" it with the button.

What I want is to show the div after clicking the button and then disapear when clicking anywhere on the screen.

.morebuttonbox {
  height: 60px;
  width: 70px;
  background-image: repeating-linear-gradient( 0deg, #ecd0ff, #ecd0ff 1px, transparent 0, transparent 50%);
  background-size: 8px 8px;
  background-color: #fcf8f8;
  position: absolute;
  margin-top: 260px;
  border: 1px solid black;
  border-color: white #ae9cb9 #8b7c94 #7d6f85;
}

.morebutton {
  font-size: 14px;
  background: #e0e0e0;
  padding: 2px;
  width: 50px;
  text-align: center;
  margin: auto;
  margin-top: 16px;
  border: 1px ridge black;
  border-color: white #ae9cb9 #8b7c94 #7d6f85;
}

.contentbox2 {
  background: white;
  height: 130px;
  width: 301px;
  border: 1px solid black;
  border-color: white #ae9cb9 #8b7c94 #7d6f85;
  position: absolute;
  margin-top: 190px;
  margin-left: 69px;
  z-index: 1;
  opacity: 0;
}

.byi {
  width: 270px;
  height: 50px;
  word-break: break-word;
  margin-left: 15px;
  margin-top: 10px;
}

.dni {
  width: 270px;
  height: 50px;
  word-break: break-word;
  margin-top: 20px;
}

.more:focus~.contentbox2 {
  opacity: 1;
  z-index: 10;
}
<div class="morebuttonbox">
  <div class="morebutton">
    <a href="#" class="more">
      more
    </a>

  </div>
</div>

<div class="contentbox2">
  <div class="byi">
    <span style="background-color:#ecd0ff;color:#7d6f85;padding:1px;padding-left:5px;padding-right:5px; border-radius: 3px;   border: 1px solid black;
  border-color: white #ae9cb9 #8b7c94 #7d6f85;">byi</span> text text text text text text text text text text text text text ...

    <div class="dni">
      <span style="background-color:#ecd0ff;color:#7d6f85;padding:1px;padding-left:5px;padding-right:5px; border-radius: 3px;   border: 1px solid black;
  border-color: white #ae9cb9 #8b7c94 #7d6f85;">dni</span> text text text text text text text text text text text text text ...

    </div>
  </div>
</div>

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

See my comment to your question for the main issue. One solution would be to use the :has pseudo-class and then target the sibling of the .morebuttonbox container instead:

.morebuttonbox {
  height: 60px;
  width: 70px;
  background-image: repeating-linear-gradient( 0deg, #ecd0ff, #ecd0ff 1px, transparent 0, transparent 50%);
  background-size: 8px 8px;
  background-color: #fcf8f8;
  position: absolute;
  margin-top: 260px;
  border: 1px solid black;
  border-color: white #ae9cb9 #8b7c94 #7d6f85;
}

.morebutton {
  font-size: 14px;
  background: #e0e0e0;
  padding: 2px;
  width: 50px;
  text-align: center;
  margin: auto;
  margin-top: 16px;
  border: 1px ridge black;
  border-color: white #ae9cb9 #8b7c94 #7d6f85;
}

.contentbox2 {
  background: white;
  height: 130px;
  width: 301px;
  border: 1px solid black;
  border-color: white #ae9cb9 #8b7c94 #7d6f85;
  position: absolute;
  margin-top: 190px;
  margin-left: 69px;
  z-index: 1;
  opacity: 0;
}

.byi {
  width: 270px;
  height: 50px;
  word-break: break-word;
  margin-left: 15px;
  margin-top: 10px;
}

.dni {
  width: 270px;
  height: 50px;
  word-break: break-word;
  margin-top: 20px;
}

.morebuttonbox:has(.more:focus)~.contentbox2 {
  opacity: 1;
  z-index: 10;
}
<div class="morebuttonbox">
  <div class="morebutton">
    <button class="more">
      more
    </button>
  </div>
</div>

<div class="contentbox2">
  <div class="byi">
    <span style="background-color:#ecd0ff;color:#7d6f85;padding:1px;padding-left:5px;padding-right:5px; border-radius: 3px;   border: 1px solid black;
  border-color: white #ae9cb9 #8b7c94 #7d6f85;">byi</span> text text text text text text text text text text text text text ...

    <div class="dni">
      <span style="background-color:#ecd0ff;color:#7d6f85;padding:1px;padding-left:5px;padding-right:5px; border-radius: 3px;   border: 1px solid black;
  border-color: white #ae9cb9 #8b7c94 #7d6f85;">dni</span> text text text text text text text text text text text text text ...

    </div>
  </div>
</div>
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading