CSS: วิธีรับแถบเลื่อนสำหรับ div ภายในคอนเทนเนอร์ที่มีความสูงคงที่


94

ฉันมีมาร์กอัปต่อไปนี้:

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

CSS มีลักษณะดังนี้:

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

เนื่องจากเนื้อหาของความสูงของโดยทั่วไปจะมีมากกว่าพื้นที่ที่จัดไว้ให้โดยdiv.Content div.FixedHeightContainerในขณะนี้div.Contentขยายออกไปจากด้านล่างอย่างสนุกสนานdiv.FixedHeightContainer- ไม่ใช่สิ่งที่ฉันต้องการ

ฉันจะระบุdiv.Contentได้อย่างไรว่าได้รับแถบเลื่อน (ควรเป็นแนวตั้งเท่านั้น แต่ฉันไม่จุกจิก) เมื่อความสูงเกินกว่าที่จะใส่ได้

overflow:autoและไม่overflow:scrollได้ทำอะไรเลยด้วยเหตุผลที่แปลกประหลาด

คำตอบ:


157

การตั้งค่าoverflowควรดูแล แต่คุณต้องตั้งค่าความสูงContentด้วย หากไม่ได้ตั้งค่าแอตทริบิวต์ความสูง div จะเติบโตในแนวตั้งสูงเท่าที่จำเป็นและไม่จำเป็นต้องใช้แถบเลื่อน

ดูตัวอย่าง: http://jsfiddle.net/ftkbL/1/


โอเคขอบคุณ. ดังนั้นฉันต้องระบุความสูงสำหรับ div เนื้อหา? ฉันคิดว่ามันน่าจะได้ผลจากคอนเทนเนอร์ที่มันไม่พอดีและใช้แถบเลื่อนบนพื้นฐานนั้น
เดวิด

6
หากคุณให้Contentความสูงคงที่คุณไม่ควรให้FixedHeightContainerความสูงคงที่เพราะคุณไม่สามารถรู้ได้ว่าชื่อของคุณจะสูงแค่ไหนจึงContentอาจถูกผลักออก ดู: jsfiddle.net/ftkbL/2คุณควรตั้งค่าความสูงคงที่เพียงoverflow: scrollองค์ประกอบด้วย ดูjsfiddle.net/ftkbL/3หรือjsfiddle.net/ftkbL/4
RoToRa

ฉันเห็นประเด็นของคุณ (จากลิงก์แรก) แต่ทราบข้อความชื่อเรื่องและสั้นเกินไปที่จะขีดทับบรรทัดเว้นแต่ผู้ใช้จะขยายข้อความให้มีขนาดที่ไม่สามารถใช้งานได้จริง
เดวิด

มีวิธีที่จะมีความสูงสั้นและซ่อนแถบเลื่อนในเวลาเดียวกันหรือไม่? ด้วยวิธีนี้เมื่อผู้ใช้ลากลงบนอุปกรณ์มือถือพวกเขาจะเห็นว่าพวกเขากำลังเลื่อนลง แต่หากไม่เห็นแถบเลื่อน 2 แถบบนเบราว์เซอร์ให้ยุ่งยาก?
klewis

@blackhawk - ไม่ใช่ว่าฉันรู้ คุณอาจต้องใช้ Javascript สำหรับสิ่งนี้ โดยเฉพาะฉันกำลังคิดถึงไลบรารี jQuery Draggable: jqueryui.com/draggable - สิ่งหนึ่งที่ต้องพิจารณาคือ ... ผู้ใช้เดสก์ท็อปจะรู้ได้อย่างไรว่าต้องเลื่อน?
Dutchie432

2

FWIW นี่คือแนวทางของฉัน = วิธีง่ายๆที่เหมาะกับฉัน:

<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

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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.