2012-04-17 14 views
7

親のオーバーフローが隠されていても、DIV内の1つの要素のオーバーフローを許可する方法、CSSまたはJavaScriptはありますか?DIV内の1つの要素だけがオーバーフローする

私はoverflow: hiddenを使ってスライドを隠すjQueryスライダを書いています。

<div class="container"> 
    <img src="image.jpg" /> 
    <div class="text"> 
     THIS TEXT IS HIDDEN WHEN POSITIONED OUTSIDE OF .container 
    </div> 
</div> 

CSS:

.container{ 
    overflow:hidden; 
    position: relative; 
    width: 500px; height: 250px; 
} 

でも、私は自然にオーバーフローする画像を必要としています。

+0

マークアップで何かを変更しない限り、それは不可能だと思います。希望の効果を示すフィドルを設定します。 – fcalderan

+0

javascriptを使ってコンテナの幅を画像の幅と同じに設定できますか? – vol7ron

+0

できません。 CSSには「オーバーフロー:img以外は隠されています」がありません。マークアップを改訂し、余分なコンテナを追加する必要があります。 –

答えて

8

position: relative;を削除してください。 overflow: hidden;と同じ要素に配置すると、要素が非表示になります。本当に必要な場合は、.containerの親に置きます(ツリー内では、overflow: hiddenの要素よりも上位です)。

jsFiddle Demo
Explanatory article

#wrap { position: relative; } 
 

 
.container{ 
 
    overflow:hidden; 
 
    width: 300px; height: 200px; 
 
    padding: 10px; 
 
    background-color: cyan; 
 
} 
 

 
.text { 
 
    position: absolute; 
 
    top: 280px; left: 0; 
 
    border: 1px solid red; 
 
}
<div id="wrap"> 
 
    <div class="container"> 
 
    Container 
 
    <div class="text">Not hidden anymore when positioned outside of .container</div> 
 
    </div> 
 
</div>

+1

これは答えです...どうですか?相対位置を削除すると、相対スライスがOPスライダーを壊します。 –

+0

@MarcBあなたは私の答えの拡張バージョンを読んでいないかもしれません。 – kapa

0

jQueryの例

$('.text').each(function(){ 
    var t = $(this);     // text div 
    var c = t.closest('.container'); // container parent 
    var i = c.children('img:first'); // container image 
    t.width(c.width());    // set text width = to container width 
    c.width(i.width());    // set container width = to text width 
}); 

注:

  1. これは、パディング/マージン/ボーダーの影響を受けませんが、使用できる基本ロジックです。
  2. コンテナの幅に等しいテキスト幅を設定するだけで、それを宣言するZインデックスとオーバーフローが(500pxなどに、あなたはまた、単にテキストのdivの幅を設定することができます)に適用されていることを外観
0

を与えますあなたはこれを行うためにポジションアブソリュートを使うことができます。

.container{ 
    z-index:900; 
    overflow:hidden; 
    width: 500px; 
    height: 250px; 
} 

.container img{ 
    z-index:920; 
    position:absolute; 
} 

位置が真でない場合、画像の余白を設定できます。

+0

この戦略は一部のブラウザでのみ機能します;) – DrewT

関連する問題