override overflow:hidden with z-index

前端 未结 6 1386
误落风尘
误落风尘 2021-01-11 13:41

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.



<         


        
相关标签:
6条回答
  • 2021-01-11 14:02

    The z-index property ONLY work in elements that have position option set to absolute or relative.

    In other words you ALWAYS need positon to work with z-index.

    0 讨论(0)
  • 2021-01-11 14:03

    The z-index property applies to those elements having position set to absolute. Try this css instead:

    .coda_bubble{
      position:absolute;
      z-index:100;/****NOT WORKING*******/
    }
    
    0 讨论(0)
  • 2021-01-11 14:05

    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.

    0 讨论(0)
  • 2021-01-11 14:10

    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>
    
    0 讨论(0)
  • 2021-01-11 14:15

    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'
      });
    
    0 讨论(0)
  • 2021-01-11 14:17

    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.

    0 讨论(0)
提交回复
热议问题