จุดพัก Bootstrap 3 และคิวรีสื่อ


171

ในเอกสารการสืบค้นสื่อ Bootstrap 3มันบอกว่า:

เราใช้เคียวรีสื่อบันทึกต่อไปนี้ในไฟล์ Less เพื่อสร้างเบรกพอยต์สำคัญในระบบกริดของเรา

อุปกรณ์ขนาดเล็กพิเศษ (โทรศัพท์น้อยกว่า 768px): ไม่มีการสืบค้นสื่อเนื่องจากนี่เป็นค่าเริ่มต้นใน Bootstrap

อุปกรณ์ขนาดเล็ก (แท็บเล็ต 768px ขึ้นไป): @media (min-width: @screen-sm-min) { ... }

อุปกรณ์ขนาดกลาง (เดสก์ท็อป 992px ขึ้นไป): @media (min-width: @screen-md-min) { ... }

อุปกรณ์ขนาดใหญ่ (เดสก์ท็อปขนาดใหญ่ 1200px ขึ้นไป): @media (min-width: @screen-lg-min) { ... }

เราควรที่จะสามารถใช้@screen-sm, @screen-mdและ@screen-lgชื่อที่อยู่ในคำสั่งสื่อของเราเช่นกัน? เพราะมันไม่ได้ผลสำหรับฉัน ฉันต้องใช้การวัดพิกเซลเช่น@media (min-width: 768px) {...}ก่อนที่มันจะทำงาน ฉันกำลังทำอะไรผิดหรือเปล่า?

นอกจากนี้อ้างอิงถึง 480px สำหรับอุปกรณ์ขนาดเล็กพิเศษที่พิมพ์ผิดหรือไม่? ไม่ควรพูดถึง 767px? ( ตั้งแต่ลบออกจากเอกสาร )



นี่คือตัวเลือกที่ใช้ใน BS4 ไม่มีการตั้งค่า "ต่ำสุด" ใน BS4 เพราะ "พิเศษเล็ก" เป็นค่าเริ่มต้น คือคุณต้องเขียนรหัสขนาด XS ก่อนแล้วจึงให้สื่อบันทึกเหล่านี้แทนที่หลังจากนั้น @media (ความกว้างต่ำสุด: 576px) {} @media (ความกว้างต่ำสุด: 768px) {} @media (ความกว้างต่ำสุด: 992px) {} @media (ความกว้างต่ำสุด: 1200px) {}
Babbandeep Singh

คำตอบ:


207

Bootstrap 4 Media Queries

// Extra small devices (portrait phones, less than 576px)
// No media query since this is the default in Bootstrap

// Small devices (landscape phones, 576px and up)
@media (min-width: 576px) { ... }

// Medium devices (tablets, 768px and up)
@media (min-width: 768px) { ... }

// Large devices (desktops, 992px and up)
@media (min-width: 992px) { ... }

// Extra large devices (large desktops, 1200px and up)
@media (min-width: 1200px) { ... }

Bootstrap 4 จัดหา CSS ต้นทางใน Sass ที่คุณสามารถรวมผ่าน Sass Mixins:

@include media-breakpoint-up(xs) { ... }
@include media-breakpoint-up(sm) { ... }
@include media-breakpoint-up(md) { ... }
@include media-breakpoint-up(lg) { ... }
@include media-breakpoint-up(xl) { ... }

// Example usage:
@include media-breakpoint-up(sm) {
  .some-class {
    display: block;
  }
}

Bootstrap 3 เคียวรีสื่อบันทึก

/*==========  Mobile First Method  ==========*/

/* Custom, iPhone Retina */ 
@media only screen and (min-width : 320px) {

}

/* Extra Small Devices, Phones */ 
@media only screen and (min-width : 480px) {

}

/* Small Devices, Tablets */
@media only screen and (min-width : 768px) {

}

/* Medium Devices, Desktops */
@media only screen and (min-width : 992px) {

}

/* Large Devices, Wide Screens */
@media only screen and (min-width : 1200px) {

}



/*==========  Non-Mobile First Method  ==========*/

/* Large Devices, Wide Screens */
@media only screen and (max-width : 1200px) {

}

/* Medium Devices, Desktops */
@media only screen and (max-width : 992px) {

}

/* Small Devices, Tablets */
@media only screen and (max-width : 768px) {

}

/* Extra Small Devices, Phones */ 
@media only screen and (max-width : 480px) {

}

/* Custom, iPhone Retina */ 
@media only screen and (max-width : 320px) {

}

Bootstrap 2.3.2 Media Queries

@media only screen and (max-width : 1200px) {

}

