Bootstrap 4 ป้องกันการคลิปบนแถวที่ล้นด้วยการเลื่อนแนวนอน

ฉันสร้าง row ด้วยการเลื่อนแนวนอนสำหรับทั้งหมดที่มีอยู่ col

ฉันใช้คำตอบสำหรับคำถามนี้: Bootstrap 4 div scroller แนวนอน

อย่างไรก็ตาม ฉันพบว่าองค์ประกอบภายใน container ถูกตัดทอน ในตอนนี้สำหรับระบบปฏิบัติการและเบราว์เซอร์บางตัว (เช่น MacOS+Chrome) แถบเลื่อนจะถูกซ่อนไว้เว้นแต่ว่าจะถูกเลื่อนเมาส์ไว้ และในการทดสอบ ผู้ใช้รายหนึ่งของเราไม่พบองค์ประกอบถัดไป (ตัดทอน) col

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

แก้ไข:

รหัสที่เกี่ยวข้องมาจากคำตอบนี้ และยังโพสต์บน โคเดเพน

แก้ไข 2:

โปรดทราบว่าฉันต้องการป้องกันไม่ให้คอนเทนเนอร์ถูกย้ายเมื่อเลื่อน


person Jankapunkt    schedule 11.03.2019    source แหล่งที่มา
comment
คุณสามารถโพสต์รหัสที่คุณพยายามได้หรือไม่?   -  person Zim    schedule 11.03.2019
comment
รหัสอยู่ในคำถามที่เชื่อมโยง และฉันไม่ได้คัดลอกเพราะฉันไม่ต้องการแกล้งทำเป็นว่าเป็นรหัสของฉัน   -  person Jankapunkt    schedule 11.03.2019
comment
ฉันไม่เข้าใจคำถามจริงๆ คุณหมายถึงถูกตัดเนื่องจากการเลื่อนแนวนอนใช่หรือไม่?   -  person Zim    schedule 11.03.2019
comment
องค์ประกอบที่อยู่นอกเหนือความกว้างของ container ถูกซ่อนไว้ (ถูกตัดคำที่เหมาะสมสำหรับสิ่งนั้น) และฉันต้องการให้พวกเขามองเห็นได้เพื่อให้ผู้คนได้เห็นว่ามีองค์ประกอบเพิ่มเติมที่สามารถเข้าถึงได้เมื่อเลื่อนในแนวนอน   -  person Jankapunkt    schedule 11.03.2019
comment
ฉันอัปเดตคำถามแล้ว เนื่องจากลิงก์ไม่เจาะจงเกินไป   -  person Jankapunkt    schedule 11.03.2019
comment
คุณกำลังมองหาการทำให้แถบเลื่อนแนวนอนมองเห็นได้ในทุกเบราว์เซอร์หรือแสดงในลักษณะว่ามีเนื้อหาเพิ่มเติมทางด้านขวามือที่สามารถเลื่อนไปได้หรือไม่?   -  person Siavas    schedule 16.03.2019
comment
อันที่สองแต่ไม่ได้เลื่อนทั้งหน้า   -  person Jankapunkt    schedule 16.03.2019


คำตอบ (3)


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

คุณสามารถทดสอบ Mac Os และคอมโบ chrome / safari ได้ เนื่องจากนี่เป็นปัญหาเฉพาะแพลตฟอร์ม จากนั้นคุณสามารถแทนที่การจัดสไตล์สำหรับแถบเลื่อนได้ สิ่งนี้บังคับให้มันแสดง

.testimonial-group > .row {
  overflow-x: scroll;
  white-space: nowrap;
}

.testimonial-group > .row::-webkit-scrollbar-track
{
   box-shadow: inset 0 0 6px rgba(0,0,0,0.3); 
   border-radius: 10px;
   background-color: #F5F5F5;
}


.testimonial-group > .row::-webkit-scrollbar
{
  width: 0px;
  height: 12px;
  background-color: #F5F5F5;
}

.testimonial-group > .row::-webkit-scrollbar-thumb
{
   border-radius: 10px;
   box-shadow: inset 0 0 6px rgba(0,0,0,.3);
   background-color: #555;
}
person Steven Kuipers    schedule 18.03.2019
comment
แถบเลื่อนอยู่ใน OSX ของฉันซึ่งซ่อนอยู่ใน Firefox และ Safari เมื่อเปิด codepen จากคำถาม การเพิ่ม css ที่คุณโพสต์ทำให้แถบเลื่อนหายไปจริง ๆ =0 (ทำซ้ำ: OSX 10.14.3, Chrome 72.0.3626.119, FF 65.0.1, Safari 12.0.3) - person Jankapunkt; 18.03.2019
comment
อ่าใช่เพราะฉันตั้งค่า overflow-x ให้เลื่อนด้วย ฉันแก้ไขโพสต์ของฉันเพื่อชี้แจง - person Steven Kuipers; 18.03.2019
comment
นี่กำลังทำงานอยู่ อย่างไรก็ตาม ฉันต้องการรอจนกว่าจะสิ้นสุดระยะเวลารับเงินรางวัลเพื่อดูว่ายังมีวิธีแก้ปัญหาที่ป้องกันไม่ให้องค์ประกอบถูกคลิปเมื่อมีการเลื่อนอยู่หรือไม่ หากไม่มีคำตอบที่เป็นไปได้ ฉันจะยอมรับคำตอบนี้เป็นวิธีแก้ปัญหาแบบประนีประนอม - person Jankapunkt; 18.03.2019
comment
ใช่ โปรดเปิดทิ้งไว้ หากมีวิธีอื่นในการบังคับแถบเลื่อนบน OSX ฉันก็อยากจะทราบเช่นกัน - person Steven Kuipers; 18.03.2019

