Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> CSS

ส่วนประกอบการ์ดบูตสแตรป

การ์ดบูตสแตรป

การ์ด Bootstrap เป็นหนึ่งในส่วนประกอบที่ได้รับความนิยมมากที่สุดและด้วยเหตุผลที่ดี พวกมันทำหน้าที่เป็นที่เก็บสื่อที่ยืดหยุ่นมาก และมีสไตล์และการจัดรูปแบบที่ตั้งไว้ล่วงหน้าที่ดี

เนื้อหาในการ์ดอาจเป็นอะไรก็ได้ตั้งแต่ข้อความ รูปภาพ ลิงก์ ปุ่ม รายการ และยังสามารถมีส่วนหัวและส่วนท้ายได้อีกด้วย

ข้อมูลเบื้องต้นเกี่ยวกับการ์ดบู๊ตสแตรป

การ์ด Bootstrap สร้างด้วย flexbox และขยายเป็นความกว้างขององค์ประกอบที่มีอยู่ตามค่าเริ่มต้น หากเราต้องการระบุความกว้างที่แตกต่างกัน เราสามารถใช้คลาสยูทิลิตี้ความกว้างของ Bootstrap บนองค์ประกอบการ์ดเอง หรือเราสามารถห่อการ์ดในองค์ประกอบที่มี และปรับขนาดด้วยคลาสคอลัมน์ของ Bootstrap

มาดูตัวอย่างกัน:

<div class="container-fluid bg-light">
      <div class="card p-4 m-4">card 1</div>
      <div class="card p-4 m-4">card 2</div>
      <div class="card p-4 m-4">card 3</div>
 
      <div class="card-group m-4">
        <div class="card p-4">card 4</div>
        <div class="card p-4">card 5</div>
        <div class="card p-4">card 6</div>
      </div>
 
      <div class="card-deck m-4">
        <div class="card p-4 m-4">card 7</div>
        <div class="card p-4 m-4">card 8</div>
        <div class="card p-4 m-4">card 9</div>
      </div>
    </div>

หลักการง่ายๆ ของ Bootstrap คือการรวมทุกอย่างที่อยู่ภายใน ไว้ในองค์ประกอบ CONTAINER ซึ่งทำให้ทุกอย่างภายในตอบสนองได้

นั่นหมายความว่ามันจะเปลี่ยนขนาดและเลย์เอาต์ตามขนาดหน้าจอปัจจุบัน

ในตัวอย่างของเรา เราใช้ CONTAINER-FLUID ซึ่งทำให้องค์ประกอบเต็มความกว้าง แทนที่จะใช้แค่ CONTAINER ซึ่งเพิ่มระยะขอบแนวนอนและจัดกึ่งกลางในหน้า

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

81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้

ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก

ส่วนประกอบการ์ดบูตสแตรป

p-4 และ m-4 ที่คุณเห็นในข้อมูลโค้ดแสดงถึงช่องว่างภายในทุกด้านของ 1.5 rem และระยะขอบทุกด้านของ 1.5 rem ตามลำดับ

ค่ายูทิลิตี้การปรับขนาด Bootstrap:


0 =0 rem;

1 =0.25 เร็ม;

2 =0.5 เร็ม;

3 =1 เร็ม;

4 =1.5 เร็ม;

5 =3 เร็ม;

จากนั้นเราก็มีไพ่ 4, 5 และ 6 ซึ่งรวมอยู่ใน

ด้วยคลาส CARD-GROUP พวกเขาประพฤติตัวเหมือนกับคลาส BTN-GROUP พวกมันถูกรวมเข้าด้วยกันในรูปแบบ flexbox แนวนอน และเพิ่มเส้นขอบที่โค้งมนให้กับทั้งกลุ่ม

สุดท้าย การ์ด 7, 8 และ 9 ถูกรวมไว้ใน

ด้วยคลาส CARD-DECK ซึ่งรวมไว้ใน flexbox แนวนอน แต่จะปล่อยให้เป็นองค์ประกอบที่แยกจากกันทางสายตา

การปรับขนาดการ์ดด้วยตนเอง

ก่อนที่เราจะทำการปรับขนาดการ์ดด้วยตนเอง มาเรียนรู้เล็กน้อยเกี่ยวกับเลย์เอาต์และระบบเบรกพอยต์ของ Bootstrap

คอลัมน์บูตสแตรป

Bootstrap แบ่งหน้าออกเป็น 12 คอลัมน์เพื่อให้ง่ายต่อการพัฒนาเลย์เอาต์

