CSS: sabit yükseklikteki konteynerin içindeki div için kaydırma çubukları nasıl elde edilir


95

Aşağıdaki işaretlemem var:

<div class="FixedHeightContainer">
  <h2>Title</h2>
  <div class="Content">
    ..blah blah blah...
  </div>
</div>

CSS şuna benzer:

.FixedHeightContainer
{
  float:right;
  height: 250px;
  width:250px;  
}
.Content
{
  ???
}

İçeriği nedeniyle yüksekliği div.Contenttipik olarak tarafından sağlanan alandan daha büyüktür div.FixedHeightContainer. Şu anda, div.Contentneşeyle dibinden dışarıya uzanıyor div.FixedHeightContainer- istediğim hiç de değil.

div.ContentYüksekliği sığamayacak kadar büyük olduğunda kaydırma çubuklarının (tercihen yalnızca dikey, ancak telaşlı değilim) alacağını nasıl belirleyebilirim ?

overflow:autove overflow:scrolltuhaf bir nedenden dolayı hiçbir şey yapmıyor.

Yanıtlar:


157

ayarlanması overflowbununla ilgilenmelidir, ancak yüksekliğini Contentde ayarlamanız gerekir . Yükseklik özelliği ayarlanmadıysa, div dikey olarak ihtiyaç duyduğu kadar uzar ve kaydırma çubuklarına gerek kalmaz.

Örneğe Bakın: http://jsfiddle.net/ftkbL/1/


Tamam teşekkürler. Bu yüzden div.Content için bir yükseklik belirlemem gerekiyor? Kaptan sığmayacağını ve buna göre kaydırma çubukları uygulayacağını varsaydım.
— David

6
Eğer Contentsabit bir yükseklik verirseniz , sabit bir yükseklik vermemelisiniz FixedHeightContainerçünkü başlığınızın ne kadar yüksek olacağını bilemezsiniz, bu yüzden Contentitilebilir. Bakınız: jsfiddle.net/ftkbL/2 Sabit yüksekliği sadece ile eleman üzerinde ayarlamalısınız overflow: scroll. Bkz. Jsfiddle.net/ftkbL/3 veya jsfiddle.net/ftkbL/4
— RoToRa

Söylemek istediğiniz noktayı görüyorum (ilk bağlantıdan) ancak başlık metni biliniyor ve kullanıcı metni pratik olmayan bir boyuta şişirmedikçe bir satırı kırmak için çok kısa.
— David

Kısa bir yüksekliğe sahip olmanın ve aynı zamanda kaydırma çubuğunu gizlemenin bir yolu var mı? Bu şekilde, kullanıcılar mobil cihazlarda aşağı sürüklediklerinde, aşağı kaydırdıklarını göreceklerdir, ancak tarayıcılarında 2 kaydırma çubuğu görmenin zahmetli olması gerekmez mi?
— klewis

@blackhawk - Bildiğim kadarıyla değil. Bunun için Javascript kullanmanız gerekebilir. Özellikle jQuery Draggable kitaplığını düşünüyorum: jqueryui.com/draggable - dikkate alınması gereken bir şey ... masaüstü kullanıcıları kaydırmayı nasıl bilecek?
— Dutchie432

3

FWIW, işte benim yaklaşımım = benim için çalışan basit bir yaklaşım:

<div id="outerDivWrapper">
   <div id="outerDiv">
      <div id="scrollableContent">
blah blah blah
      </div>
   </div>
</div>

html, body {
   height: 100%;
   margin: 0em;
}

#outerDivWrapper, #outerDiv {
   height: 100%;
   margin: 0em;
}

#scrollableContent {
   height: 100%;
   margin: 0em;
   overflow-y: auto;
}

1

Dutchie432 tarafından yukarıdaki cevaptan kodlayın

.FixedHeightContainer {
    float:right;
    height: 250px;
    width:250px; 
    padding:3px; 
    background:#f00;
}

.Content {
    height:224px;
    overflow:auto;
    background:#fff;
}

-2

Kullanım overflowmülkiyet

overflow: hidden; 

overflow: auto;

overflow: scroll;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.