buriedinkant
buriedinkant

Reputation: 383

How to increase size of something in class, but not other elements in class?

Let's say I have four images inside a div. they all have a width of 5.5%

[_o__o__o__o_]

I want to use javascript to change the target that is moused over (hovered on), and have it look like this:

[_o__O__o__o_]

so I made the width of the target increase however it also pushes the other elements to the side instead of staying where they are so it's more like:

[_o___O___o__o_]

I don't know how to make the other elements stay exactly where they are instead of being pushed.

The issue is that YES I am successfully able to alter the width. BUT changing the width of one element pushes the surrounding elements to the respective right and left. jsbin: https://jsbin.com/zujutamazo/edit?html,css,js,output

Upvotes: 1

Views: 74

Answers (2)

edonbajrami
edonbajrami

Reputation: 2206

You can use flexbox for this one:

.wrapper {
		display: flex;
		display: -webkit-flex;
		display: -moz-flex;
        width: 400px;
  background-color: red;
}

.item {
  position: relative;
  width: 25%;
  height: 200px;
}

.circle {
  position: absolute;
  bottom: 20px;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  background: white;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  transition: all .3s;
}

.item1 { background-color: blue; } 
.item2 { background-color: red; } 
.item3 { background-color: orange; } 
.item4 { background-color: yellow; } 

.item:hover .circle{
  background-color: black;
  height: 40px;
  width: 40px;
}
<div class="wrapper">
	<div class="item item1">
       <div class="circle"></div>
    </div>
	<div class="item item2">
       <div class="circle"></div>
    </div>
	<div class="item item3">
       <div class="circle"></div>
    </div>
	<div class="item item4">
       <div class="circle"></div>
    </div>
</div>

Upvotes: 1

Sebastien Daniel
Sebastien Daniel

Reputation: 4778

As I was explaining, you need to set a higher z-index to "be above" the non-hovered boxes. And set negative left-right margins, equivalent to the additional width from hovering to prevent everything from moving around.

Below is a working example, with percentages.

body {
        width: 300px;
        height: 100px;
     }
     
 .myClass {
    width: 20%;
    height: 50%;   
    position: relative;
    z-index: 1;
    float: left;
  }
  
  .myClass:hover {
    width: 30%;
    height: 70%;
    z-index: 10;
    margin: 0 -5%;
  }
  
  body .myClass:nth-child(1) {
    background-color: red;
  }
  
  body .myClass:nth-child(2) {
    background-color: green;
  }
  
  body .myClass:nth-child(3) {
    background-color: blue;
  }
  
  body .myClass:nth-child(4) {
    background-color: yellow;
  }
<html>
 <head>
 
 </head>    
 <body>
  <div class="myClass"></div>
  <div class="myClass"></div>
  <div class="myClass"></div>
  <div class="myClass"></div>
</body>
</html>

Upvotes: 0

Related Questions