$('.product__item').hover(function () { $(this).css({ overflow:'visible' }) $(this).children('.product__add').css({ display:'flex' }) }, function () { $(this).css({ overflow:'hidden' }) $(this).children('.product__add').css({ display:'none' }) }); 
 .product { width: 100%; position: relative; } .product__item { width: 150px; display: inline-block; vertical-align: top; position: relative; overflow: hidden; } .product__block { width: 100%; background-color: red; } .product__p { background-color: red; height: 200px; } .product__add { height: 150px; width: 100%; background-color: blue; display: none; z-index: 4; } .product__add-pos { position: absolute; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id="owl__products" class="product"> <div class="product__item"> <div class="product__block product__block-pos"> <div class="product__p"></div> </div> <div class="product__add product__add-pos"></div> </div> <div class="product__item"> <div class="product__block product__block-pos"> <div class="product__p"></div> </div> <div class="product__add product__add-pos"></div> </div> <div class="product__item"> <div class="product__block product__block-pos"> <div class="product__p"></div> </div> <div class="product__add product__add-pos"></div> </div> <div class="product__item"> <div class="product__block product__block-pos"> <div class="product__p"></div> </div> <div class="product__add product__add-pos"></div> </div> <div class="product__item"> <div class="product__block product__block-pos"> <div class="product__p"></div> </div> <div class="product__add product__add-pos"></div> </div> </div> 

http://www.templatemonster.com/demo/53638.html

I need to make a similar block like in the carousel on the main page of this site. That is, that there would be a block with the description of the product product product__p and when you hover over it, additional information about the product product__add product was shown, BUT, this additional unit should not affect the blocks around (which would be position: absolute; ). I made this demo, it is working, but I'm not sure about it, because I indicated position: absolute; for an additional block and did not indicate it top, left, right or bottom, everything works fine product__add appears under (after) product__p . But is it normal, or is it better to do something else?

    1 answer 1

    In the example you cited , the same principle is used (absolute). It is a normal decision.

     .product { width: 100%; position: relative; } .product__item { width: 150px; display: inline-block; vertical-align: top; position: relative; overflow: hidden; margin-bottom: .5rem; } .product__block { width: 100%; background-color: red; } .product__p { background-color: red; height: 200px; } .product__add { height: 150px; width: 100%; background-color: blue; display: none; z-index: 4; } .product__add-pos { position: absolute; left: 0; right: 0; } .product__item:hover { overflow: visible; } .product__item:hover .product__add-pos { display: flex; } 
     <div class="product__item"> <div class="product__block product__block-pos"> <div class="product__p"></div> </div> <div class="product__add product__add-pos"></div> </div> <div class="product__item"> <div class="product__block product__block-pos"> <div class="product__p"></div> </div> <div class="product__add product__add-pos"></div> </div> <div class="product__item"> <div class="product__block product__block-pos"> <div class="product__p"></div> </div> <div class="product__add product__add-pos"></div> </div> <div class="product__item"> <div class="product__block product__block-pos"> <div class="product__p"></div> </div> <div class="product__add product__add-pos"></div> </div> <div class="product__item"> <div class="product__block product__block-pos"> <div class="product__p"></div> </div> <div class="product__add product__add-pos"></div> </div> </div>