@media only screen and (max-width : 979px) {

}

@media only screen and (max-width : 767px) {

}

@media only screen and (max-width : 480px) {

}

@media only screen and (max-width : 320px) {

}

ทรัพยากรจาก: https://scotch.io/quick-tips/default-sizes-for-twitter-bootstraps-media-queries


8
@ CyrilDuchon-Doris คำถามเกี่ยวกับ Bootstrap 3 ... ดังนั้นฉันไม่คิดอย่างนั้น
Bagata

12
คำตอบนั้นได้รับรางวัล 30 คะแนนและกล่าวถึง Bootstrap 2 หลายคนจะมองมันแม้ว่าจะไม่ได้ใช้ Bootstrap 3 ฉันรู้สึกขอบคุณเสมอกับผู้ที่แก้ไขคำตอบของตนเองด้วยข้อมูลที่ทันสมัยแม้ว่าจะออกไปเล็กน้อย ของขอบเขตเริ่มต้น
Cyril Duchon-Doris

ดังนั้นสิ่งเล็ก ๆ ที่ต่ำกว่า 479 คืออะไร?
SuperUberDuper

2
Bootstrap v4 นั้นยังไม่เสถียร คุณรู้หรือไม่ คำตอบอาจต้องได้รับการปรับปรุงหลายครั้งก่อนที่จะถึงรุ่นที่เสถียร
Gherman

ฉันเชื่อว่าที่นี่มีข้อผิดพลาดหนึ่งพิกเซลซึ่งอาจมีผลจริง สำหรับหน้าจอ 1200px และ 320 px ทั้งแบบสอบถามสื่อสูงสุดและแบบสอบถามสื่อขั้นต่ำจะมีผล ข้อความค้นหาสื่อสูงสุดทั้งหมดควรเป็นลบ 1px (เช่น 1199px) ข้อความค้นหาสื่อขั้นต่ำและสูงสุด 320px ไม่สมเหตุสมผลสำหรับฉันจริง ๆ เนื่องจาก AFAIK หน้าจอจริงเริ่มต้นที่ 320px
Ben Carp

39

Bootstrap ไม่ได้เป็นเอกสารการสืบค้นสื่ออย่างดี ตัวแปรของผู้ที่@screen-sm, @screen-md, @screen-lgเป็นจริงหมายถึงตัวแปรน้อยและ CSS ไม่ง่าย

เมื่อคุณกำหนด Bootstrap เองคุณสามารถเปลี่ยนจุดพักการสืบค้นสื่อและเมื่อรวบรวมตัวแปร @ screen-xx จะถูกเปลี่ยนเป็นความกว้างของพิกเซลที่คุณกำหนดเป็น screen-xx นี่คือวิธีที่เฟรมเวิร์กแบบนี้สามารถเขียนโค้ดได้หนึ่งครั้งจากนั้นผู้ใช้ปลายทางก็สามารถปรับแต่งให้เหมาะสมกับความต้องการได้

คำถามที่คล้ายกันที่นี่ที่อาจให้ความชัดเจนมากขึ้น: Bootstrap 3.0 แบบสอบถามสื่อ

ใน CSS ของคุณคุณจะยังคงต้องใช้การสืบค้นสื่อดั้งเดิมเพื่อแทนที่หรือเพิ่มสิ่งที่ Bootstrap กำลังทำอยู่

เกี่ยวกับคำถามที่สองของคุณนั่นไม่ใช่การพิมพ์ผิด เมื่อหน้าจอต่ำกว่า 768px เฟรมเวิร์กจะลื่นไหลอย่างสมบูรณ์และปรับขนาดที่ความกว้างของอุปกรณ์ใด ๆ จึงไม่จำเป็นต้องใช้เบรกพอยต์ เบรกพอยต์ที่ 480px มีอยู่เนื่องจากมีการเปลี่ยนแปลงเฉพาะที่เกิดขึ้นกับเค้าโครงสำหรับการปรับให้เหมาะสมกับอุปกรณ์เคลื่อนที่

