0

I want to change the styling of a specific div, when hovering over another div. I try to use CSS to achieve this, but that does not work.

I tried this:

.contact-blocks li .contact-block.icon span i {
  border-radius: 50px;
  border: 2px solid #e3e3e3;
}
.contact-blocks li .contact-block.icon {
  display: inline-block;
  float: left;
  width: 65px;
}
.contact-blocks li .contact-block.text {
  display: inline-block;
}
.contact-blocks li .contact-block.text h3 {
  margin-top: 0px;
  margin-bottom: 0px;
}
.contact-blocks li {
  list-style: none;
  padding: 0;
  margin-bottom: 20px;
  width: 49%;
  display: inline-block;
}
.contact-blocks li .contact-block.icon span.icon-facebook i {
  color: #777777;
  padding: 13px 17.5px;
  font-size: 20px;
}
.contact-blocks li .contact-block.icon span.icon-facebook i:hover {
  background: #3b5998;
  border: 2px solid #3b5998;
  color: #ffffff;
}
#facebook-title:hover ~ #facebook-icon {
  background: #3b5998;
}
<ul class="contact-blocks">
  <li>

    <div id="a" class="contact-block text">
      <h3><a id="facebook-title" target="_blank" href="https://www.facebook.com">Facebook</a></h3>
      <a target="_blank" href="https://www.facebook.com">Contact us at Facebook</a>
    </div>

    <div id="b" class="contact-block icon">
      <a target="_blank" href="https://www.facebook.com">
        <span class="contact-icon icon-facebook"><i id="facebook-icon" class="fa fa-facebook"></i></span>
      </a>
    </div>

  </li>

</ul>

JSFIDDLE: https://jsfiddle.net/36sa7t63/3/

0

3 Answers 3

1

You can make this a CSS only (having script to do hover feels very unnecessary).

Here I changed your markup a little ((quick and dirty to prove concept)), how you could do.

.contact-blocks li .contact-block.icon span i {border-radius: 50px; border: 2px solid #e3e3e3;}
.contact-blocks li .contact-block.icon {
  position: absolute; left: 5px; top: 30px; height: 65px; width: 65px;
  }
.contact-blocks li .contact-block.text {display: inline-block;}
.contact-blocks li .contact-block.text a:first-child {display: block; font-size: 24px;}
.contact-blocks li {list-style: none; padding: 0; margin-bottom: 20px; width: 49%; display: inline-block;}
.contact-blocks li .contact-block.icon span.icon-facebook i {color: #777777; padding: 13px 17.5px; font-size: 20px;}
.contact-blocks li .contact-block.icon span.icon-facebook i:hover {background: #3b5998; border: 2px solid #3b5998; color: #ffffff;}

#facebook-title:hover ~ .contact-block #facebook-icon {background: #3b5998;}
<ul class="contact-blocks">
  <li>

    <div id="a" class="contact-block text">
      <a id="facebook-title" target="_blank" href="https://www.facebook.com">Facebook</a>
      <a target="_blank" href="https://www.facebook.com">Contact us at Facebook</a>
      
      <div id="b" class="contact-block icon">
        <a target="_blank" href="https://www.facebook.com">
          <span class="contact-icon icon-facebook"><i id="facebook-icon" class="fa fa-facebook"></i></span>
        </a>
      </div>
    </div>

  </li>

</ul>

Sign up to request clarification or add additional context in comments.

Comments

0

I'm assuming you are referring to this:

#facebook-title:hover ~ #facebook-icon {background: #3b5998;}

Unfortunately, this isn't possible with CSS.

The elements do not share a parent so your ~ general sibling selector will not work...because they aren't siblings.

One option here is to do what you actually describe in your title...put the hover on the parent div.

.contact-block.text:hover + .contact-block.icon #facebook-icon {
  background: your styles here;
}

JSfiddle Demo

1 Comment

Generally, javascript.
0

div 1 (The one you hover) div 2 (the one you want to change)

.div1:hover .div2
{YOUR STYLE HERE}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.