ต่อไปนี้คือตัวอย่างสั้นๆ เพื่อให้เห็นภาพ:

<div class="row">
        <div class="col border p-5">column 1</div>
        <div class="col border p-5">column 2</div>
        <div class="col border p-5">column 3</div>
        <div class="col border p-5">column 4</div>
        <div class="col border p-5">column 5</div>
        <div class="col border p-5">column 6</div>
        <div class="col border p-5">column 7</div>
        <div class="col border p-5">column 8</div>
        <div class="col border p-5">column 9</div>
        <div class="col border p-5">column 10</div>
        <div class="col border p-5">column 11</div>
        <div class="col border p-5">column 12</div>
      </div>

อันดับแรก เรามีเสื้อคลุมสำหรับคอลัมน์ที่เรียกว่า ROW ซึ่งเป็นเพียงคอนเทนเนอร์ flexbox สำหรับพวกเขา เราประกาศขนาดขององค์ประกอบโดยการเขียน COL-SCREEN SIZE BREAKPOINT-NUMBER OF COLUMNS TO OCCUPY

ในตัวอย่างข้างต้น เราไม่ได้ระบุเบรกพอยต์เพราะเราต้องการปรับขนาดนี้ไม่ว่าหน้าจอจะเป็นขนาดใด และไม่มีคอลัมน์จำนวนเท่าใด เนื่องจากละเว้นค่าเริ่มต้นเป็น COL-1 ดังนั้นเราจึงได้ 12 คอลัมน์ที่เป็นธรรมชาติ นี่คือสิ่งที่ดูเหมือน:

ส่วนประกอบการ์ดบูตสแตรป

บูทสแตรปเบรกพอยต์:

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

ค่าดีฟอลต์ที่เล็กมากคือค่าดีฟอลต์ ดังนั้นการละเว้นจุดพักอย่างสมบูรณ์ เช่น P-4 จะเหมือนกับการเขียน P-XS-4 ซึ่งจะนำไปใช้กับขนาดหน้าจอ XS และอันที่ใหญ่กว่าทั้งหมด

ส่วนประกอบการ์ดบูตสแตรป

กล่าวอีกนัยหนึ่ง ถ้าคุณต้องการกฎที่มีผลกับทุกหน้าจอ เพียงข้ามเบรกพอยต์

หากเราต้องการลดช่องว่างภายในจากตัวอย่างเป็น 0.5 rem จากขนาดหน้าจอขนาดกลางขึ้นไป เราจะเพิ่มคลาส P-MD-2 ในองค์ประกอบเดียวกัน

ส่วนประกอบการ์ดบูตสแตรป

ค่าพิกเซลเบรกพอยต์:

  • xs – ขนาดหน้าจอต่ำกว่า 576 พิกเซล นี่คือค่าเริ่มต้น
  • sm – ขนาดหน้าจอตั้งแต่ 576 พิกเซลขึ้นไป
  • md – ขนาดหน้าจอตั้งแต่ 768 พิกเซลขึ้นไป
  • lg – ขนาดหน้าจอตั้งแต่ 992 พิกเซลขึ้นไป
  • xl – ขนาดหน้าจอตั้งแต่ 1200 พิกเซลขึ้นไป

ลองใช้สิ่งนี้เพื่อเปลี่ยนเลย์เอาต์ของเราตามขนาดหน้าจอ:

<div class="row">
        <div class="col-5 col-md-7">
          <div class="card p-4">left column card</div>
          <div class="card p-4">left column card</div>
          <div class="card p-4">left column card</div>
          <div class="card p-4">left column card</div>
        </div>
        <div class="col-7 col-md-5">
          <div class="card p-4">right column card</div>
          <div class="card p-4">right column card</div>
          <div class="card p-4">right column card</div>
          <div class="card p-4">right column card</div>
        </div>
      </div>

อีกครั้ง เรามี ROW wrapper จากนั้น

ตั้งค่าเป็น COL-5 COL-MD-7 ซึ่งหมายความว่าจะครอบครอง 5 คอลัมน์จากขนาดหน้าจอที่เล็กที่สุดขึ้นไป แต่ทันทีที่มันถึงขนาดหน้าจอขนาดกลาง มันจะเปลี่ยนเป็น 7 คอลัมน์ หลังจากนั้น เรามี
ที่ด้านหลัง COL-7 COL-MD-5 ทั้งคู่เต็มไปด้วยการ์ดสองสามใบ ฉันจับขนาดหน้าจอในภาพหน้าจอเพื่อให้คุณเห็นว่ามันเปลี่ยนไปอย่างไร:

ส่วนประกอบการ์ดบูตสแตรป

ความกว้าง 767 พิกเซล

ด้านซ้ายของเรากว้าง 5 คอลัมน์ และด้านขวาคือ 7

เราขึ้นไป 1 พิกเซลเป็น 768 และพวกมันเปลี่ยนเป็นตรงกันข้าม:

ส่วนประกอบการ์ดบูตสแตรป

ส่วนประกอบย่อยของการ์ด

มาลองใช้พลังของการ์ดอย่างเต็มที่โดยลองใช้ส่วนประกอบย่อยทั้งหมด

การ์ดที่มีส่วนหัวและส่วนท้าย

<div class="card">
            <div class="card-header text-center p-4">I'm a header</div>
            <div class="card-body">
              <p class="card-text">
                first paragraph
              </p>
              <p class="card-text">
                second paragraph
              </p>
              <a href="#" class="card-link">Link 1</a>
              <a href="#" class="card-link">Link 2</a>
              <a href="#" class="card-link">Link 3</a>
            </div>
            <div class="card-footer">
              Footer of a Bootstrap card
            </div>
          </div>

เราได้สร้างการ์ดที่มีส่วนหัวของการ์ดอยู่ตรงกลาง ซึ่งมีเส้นขอบและพื้นหลังสีเทาอ่อน และตัวการ์ดด้านล่าง ซึ่งทำให้มีช่องว่างภายใน

ในส่วนเนื้อหา เรามีย่อหน้าที่มี CARD-TEXT สองสามย่อหน้าสำหรับการจัดแนว และบางลิงก์กับ CARD-LINK จึงเป็นสีฟ้าและวางชิดกัน

ในตอนท้าย เราสร้างส่วนท้ายของการ์ดซึ่งมีรูปแบบเหมือนกับส่วนหัว แต่ครั้งนี้ไม่ได้จัดกึ่งกลางข้อความ

ส่วนประกอบการ์ดบูตสแตรป

การ์ดพร้อมฝาปิดรูปภาพ

ครั้งนี้ เราจะเพิ่มภาพแคปให้กับการ์ด ชื่อและคำบรรยายให้กับเนื้อหาของการ์ด และกลุ่มรายการที่มีลิงก์เป็นรายการ:

<div class="card">
            <img
              src="https://via.placeholder.com/100"
              alt=""
              class="card-img-top"
            />
            <div class="card-body">
              <h3 class="card-title">card title in the card's body</h3>
              <h4 class="card-subtitle mb-4">card subtitle</h4>
 
              <p>list group with links inside:</p>
              <ul class="list-group">
                <li class="list-group-item">
                  <a href="#" class="card-link">List link 1</a>
                </li>
                <li class="list-group-item">
                  <a href="#" class="card-link">List link 2</a>
                </li>
                <li class="list-group-item">
                  <a href="#" class="card-link">List link 3</a>
                </li>
              </ul>
            </div>
          </div>

ฉันใช้เครื่องมือที่สะดวกมากสำหรับรูปภาพที่เรียกว่าตัวยึดตำแหน่ง ตัวเลขที่อยู่ท้ายสุดคือความกว้างพิกเซล x ความสูงของภาพ แต่ค่านี้จะถูกละเว้นเมื่อ CARD-IMG-TOP ขยาย (หรือย่อ) ภาพให้เต็มความกว้างของการ์ด ชื่อเรื่องและคำบรรยายมีการจัดรูปแบบที่ดีและเราใช้ยูทิลิตี้การวางแนวของ Bootstrap สำหรับการเว้นและระยะขอบ MB-4 ที่คุณเห็นในคำบรรยายหมายถึงขอบด้านล่าง

การเว้นระยะขอบรองเท้าและการวางแนวขอบ:
  • pt/mt – padding/margin top
  • pb/mb – padding/margin bottom
  • pl/ml – padding/margin left
  • pr/mr – padding/margin right
  • py/my – padding/margin แกน y (บนและล่าง)
  • px/mx – padding/margin x axis (ซ้ายและขวา)

จากนั้นเราก็มีกลุ่มรายการซึ่งห่อหุ้มรายการอีกครั้งและเป็นองค์ประกอบแต่ละองค์ประกอบที่มีเส้นขอบโค้งมนสีอ่อน นี่คือผลลัพธ์ของเรา:

ส่วนประกอบการ์ดบูตสแตรป

ฝาปิดรูปภาพด้านล่าง