หากต้องการดูสิ่งที่เกิดขึ้นให้ไปที่ตัวอย่างนี้ในเว็บไซต์ของพวกเขา ( http://getbootstrap.com/examples/navbar-fixed-top/ ) และปรับขนาดหน้าต่างของคุณเพื่อดูว่ามันทำงานอย่างไรกับการออกแบบหลังจาก 768px


6
หากต้องการดูสิ่งที่เกิดขึ้นจริงให้ไปที่ตัวอย่างนี้บนเว็บไซต์ของพวกเขาและปรับขนาดหน้าต่างของคุณเพื่อดูว่ามันทำงานอย่างไรกับการออกแบบหลังจาก 768px // สิ่งนั้นเกี่ยวข้องกับ 480px? ฉันไม่เห็นสิ่งใดเกิดขึ้นที่ 480 พิกเซลเทียบกับ 500px
Kris Hunt

เท่าที่การขยายอย่างเป็นธรรมชาติบนระบบตัวแปรของ Bootstrap 3 นี่ควรเป็นคำตอบที่ได้รับการยอมรับเนื่องจากเป็นแนวทางที่มีประสิทธิภาพมาก
klewis

28

ปัญหานี้ได้รับการกล่าวถึงในhttps://github.com/twbs/bootstrap/issues/10203 ตอนนี้ยังไม่มีแผนที่จะเปลี่ยนกริดเพราะเหตุผลด้านความเข้ากันได้

คุณสามารถรับ Bootstrap จากทางแยกนี้, สาขาhs: https://github.com/antespi/bootstrap/tree/hs

สาขานี้ให้คุณเพิ่มเบรกพอยต์ที่ 480px ดังนั้นคุณต้อง:

  1. ออกแบบสำหรับอุปกรณ์พกพาก่อน (XS, น้อยกว่า 480px)
  2. เพิ่มคลาส HS (อุปกรณ์ขนาดเล็กแนวนอน) ใน HTML ของคุณ: col-hs- *, visible-hs, ... และการออกแบบสำหรับอุปกรณ์มือถือแนวนอน (HS, น้อยกว่า 768px)
  3. ออกแบบสำหรับอุปกรณ์แท็บเล็ต (SM, น้อยกว่า 992px)
  4. ออกแบบสำหรับอุปกรณ์เดสก์ท็อป (MD, น้อยกว่า 1200px)
  5. ออกแบบสำหรับอุปกรณ์ขนาดใหญ่ (LG, มากกว่า 1200 พิกเซล)

การออกแบบมือถือก่อนเป็นกุญแจสำคัญในการทำความเข้าใจ Bootstrap 3 นี่คือการเปลี่ยนแปลงที่สำคัญจาก BootStrap 2.x ในฐานะเทมเพลตกฎคุณสามารถทำตามนี้ (เป็น LESS):

.template {
    /* rules for mobile vertical (< 480) */

    @media (min-width: @screen-hs-min) {
       /* rules for mobile horizontal (480 > 768)  */
    }
    @media (min-width: @screen-sm-min) {
       /* rules for tablet (768 > 992) */
    }
    @media (min-width: @screen-md-min) {
       /* rules for desktop (992 > 1200) */
    }
    @media (min-width: @screen-lg-min) {
       /* rules for large (> 1200) */
    }
}

1
ขออภัยฉันไม่เข้าใจมูลค่าที่เพิ่มของทางแยกนี้ @screen-hs-min:@screen-xs;ตามที่ผมเข้าใจคุณทำ ทำไมไม่ใช้@screen-xsโดยตรงที่นี่?
Bass Jobsen

เพื่อความมุ่งมั่นที่ดีขึ้น ตัวแปรนี้ให้ภาพที่มีความสอดคล้องกับแม่แบบ Bootstrap 3 เป็นอุปกรณ์เคลื่อนที่อันดับแรกดังนั้นกฎทั้งหมดที่อยู่นอกมีเดียคิวรี่นั้นมีไว้สำหรับขนาดมือถือ ถ้าคุณต้องการกฎพิเศษสำหรับ HS คุณจะต้องเขียนลงไปmin-width: @screen-hs-minถ้าคุณต้องการกฎ estra สำหรับ SM คุณจะเขียนลงไปmin-width: @screen-sm-minเรื่อย ๆ fork นี้ใช้เพื่อเพิ่มเบรกพอยต์ใหม่ที่ 480px ขนาดมือถือจะต่ำกว่า 480px และขนาดใหม่ (HS) จะปรากฏระหว่าง 480px และ 768px
Antonio Espinosa

โปรดทราบว่าแม่แบบมีการพิมพ์ผิดเล็กน้อย screen-hs-min ควรเป็น screen-xs-min
eflat

@eflat นี้ไม่ใช่ข้อผิดพลาดการพิมพ์ผิดscreen-hs-minเป็นกฎใหม่ระหว่างscreen-xs-minและscreen-sm-min
Antonio Espinosa

7

ฉันรู้ว่ามันค่อนข้างเก่า แต่ฉันคิดว่าฉันจะมีส่วนร่วม การอ้างอิงตัวเองตามคำตอบของ @Sophy นี่คือสิ่งที่ฉันทำเพื่อเพิ่มจุดพัก. xxxs ฉันไม่ได้ดูแลชั้นเรียนแบบอินไลน์ตารางที่มองเห็นได้ ฯลฯ

/*==========  Mobile First Method  ==========*/

  .col-xxs-12, .col-xxs-11, .col-xxs-10, .col-xxs-9, .col-xxs-8, .col-xxs-7, .col-xxs-6, .col-xxs-5, .col-xxs-4, .col-xxs-3, .col-xxs-2, .col-xxs-1 {
    position: relative;
    min-height: 1px;
    padding-left: 15px;
    padding-right: 15px;
    float: left;
  }

.visible-xxs {
  display:none !important;
}

/* Custom, iPhone Retina */
@media only screen and (min-width : 320px) and (max-width:479px) {

  .visible-xxs {
    display: block !important;
  }
  .visible-xs {
    display:none !important;
  }

  .hidden-xs {
    display:block !important;
  }

  .hidden-xxs {
    display:none !important;
  }

  .col-xxs-12 {
    width: 100%;
  }
  .col-xxs-11 {
    width: 91.66666667%;
  }
  .col-xxs-10 {
    width: 83.33333333%;
  }
  .col-xxs-9 {
    width: 75%;
  }
  .col-xxs-8 {
    width: 66.66666667%;
  }
  .col-xxs-7 {
    width: 58.33333333%;
  }
  .col-xxs-6 {
    width: 50%;
  }
  .col-xxs-5 {
    width: 41.66666667%;
  }
  .col-xxs-4 {
    width: 33.33333333%;
  }
  .col-xxs-3 {
    width: 25%;
  }
  .col-xxs-2 {
    width: 16.66666667%;
  }
  .col-xxs-1 {
    width: 8.33333333%;
  }
  .col-xxs-pull-12 {
    right: 100%;
  }
  .col-xxs-pull-11 {
    right: 91.66666667%;
  }
  .col-xxs-pull-10 {
    right: 83.33333333%;
  }
  .col-xxs-pull-9 {
    right: 75%;
  }
  .col-xxs-pull-8 {
    right: 66.66666667%;
  }
  .col-xxs-pull-7 {
    right: 58.33333333%;
  }
  .col-xxs-pull-6 {
    right: 50%;
  }
  .col-xxs-pull-5 {
    right: 41.66666667%;
  }
  .col-xxs-pull-4 {
    right: 33.33333333%;
  }
  .col-xxs-pull-3 {
    right: 25%;
  }
  .col-xxs-pull-2 {
    right: 16.66666667%;
  }
  .col-xxs-pull-1 {
    right: 8.33333333%;
  }
  .col-xxs-pull-0 {
    right: auto;
  }
  .col-xxs-push-12 {
    left: 100%;
  }
  .col-xxs-push-11 {
    left: 91.66666667%;
  }
  .col-xxs-push-10 {
    left: 83.33333333%;
  }
  .col-xxs-push-9 {
    left: 75%;
  }
  .col-xxs-push-8 {
    left: 66.66666667%;
  }
  .col-xxs-push-7 {
    left: 58.33333333%;
  }
  .col-xxs-push-6 {
    left: 50%;
  }
  .col-xxs-push-5 {
    left: 41.66666667%;
  }
  .col-xxs-push-4 {
    left: 33.33333333%;
  }
  .col-xxs-push-3 {
    left: 25%;
  }
  .col-xxs-push-2 {
    left: 16.66666667%;
  }
  .col-xxs-push-1 {
    left: 8.33333333%;
  }
  .col-xxs-push-0 {
    left: auto;
  }
  .col-xxs-offset-12 {
    margin-left: 100%;
  }
  .col-xxs-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-xxs-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-xxs-offset-9 {
    margin-left: 75%;
  }
  .col-xxs-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-xxs-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-xxs-offset-6 {
    margin-left: 50%;
  }
  .col-xxs-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-xxs-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-xxs-offset-3 {
    margin-left: 25%;
  }
  .col-xxs-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-xxs-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-xxs-offset-0 {
    margin-left: 0%;
  }

}

/* Extra Small Devices, Phones */
@media only screen and (min-width : 480px) {

  .visible-xs {
    display:block !important;
  }

}

/* Small Devices, Tablets */
@media only screen and (min-width : 768px) {

  .visible-xs {
    display:none !important;
  }

}

/* Medium Devices, Desktops */
@media only screen and (min-width : 992px) {

}

/* Large Devices, Wide Screens */
@media only screen and (min-width : 1200px) {

}

1
สิ่งที่ฉันต้องการจริงๆขอบคุณ! ดังนั้นฉันไม่จำเป็นต้องทำมันซ้ำอีก :) :)
antoni

