override overflow:hidden with z-index

45,091

Solution 1

I assume you don't need .coda_bubble to be a child of .overflow. If not then move it out and create a positioning div to hold both children.

<html>
<head>
<title>Override overflow:hidden</title>
<link href="http://www.myjquery.co.uk/jslib/jquery_plugins/coda_bubble/bubble.css" rel="stylesheet" type="text/css" media="all" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/jquery-ui.min.js"></script>
<script type="text/javascript" src="http://www.myjquery.co.uk/jslib/jquery_plugins/coda_bubble/jquery.codabubble.js"></script>
<script type="text/javascript">
$(function(){
   opts = {
      distances : [40,40],
      leftShifts : [0,0],
      bubbleTimes : [400,400],
      hideDelays : [0,0],
      bubbleWidths : [200,200],
      bubbleImagesPath : "YOUR RELATIVE PATH TO SKIN FOLDER",
      msieFix : true
   };
   $('.coda_bubble').codaBubble(opts);
});
</script> 
<style type="text/css">
body{
    margin:0;
    padding:0;
    }
#wrapper{
    width:300px;
    margin:200px auto;
    }
.overflow{
    overflow:hidden;
    width:120px;
    height:80px;
    position:absolute; /*May not be needed.*/
    }
.position {
    width:120px;
    height:80px;
    float:left;
}
.coda_bubble{
    /*z-index:100;/****NOT WORKING*******/
    }
</style>
</head>

<body>
<div id="wrapper">
    <div class="position">
        <div class="overflow">
           [overflow content]
        </div>
        <div class="coda_bubble">
            <div>
                <p class="trigger">Trigger Bubble</p>
            </div>
            <div class="bubble_html">
               [BUBBLE CONTENT]
            </div>
        </div>
    </div>

    <div class="position">
        <div class="overflow" style="overflow:">
           [overflow content]
        </div>
        <div class="coda_bubble">
            <div>
                <p class="trigger">Trigger Bubble</p>
            </div>
            <div class="bubble_html">
               [BUBBLE CONTENT]
            </div>
        </div>
    </div>
</div>
</body>
</html>

Solution 2

I would calculate the offset position from the window, remove it from its parent and attach it to the body.

Eg:

var left, top;
left = jQuery(element).offset().left;
top = jQuery(element).offset().top;
jQuery(element)
  .appendTo('body')
  .css({
    'position': 'absolute',
    'left': left + 'px',
    'top': top + 'px'
  });

Solution 3

You can't. overflow: hidden; Hides content outside the element. Period.

z-index applies to absolute AND relatively positioned elements, just differently, despite what someone else said.

EDIT You could put some padding-top on that particular div, if you can live with that padding, that is. The div would need to be a little wider, too.

EDIT 2 As others have stated, though position: relative; and position: absolute; are probably more common, yes, z-index works with position: fixed; also, just not for position: static; I overlooked those.

Solution 4

Just a correction: z-index applies to position: relative, position:absolute AND position:fixed. To answer the original question - there's no way in CSS to make a child of an overflow: hidden element show it's contents outside the parent borders, you must change the hierarchy.

Share:
45,091
mukamaivan
Author by

mukamaivan

Updated on November 07, 2020

Comments

  • mukamaivan
    mukamaivan over 3 years

    Am using coda_bubble jquery plugin, and i need to make my bubble pop out within an overflow hidden div. here is my sample code.

    <html>
    <head>
    <title>Override overflow:hidden</title>
    <link href="http://www.myjquery.co.uk/jslib/jquery_plugins/coda_bubble/bubble.css" rel="stylesheet" type="text/css" media="all" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/jquery-ui.min.js"></script>
    <script type="text/javascript" src="http://www.myjquery.co.uk/jslib/jquery_plugins/coda_bubble/jquery.codabubble.js"></script>
    <script type="text/javascript">
    $(function(){
       opts = {
          distances : [40,40],
          leftShifts : [0,0],
          bubbleTimes : [400,400],
          hideDelays : [0,0],
          bubbleWidths : [200,200],
          bubbleImagesPath : "YOUR RELATIVE PATH TO SKIN FOLDER",
          msieFix : true
       };
       $('.coda_bubble').codaBubble(opts);
    });
    </script> 
    <style type="text/css">
    body{
        margin:0;
        padding:0;
        }
    #wrapper{
        width:300px;
        margin:200px auto;
        }
    .overflow{
        width:120px;
        height:80px;
        overflow:hidden;
        float:left;
        }
    .coda_bubble{
        z-index:100;/****NOT WORKING*******/
        }
    </style>
    </head>
    
    <body>
    <div id="wrapper">
        <div class="overflow">
           <div class="coda_bubble">
                <div>
                    <p class="trigger">Trigger Bubble</p>
                </div>
                <div class="bubble_html">
                   [BUBBLE CONTENT]
                </div>
            </div>
        </div>
        <div class="overflow" style="overflow: visible;">
           <div class="coda_bubble">
                <div>
                    <p class="trigger">Trigger Bubble</p>
                </div>
                <div class="bubble_html">
                   [BUBBLE CONTENT]
                </div>
            </div>
        </div>
    </div>
    </body>
    </html>