ไม่มี CARD-IMG-BOTTOM ในบูตสแตรป แต่เราสามารถ "ปลอม" สิ่งนี้ได้อย่างง่ายดายโดยสร้าง div ที่ด้านล่างของการ์ดและวาง ส่วนประกอบการ์ดบูตสแตรป

<div class="card">
            <div class="card-body">
              <p class="card-text">
                Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quas
                unde corporis sed nam ad eius, pariatur, consectetur modi
                asperiores dolorem id quaerat eos quod nesciunt repudiandae aut
                temporibus rerum possimus.
              </p>
            </div>
            <img
              src="https://via.placeholder.com/100"
              alt=""
              class="card-img-top"
            />
          </div>

ฉันยังเพิ่ม lorem ipsum แบบเก่าที่ดีสำหรับการวัดที่ดี

ส่วนประกอบการ์ดบูตสแตรป

ฝาปิดรูปภาพด้านข้าง

นอกจากนี้เรายังสามารถทำให้เป็นแนวนอนได้ด้วยการเพิ่ม ROW wrapper ภายในการ์ดของเราเพื่อจัดวางในแนวนอน จากนั้นใช้ COL เพื่อกำหนดขนาดของภาพและส่วนที่เหลือของการ์ด:

<div class="card">
            <div class="row">
              <img
                src="https://via.placeholder.com/100"
                alt=""
                class="card-img-top col-6"
              />
              <div class="card-body col-6">
                <h3 class="card-title">card title in the card's body</h3>
                <h4 class="card-subtitle mb-4">card subtitle</h4>
 
                <p>list group with links inside:</p>
                <ul class="list-group">
                  <li class="list-group-item">
                    <a href="#" class="card-link">List link 1</a>
                  </li>
                  <li class="list-group-item">
                    <a href="#" class="card-link">List link 2</a>
                  </li>
                  <li class="list-group-item">
                    <a href="#" class="card-link">List link 3</a>
                  </li>
                </ul>
              </div>
            </div>
          </div>

เราเพิ่งห่อเนื้อหาทั้งหมดของการ์ดใน

และเพิ่ม COL-6 ให้ทั้งภาพและตัวการ์ดเพื่อให้การ์ด 50-50

ส่วนประกอบการ์ดบูตสแตรป

ภาพการ์ดเป็นพื้นหลัง

นอกจากนี้เรายังสามารถขยายรูปภาพให้ทั่วทั้งการ์ดและวางข้อความ รายการ ลิงก์ ฯลฯ ไว้บนการ์ดได้ เราทำได้โดยให้ คลาสของ CARD-IMG แล้ววางทุกอย่างใน

ด้วยคลาส CARD-IMG-OVERLAY ข้างในนั้นเรากำหนดค่าองค์ประกอบตามที่เราต้องการ

<div class="card">
            <img
              src="https://via.placeholder.com/100"
              alt=""
              class="card-img"
            />
            <div class="card-img-overlay">
              <h4 class="card-title">Overlay Title</h4>
              <p class="card-text">
                Image text overlay
              </p>
              <p>second paragraph</p>
              <p>third paragraph</p>
              <p>fourth paragraph</p>
              <div class="btn-group w-100">
                <button class="btn btn-primary">blue</button>
                <button class="btn btn-info">teal</button>
                <button class="btn btn-danger">red</button>
                <button class="btn btn-dark">black</button>
                <button class="btn btn-success">green</button>
              </div>
            </div>
          </div>

ที่นี่เราใช้ยูทิลิตี้ความกว้างเป็นครั้งแรก W-100 บน BTN-GROUP

ยูทิลิตี้ความกว้างและความสูงของสายรัดรองเท้า:
ส่วนประกอบการ์ดบูตสแตรป

w/h-25/50/75/100 – กว้าง/สูง 25%/50%/75%/100%

ในกรณีของเรา 100% ลบช่องว่างภายในแบบเดียวกับที่ใช้กับ CARD-BODY ซึ่งใช้ที่นี่โดย CARD-IMG-OVERLAY

คอลัมน์การ์ด

นอกจากนี้ยังมีตัวเลือกนี้ในการจัดวางการ์ดในคอลัมน์เพื่อให้ไปบนลงล่างก่อน และเฉพาะเมื่อเต็มคอลัมน์แล้ว จะเริ่มในการ์ดใหม่