อย่าลืมชั้นเรียน.visible-xs-inline, .visible-xs-inline-blockทุกเวลาที่คุณแทนที่.visible-xs!
antoni

6

ลบการอ้างอิงถึง 480px แล้ว แต่มันบอกว่า:

/* Extra small devices (phones, less than 768px) */
/* No media query since this is the default in Bootstrap */

ไม่มีจุดพักด้านล่าง 768px ใน Bootstrap 3

หากคุณต้องการใช้@screen-sm-minและมิกซ์อินอื่น ๆ คุณต้องรวบรวมด้วย LESS ดูhttp://getbootstrap.com/css/#grid-less

นี่คือบทแนะนำเกี่ยวกับวิธีใช้ Bootstrap 3 และ LESS: http://www.helloerik.com/bootstrap-3-less-workflow-tutorial


2

คุณควรใช้เบรกพอยต์เหล่านั้นถ้าคุณใช้http://lesscss.org/เพื่อสร้าง CSS ของคุณ

/* Extra small devices (phones, less than 768px) */
/* No media query since this is the default in Bootstrap */

/* Small devices (tablets, 768px and up) */
@media (min-width: @screen-sm-min) {  }

/* Medium devices (desktops, 992px and up) */
@media (min-width: @screen-md-min) {  }