ดังที่คุณบอกว่าคุณต้องการให้เป็นแบบตอบสนองตาราง โดยค่าเริ่มต้น div ทั้งหมดจะมีความกว้างเท่ากับความกว้างที่มีอยู่ของพาเรนต์ คุณไม่ควรใช้ col-sm-4 div ที่มีคลาสนี้จะมี ความกว้าง 33.33% ของพาเรนต์ และ div อื่นๆ ของคุณจะไม่สามารถมองเห็นได้ด้วยสิ่งนี้

ดังนั้นสำหรับ div ที่ตอบสนอง คุณสามารถแก้ไขโค้ดนี้ได้ด้วยวิธีนี้ เพิ่มลิงก์สำหรับ Codepen ที่นี่

<div class="container testimonial-group">
 <div class="row text-center flex-nowrap">
 <div class="col">1</div><!--
  --><div class="col">2</div><!--
  --><div class="col">3</div><!--
  --><div class="col">4</div><!--
  --><div class="col">5</div><!--
  --><div class="col">6</div><!--
  --><div class="col">7</div><!--
  --><div class="col">8</div><!--
  --><div class="col">9</div>
 </div>
</div>

ซีเอสเอส

/* The heart of the matter */
.testimonial-group > .row {
  white-space: nowrap;
}
.testimonial-group > .row > .col-sm-4 {
  display: inline-block;
  float: none;
 }

 /* Decorations */
.col { color: #fff; font-size: 48px; padding-bottom: 20px; padding-top: 18px; 
}
.col:nth-child(3n+1) { background: #c69; }
.col:nth-child(3n+2) { background: #9c6; }
.col:nth-child(3n+3) { background: #69c; }
person Techie_T    schedule 15.03.2019
comment
ขอขอบคุณสำหรับการสนับสนุนของคุณ. น่าเสียดายที่สิ่งนี้ทำให้คอนเทนเนอร์ถูกย้ายโดยการเลื่อนในแนวนอนเช่นกัน การอ้างอิงถึง table-responsive เป็นเพียงการยกตัวอย่างว่าควรประพฤติตนอย่างไร - person Jankapunkt; 15.03.2019
comment
ฉันเพิ่งตรวจสอบและฉันคิดว่า table-responsive เป็นข้อมูลอ้างอิงที่ไม่ดีที่นี่ ฉันแค่ต้องการป้องกันการคลิปเมื่อเลื่อน - person Jankapunkt; 15.03.2019

คุณต้องแทนที่สีและลักษณะการทำงานของแถบเลื่อนเริ่มต้น

.row {
  overflow-x: scroll;
  scroll-behavior: smooth;
  align-items: left;
  justify-content: left;
  flex-direction: row;
}
.col-sm-4 {
 display: inline;
 align-items: left;
 justify-content: left;
}
/*scroll bar style all brwosers expet IE && Firefox*/
::-webkit-scrollbar {
  width: 8px;
    background-color: rgba(255,255,255,.4);
}

::-webkit-scrollbar-track {
  -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
    border-radius: 10px;
    background-color: rgba(255,255,255,.4);
}

::-webkit-scrollbar-thumb {
  border-radius: 10px;
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
    background-color: #787c7d;
}

มิฉะนั้นคุณสามารถทำได้ด้วย JS แทน css

person mooga    schedule 20.03.2019
comment
แต่นี่เป็นเพียงการจัดการแถบเลื่อนเท่านั้น นี่อาจเป็นวิธีแก้ปัญหาอื่น แต่ฉันยังต้องการดูว่าสามารถหลีกเลี่ยงการตัดภาพได้หรือไม่ - person Jankapunkt; 20.03.2019
comment
ฉันคิดว่านี่เป็นปัญหา ux มากกว่าปัญหาโค้ด คุณมีเนื้อหาที่เลื่อนไปด้านข้างโดยไม่มีข้อบ่งชี้ว่าสามารถเลื่อนได้ แถบเลื่อนเป็นข้อบ่งชี้ที่ดี แต่ OSX ได้ลบพวกมันออกไปแล้ว และแม้ว่าคุณจะสามารถบังคับพวกมันกลับเข้าไปใน webkit ได้ แต่นั่นก็ยังคงเหลือ FF ไว้ ดูเหมือนว่าคุณต้องการให้ความเป็นไปได้ของการเลื่อนปรากฏชัดเจนเมื่อผู้ใช้เริ่มโต้ตอบกับองค์ประกอบ นั่นจึงยังคงเหลือความเป็นไปได้ที่มันจะไม่ถูกค้นพบ ทำไมไม่ลองเปิดเผยกล่องที่ 4 สักหน่อยล่ะ - person Kjetil Hansen; 21.03.2019
comment
การเปิดเผยกล่องที่ 4 นั้นอยู่ในใจของฉันอยู่แล้ว แต่ทำไมถึงบรรลุเป้าหมายนี้ด้วยตารางขนาด 12 ของ Bootstrap ที่มีองค์ประกอบต่ำกว่า 5 - person Jankapunkt; 21.03.2019