<div class="card-columns">
        <div class="card">
          <h3 class="card-title text-center p-2">Title of card 1</h3>
          <div class="card-body">
            <p class="card-text">
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquam,
              rerum excepturi voluptate...
            </p>
          </div>
        </div>
        <div class="card">
          <h3 class="card-title text-center p-2">Title of card 2</h3>
          <div class="card-body">
            <p class="card-text">
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquam,
              rerum excepturi voluptate...
            </p>
          </div>
        </div>
        <div class="card">
          <h3 class="card-title text-center p-2">Title of card 3</h3>
          <div class="card-body">
            <p class="card-text">
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquam,
              rerum excepturi voluptate...
            </p>
          </div>
        </div>
        <div class="card">
          <h3 class="card-title text-center p-2">Title of card 4</h3>
          <div class="card-body">
            <p class="card-text">
              Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquam,
              rerum excepturi voluptate...
            </p>
          </div>
        </div>
      </div>

เราเพียงแค่ห่อการ์ดทั้งหมดของเราใน

และเราได้รับสิ่งต่อไปนี้:

ส่วนประกอบการ์ดบูตสแตรป

การจัดสไตล์การ์ด Bootstrap

เมื่อพูดถึงการใส่สไตล์การ์ดบูตสแตรป เราสามารถเปลี่ยนพื้นหลังและสีข้อความได้ เช่นเดียวกับสีและรูปลักษณ์ของเส้นขอบ

สามารถใช้สไตล์กับการ์ดทั้งใบ เป็นส่วนประกอบย่อยแยกกัน หรือทั้งสองอย่าง ต่อไปนี้คือการ์ดที่มีสไตล์บางส่วนให้เลือกดู:

<div class="card bg-primary">
          <div class="card-header"><h3>Header 1</h3></div>
          <div class="card-body">
            <p>Body 1</p>
          </div>
          <div class="card-footer"><p>Footer 1</p></div>
        </div>
        <div class="card bg-success text-white">
          <div class="card-header"><h3>Header 2</h3></div>
          <div class="card-body">
            <p>Body 2</p>
          </div>
          <div class="card-footer text-danger"><p>Footer 2</p></div>
        </div>
        <div class="card bg-info text-dark border-danger">
          <div class="card-header"><h3>Header 3</h3></div>
          <div class="card-body">
            <p>Body 3</p>
          </div>
          <div class="card-footer"><p>Footer 3</p></div>
        </div>
        <div class="card border-primary bg-dark text-white">
          <div class="card-header border-success"><h3>Header 4</h3></div>
          <div class="card-body text-danger">
            <p>Body 4</p>
          </div>
          <div class="card-footer bg-warning text-info"><p>Footer 4</p></div>
        </div>

ไพ่ใบแรกมีพื้นหลังสีน้ำเงิน (BG-PRIMARY) อยู่ที่ตัวการ์ด โดยกำหนดสไตล์ให้ทั้งการ์ด

การ์ดใบที่สองมีพื้นหลังสีเขียว (BG-SUCCESS) และข้อความสีขาว (TEXT-WHITE) บนการ์ดทั้งใบ แต่มีข้อความสีแดง (TEXT-DANGER) ในส่วนท้าย ซึ่งจะแทนที่ TEXT-WHITE ขององค์ประกอบหลัก

ไพ่ใบที่สามมีพื้นหลังสีน้ำเงินเข้ม (BG-INFO) ข้อความสีดำ (TEXT-DARK) และเส้นขอบสีแดง (BORDER-DANGER)

สุดท้าย ไพ่ใบที่สี่มีขอบสีน้ำเงิน (BORDER-PRIMARY) พื้นหลังสีดำ (BG-DARK) และข้อความสีขาว (TEXT-WHITE) บนการ์ดทั้งใบ

เส้นขอบสีเขียว (BORDER-SUCCESS) บนส่วนหัว ข้อความสีแดง (TEXT-DANGER) ในส่วนเนื้อหา และพื้นหลังสีเหลือง (BG-WARNING) และข้อความสีน้ำเงินเข้ม (TEXT-INFO) ในส่วนท้าย

นี่คือลักษณะของการ์ดสายรุ้งของเรา:

ส่วนประกอบการ์ดบูตสแตรป

สรุป

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

พวกเขาสามารถโฮสต์รูปภาพ รายการ และลิงก์ ทั้งหมดในรูปแบบต่างๆ

พวกเขายังสามารถมีส่วนหัวและส่วนท้ายของตัวเอง ทั้งหมดนี้มีรูปแบบและการจัดรูปแบบที่กำหนดไว้ล่วงหน้า แต่เปิดให้เราปรับแต่งได้

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