/* Large devices (large desktops, 1200px and up) */
@media (min-width: @screen-lg-min) {  }

จากhttps://getbootstrap.com/docs/3.4/css/#grid-media-queries

ในความ@screen-sm-minเป็นจริงเป็นตัวแปรที่ถูกแทนที่ด้วยค่าที่ระบุใน_variableเมื่อสร้างด้วย Less หากคุณไม่ได้ใช้ Less คุณสามารถแทนที่ตัวแปรนี้ด้วยค่า:

/* Extra small devices (phones, less than 768px) */
/* No media query since this is the default in Bootstrap */

/* Small devices (tablets, 768px and up) */
@media (min-width: 768px) {  }

/* Medium devices (desktops, 992px and up) */
@media (min-width: 992px) {  }

/* Large devices (large desktops, 1200px and up) */
@media (min-width: 1200px) {  }

Bootstrap 3 อย่างเป็นทางการสนับสนุน Sass: https://github.com/twbs/bootstrap-sass หากคุณใช้ Sass (และคุณควร) ไวยากรณ์จะแตกต่างกันเล็กน้อย

/* Extra small devices (phones, less than 768px) */
/* No media query since this is the default in Bootstrap */

/* Small devices (tablets, 768px and up) */
@media (min-width: $screen-sm-min) { }

/* Medium devices (desktops, 992px and up) */
@media (min-width: $screen-md-min) {  }

/* Large devices (large desktops, 1200px and up) */
@media (min-width: $screen-lg-min) {  }

1

นี่คือตัวเลือกที่ใช้ใน Bootstrap 4 ไม่มีการตั้งค่า "ต่ำสุด" ใน BS4 เพราะ "พิเศษเล็ก" เป็นค่าเริ่มต้น คือคุณจะต้องเขียนรหัสขนาด XS ก่อนแล้วจึงให้สื่อบันทึกเหล่านี้แทนที่หลังจากนั้น

@media(min-width:576px){}
@media(min-width:768px){}
@media(min-width:992px){}
@media(min-width:1200px){}

0

เมื่อฉันใช้ @media (ความกว้างสูงสุด: 768px) การออกแบบของฉันหยุดพักที่ 768px แต่มันก็โอเคสำหรับ 767px และบน 769px ดังนั้นฉันคิดว่ามันจะเป็น 767px เป็นความกว้างสูงสุดสำหรับการกำหนดเป้าหมายอุปกรณ์ขนาดเล็ก


0

สำหรับ bootstrap 3 ฉันมีรหัสต่อไปนี้ในองค์ประกอบ navbar ของฉัน

/**
 * Navbar styling.
 */
@mobile:          ~"screen and (max-width: @{screen-xs-max})";
@tablet:          ~"screen and (min-width: @{screen-sm-min})";
@normal:          ~"screen and (min-width: @{screen-md-min})";
@wide:            ~"screen and (min-width: @{screen-lg-min})";
@grid-breakpoint: ~"screen and (min-width: @{grid-float-breakpoint})";

จากนั้นคุณสามารถใช้สิ่งที่ชอบ

@media wide { selector: style }

สิ่งนี้ใช้ค่าอะไรก็ตามที่คุณตั้งค่าตัวแปรไว้

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

http://lesscss.org


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