การเยื้องและระยะขอบใน html ระยะขอบ CSS และช่องว่างภายใน: ความแตกต่างระหว่างคุณสมบัติระยะขอบและช่องว่างภายใน วิธีการจัดตำแหน่งแบบเก่า

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

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

Padding แยกเนื้อหาออกจากเส้นขอบของบล็อก และระยะขอบจะสร้างช่องว่างระหว่างบล็อก

อย่างที่คุณเห็น CSS Margins และ Padding แตกต่างกัน แม้ว่าบางครั้งจะไม่ได้ดูโค้ด แต่ก็เป็นไปไม่ได้ที่จะระบุคุณสมบัติที่จะใช้ในการกำหนดระยะห่าง สิ่งนี้เกิดขึ้นเมื่อเฟรมหรือพื้นหลังของบล็อกเนื้อหาหายไป

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

การขยายความ:

  • ช่องว่างภายในด้านบน: ความหมาย;
  • ช่องว่างภายในขวา: ความหมาย;
  • ช่องว่างภายในด้านล่าง: ความหมาย;
  • ช่องว่างภายในซ้าย: ความหมาย;

สาขา:

  • ขอบด้านบน: ความหมาย;
  • ขอบขวา: ความหมาย;
  • ขอบล่าง: ความหมาย;
  • ขอบซ้าย: ความหมาย;

สามารถระบุค่าในหน่วย CSS ใดก็ได้ - px, em, % ฯลฯ ตัวอย่าง: margin-top: 15px .

นอกจากนี้ยังมีสิ่งที่สะดวกมากเช่น ชวเลขสำหรับระยะขอบและการขยาย CSS. หากคุณต้องการตั้งค่าระยะขอบหรือช่องว่างภายในทั้งสี่ด้านขององค์ประกอบ คุณไม่จำเป็นต้องเขียนคุณสมบัติสำหรับแต่ละด้านแยกกัน ทุกอย่างง่ายขึ้น: สำหรับระยะขอบและช่องว่างภายในคุณสามารถระบุค่า 1, 2, 3 หรือ 4 ค่าในคราวเดียว จำนวนค่ากำหนดวิธีการกระจายการตั้งค่า:

  • ค่า 4 ค่า: ระยะห่างจากขอบถูกตั้งค่าสำหรับทุกด้านขององค์ประกอบตามลำดับต่อไปนี้: บน, ขวา, ล่าง, ซ้าย: ระยะห่างจากขอบ: 2px 4px 5px 10px;
  • 3 ค่า: ช่องว่างภายในถูกตั้งค่าไว้เป็นอันดับแรกสำหรับด้านบน จากนั้นพร้อมกันสำหรับด้านซ้ายและด้านขวา จากนั้นสำหรับด้านล่าง: ช่องว่างภายใน: 3px 6px 9px;
  • 2 ค่า: ช่องว่างภายในถูกตั้งค่าพร้อมกันจากด้านบนและด้านล่าง จากนั้นพร้อมกันสำหรับซ้ายและขวา: ช่องว่างภายใน: 6px 12px;
  • 1 ค่า: มีการตั้งค่าช่องว่างภายในเท่ากันสำหรับทุกด้านขององค์ประกอบ: ช่องว่างภายใน: 3px;

กฎเดียวกันนี้ใช้กับคุณสมบัติ CSS Margin โปรดทราบว่าคุณสามารถใช้ค่าลบสำหรับมาร์จิ้นได้ (เช่น -3px) ซึ่งบางครั้งอาจมีประโยชน์มาก

ยุบระยะขอบ

ลองนึกภาพสถานการณ์: องค์ประกอบบล็อกสององค์ประกอบวางซ้อนกันและจะได้รับฟิลด์มาร์จิ้น บล็อกด้านบนถูกกำหนดไว้ที่ Margin: 60px และบล็อกด้านล่างถูกกำหนดไว้ที่ Margin: 30px มันสมเหตุสมผลที่จะสมมติว่าฟิลด์ที่มีเส้นขอบทั้งสองขององค์ประกอบทั้งสองจะสัมผัสกันและด้วยเหตุนี้ช่องว่างระหว่างบล็อกจะเท่ากับ 90 พิกเซล

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


ระยะห่างระหว่างบล็อกเท่ากับค่าที่มากกว่า

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

  • เมื่อค่ามาร์จิ้นทั้งสองเป็นบวก ขนาดมาร์จิ้นที่ได้จะเท่ากับค่าที่มากขึ้น
  • หากค่าใดค่าหนึ่งเป็นลบคุณต้องคำนวณขนาดของฟิลด์เพื่อให้ได้ผลรวมของค่า ตัวอย่างเช่น ด้วยค่า 20px และ -18px ขนาดฟิลด์จะเป็น:
    20 + (-18) = 20 – 18 = 2 พิกเซล
  • หากทั้งสองค่าเป็นลบ จะมีการเปรียบเทียบโมดูลัสของตัวเลขเหล่านี้ และเลือกตัวเลขที่มีโมดูลัสมากกว่า (ด้วยเหตุนี้ ตัวเลขลบที่น้อยกว่า) จะถูกเลือก ตัวอย่าง: คุณต้องเปรียบเทียบค่าของฟิลด์ -6px และ -8px โมดูลัสของตัวเลขที่จะเปรียบเทียบคือ 6 และ 8 ตามลำดับ ตามมาด้วย 6 -8 ขนาดฟิลด์ผลลัพธ์คือ -8 พิกเซล
  • ในกรณีที่มีการระบุค่าไว้ใน หน่วยที่แตกต่างกัน CSS จะลดลงเหลือหนึ่งหลังจากนั้นจึงเปรียบเทียบและเลือกค่าที่มากขึ้น
  • ขนาดระยะขอบสำหรับองค์ประกอบลูกถูกกำหนดด้วยวิธีที่น่าสนใจยิ่งขึ้นไปอีก: หากลูกมีระยะขอบมากกว่าระดับบนสุด ก็จะให้ความสำคัญกับขนาดนั้น ในกรณีนี้ ขนาดของระยะขอบบนและล่างของพาเรนต์จะเหมือนกับขนาดที่ระบุไว้สำหรับเด็ก ในกรณีนี้จะไม่มีระยะห่างระหว่างผู้ปกครองและเด็ก

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

องค์ประกอบสามารถซ้อนกันหรืออยู่ติดกัน ลองดูตัวอย่างต่อไปนี้:

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

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

มีหลายวิธีในการตั้งค่าสไตล์เหล่านี้ ตัวอย่างเช่น ระบุขนาดของระยะขอบหรือการเยื้องทั้งหมดโดยตรงด้วยอาร์กิวเมนต์เดียวในหน่วยการวัดบางหน่วย (px, ex, em, pt, cm และอื่นๆ):

ช่องว่างภายใน: 3px; ระยะขอบ: 3px;

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

การขยาย: 3px 5px; ระยะขอบ: 3px 5px;

อันแรกจะกำหนดจำนวนระยะขอบ/การเยื้องที่ด้านบนและด้านล่าง ส่วนอันที่สอง - ทางซ้ายและขวา เมื่อให้เหตุผล ๓ ประการ คือ

การขยาย: 3px 5px 2px; ระยะขอบ: 3px 5px 2px;

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

การขยาย: 3px 5px 2px 6px; ระยะขอบ : 3px 5px 2px 6px ;

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

ในรูป บล็อกสีแดงอยู่ภายในเซลล์ตารางและอยู่ติดกับเส้นขอบ กล่าวคือ เซลล์ไม่มีระยะขอบ มาตั้งค่าระยะขอบของเซลล์โดยใช้สไตล์:

ช่องว่างภายใน: 5px;

ด้วยเหตุนี้ เพจจะเปลี่ยนเป็นดังนี้:

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

ขอบบน: 5px;

โปรดทราบว่าเราตั้งค่าการเยื้องให้กับตารางโดยเฉพาะ ไม่ใช่กับเซลล์ของตาราง เช่นเดียวกับกรณีของฟิลด์ นี่คือผลลัพธ์:

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

รหัส HTML ของหน้าทดสอบ:

<html > <หัว > <หัวเรื่อง >ทดสอบ</หัวเรื่อง> <meta http-equiv = "ประเภทเนื้อหา" content = "text/html;charset=utf-8"> </หัว> <ร่างกาย > <สไตล์ >ตาราง (กว้าง: 200px; ความสูง: 150px; เส้นขอบ: 1px ทึบ #555; ยุบขอบ: ยุบ) td (จัดแนวตั้ง: ด้านบน; ขยาย: 0px) div (กว้าง: 100px; ความสูง: 100px; พื้นหลัง: สีแดง)</สไตล์> <รูปแบบตาราง = "พื้นหลัง: มะนาว" > <ตร > <td style = "ช่องว่างภายใน: 5px" > <สไตล์ div = "ระยะขอบ: 0px" ></div> </td> </tr> </ตาราง> <รูปแบบโต๊ะ = "พื้นหลัง: ฟ้า; ขอบบน: 5px"> <ตร > <ทีดี ></td> </tr> </ตาราง> </ตัว> </html> Padding-ด้านบน

ฉันหวังว่าคุณจะคุ้นเคยกับโครงสร้างของบล็อกแล้ว ถ้าไม่เช่นนั้นจะแสดงด้านล่าง

โครงสร้างบล็อก

ดังนั้น. คุณคงทราบแล้วว่าระยะขอบและระยะขอบของบล็อกแสดงด้วยคุณสมบัติการเติมและระยะขอบตามลำดับ และในบทความก่อนหน้านี้เราได้กล่าวถึงหัวข้อนี้แล้วบางส่วน ในหน้านี้ เราจะมาดูฟิลด์ต่างๆ อย่างละเอียดยิ่งขึ้น ( การขยายความ) และช่องว่างภายใน ( ระยะขอบ ).

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

ดังนั้น. ระยะขอบจะถูกระบุโดยคุณสมบัติการเติม นี่คือระยะทางภายในจากขอบเขตของบล็อกถึงเนื้อหา

คุณสมบัตินี้ใช้กับองค์ประกอบทั้งหมด

ระยะทางระบุไว้ในหน่วยความยาว CSS, % หรือ ( ค่าเริ่มต้น

คุณสมบัติการเติมนั้นเป็นสากลเพราะมันตั้งค่าระยะขอบจากเส้นขอบขององค์ประกอบเป็นเนื้อหาสำหรับทุกด้าน ดังนั้นการรวมคุณสมบัติ padding-top , padding-right , padding-bottom และ padding-left ซึ่งกำหนดความกว้างของ ระยะขอบสำหรับองค์ประกอบแต่ละด้านแยกกัน

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

คุณสมบัติมาร์จิ้นยังใช้กับองค์ประกอบทั้งหมดด้วย

ช่องว่างภายในยังระบุในหน่วยความยาว CSS, % หรือ ( ค่าเริ่มต้น) ถูกตรวจพบโดยอัตโนมัติโดยเบราว์เซอร์

คุณสมบัติ Margin นั้นเป็นสากล เนื่องจากมันกำหนดจำนวนการเยื้องจากเส้นขอบขององค์ประกอบสำหรับทุกด้าน ดังนั้นการรวมคุณสมบัติ Margin-top , Margin-right , Margin-bottom และ Margin-left ซึ่งกำหนดความกว้างของการเยื้อง จากเส้นขอบของแต่ละองค์ประกอบแยกกัน

และอีกอย่างหนึ่ง: การเยื้อง ( ระยะขอบ) ตั้งอยู่นอกบล็อก ในขณะที่ระยะขอบ ( การขยายความ) ข้างใน ดังนั้นพื้นหลังของบล็อกหรือมัน ภาพพื้นหลังใช้เฉพาะกับระยะขอบและการเยื้องจะโปร่งใสเสมอหรือมีพื้นหลังของระยะหลัก ( ผู้ปกครอง) บล็อกหรือพื้นหลังหน้า

ข้อมูลโค้ด:



; ">

ตารางนี้อยู่ภายในคอนเทนเนอร์ที่มีเส้นขอบสีแดงและพื้นหลังสีน้ำเงิน


ความกว้างของช่องว่างจากขอบตารางถึงขอบสีแดงของคอนเทนเนอร์คือ 10 พิกเซล


เซลล์ด้านซ้ายมีรูปภาพ ระยะขอบจากรูปภาพถึงเส้นขอบเซลล์คือ 25 พิกเซล


ระยะขอบของเซลล์ด้านขวาคือ 10 พิกเซล!


อัปเดตครั้งล่าสุด: 04/08/2016

ช่องข้อความบรรทัดเดียวถูกสร้างขึ้นโดยใช้องค์ประกอบอินพุตเมื่อแอตทริบิวต์ประเภทถูกตั้งค่าเป็นข้อความ:

คุณสามารถปรับแต่งช่องข้อความได้โดยใช้แอตทริบิวต์เพิ่มเติมจำนวนหนึ่ง:

    dirname: กำหนดทิศทางของข้อความ

    maxlength : จำนวนอักขระสูงสุดที่อนุญาตในช่องข้อความ

    pattern : กำหนดรูปแบบที่ข้อความอินพุตควรตรงกัน

    placeholder : ตั้งค่าข้อความที่แสดงโดยค่าเริ่มต้นในกล่องข้อความ

    อ่านอย่างเดียว : ทำให้ช่องข้อความเป็นแบบอ่านอย่างเดียว

    จำเป็น : ระบุว่าช่องข้อความจะต้องมีค่า

    size : กำหนดความกว้าง ช่องข้อความในตัวอักษรที่มองเห็นได้

    value : ตั้งค่าเริ่มต้นในช่องข้อความ

ลองใช้คุณสมบัติบางอย่าง:

ช่องข้อความใน HTML5

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

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

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

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

ช่องข้อความใน HTML5

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

ช่องค้นหา

หากต้องการสร้างช่องค้นหา ให้ใช้องค์ประกอบอินพุตพร้อมกับแอตทริบิวต์ type="search" อย่างเป็นทางการ มันเป็นช่องข้อความธรรมดา:

ค้นหาใน HTML5

ช่องรหัสผ่าน

หากต้องการป้อนรหัสผ่าน ให้ใช้องค์ประกอบอินพุตพร้อมกับแอตทริบิวต์ type="password" ของเขา คุณสมบัติที่โดดเด่นคืออักขระที่ป้อนถูกปกปิดด้วยจุด:

ในบทความนี้ฉันอยากจะบอกวิธีการวางอย่างถูกต้อง สาขา(ช่องว่างภายใน) และ การเยื้อง(ระยะขอบ) ใน CSS

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

ดังนั้น หากไม่ได้ระบุเส้นขอบและพื้นหลังขององค์ประกอบ ก็ไม่มีความแตกต่าง ให้ใช้คุณสมบัติการเติมหรือระยะขอบเพื่อตั้งค่าการเยื้อง แต่ต้องไม่ระบุความกว้าง (ความกว้าง) และความสูง (ความสูง) ขององค์ประกอบ และอัลกอริธึมสำหรับการคำนวณขนาดเนื้อหาโดยใช้คุณสมบัติการกำหนดขนาดกล่อง

ไม่ว่าในกรณีใด โปรดจำไว้ว่าระยะขอบอาจรวมหรือไม่รวมไว้ในความกว้างหรือความสูงขององค์ประกอบ การเยื้องจะถูกตั้งค่าไว้นอกองค์ประกอบเสมอ

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

นี่คือบล็อกข่าว ประกอบด้วยส่วนหัว รายการข่าว และลิงก์ “ข่าวอื่นๆ” ตั้งชื่อคลาสต่อไปนี้ให้พวกเขา: news__title, news__list และ news__more-link

ข่าว

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

ข่าว ( การขยาย: 20px 25px; )

ดังนั้น หากคุณต้องการเปลี่ยนค่าของฟิลด์ทางด้านขวาและซ้าย จะต้องดำเนินการนี้ ในที่เดียว. และเมื่อเพิ่มองค์ประกอบใหม่ภายในบล็อกข่าว ก็จะมีการเยื้องที่จำเป็นด้านซ้ายและขวาอยู่แล้ว

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

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

เมื่อคำนึงถึงสิ่งนี้ เราจึงตั้งค่าการเยื้องที่ด้านล่างสำหรับชื่อเรื่อง และการเยื้องที่ด้านบนสำหรับลิงก์ "ข่าวอื่นๆ"

News__title ( ขอบด้านล่าง: 10px; ) .news__more-link ( ขอบด้านบน: 12px; )

เราสามารถบรรลุผลภายนอกที่เหมือนกันได้โดยการเพิ่มช่องว่างที่ด้านบนและด้านล่างสำหรับรายการข่าว

รายการข่าว__ ( ระยะขอบ: 10px 0 12px 0; )

ตอนนี้คุณต้องตั้งค่าการเยื้องระหว่างรายการข่าวแต่ละรายการ ขอย้ำอีกครั้งว่าจำนวนรายการข่าวอาจแตกต่างกันและอาจมีเพียงรายการข่าวเดียวเท่านั้น

คุณสามารถตั้งค่าการเยื้องด้านบนสำหรับแต่ละข่าวยกเว้นข่าวแรก หรือเยื้องด้านล่างสำหรับแต่ละข่าวยกเว้นข่าวสุดท้าย ตัวเลือกแรกจะดีกว่าเนื่องจากตัวเลือกหลอก:first-child ถูกเพิ่มในข้อกำหนด CSS 2.1 และมีการรองรับที่กว้างกว่า ซึ่งแตกต่างจากตัวเลือกหลอก:last-child ซึ่งเพิ่มในข้อกำหนด CSS 3.0 เท่านั้น

News__list-item ( ขอบด้านบน: 18px; ) .news__list-item:first-child ( ขอบด้านบน: 0; )

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

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

ในกรณีนี้คุณสามารถใช้ วิธีถัดไปการมอบหมายการเยื้อง

Popup__header + .popup__text ( ขอบด้านบน: 15px; )

จากนั้นการเยื้องจะปรากฏขึ้นหากใช้ทั้งสององค์ประกอบเท่านั้น กรณีแสดงเฉพาะชื่อเรื่องหรือเฉพาะข้อความจะไม่มีการเยื้องเพิ่มเติม

การยุบระยะขอบแนวตั้ง

ความแตกต่างอีกอย่างหนึ่งที่ทุกคนไม่รู้นั้นเกี่ยวข้องกับช่องว่างแนวตั้งระหว่างบล็อกที่อยู่ติดกัน คำจำกัดความของการเยื้องที่ฉันให้ไว้ข้างต้นบอกว่าการเยื้องคือระยะห่างระหว่าง เส้นขอบบล็อกปัจจุบันและบล็อกใกล้เคียง ดังนั้น หากเราวางบล็อกสองบล็อกไว้ด้านล่างซึ่งกันและกัน และให้บล็อกหนึ่งมีระยะขอบด้านล่าง 30px และอีกบล็อกหนึ่งมีระยะขอบบน 20px ระยะขอบระหว่างบล็อกเหล่านั้นจะไม่ใช่ 50px แต่เป็น 30px

นั่นคือ การเยื้องจะทับซ้อนกัน และการเยื้องระหว่างบล็อกจะเท่ากับการเยื้องที่ใหญ่ที่สุด ไม่ใช่ผลรวมของการเยื้อง เอฟเฟกต์นี้เรียกอีกอย่างว่า "การล่มสลาย"

โปรดทราบว่าการเยื้องแนวนอนไม่เหมือนแนวตั้งจะไม่ "ยุบ" แต่จะถูกรวมเข้าด้วยกัน ฟิลด์ (ช่องว่างภายใน) จะถูกรวมเข้าด้วยกันด้วย

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

H1 ( ขอบล่าง: 24px; ) h2 ( ขอบบน: 24px; ขอบล่าง: 12px; ) p ( ขอบบน: 12px; )

ตอนนี้สามารถวางส่วนหัว h2 หลังส่วนหัว h1 หรือหลังย่อหน้าได้ ไม่ว่าในกรณีใด ขอบด้านบนจะต้องไม่เกิน 24px

กฎทั่วไป

โดยสรุป ฉันต้องการแสดงรายการกฎที่ฉันปฏิบัติตามเมื่อจัดเรียงระยะขอบและการเยื้อง

  1. ถ้า องค์ประกอบที่อยู่ติดกันมีการเยื้องเหมือนกัน ควรตั้งค่าเป็นคอนเทนเนอร์หลักแทนที่จะเป็นองค์ประกอบ
  2. เมื่อตั้งค่าการเยื้องระหว่างองค์ประกอบ คุณควรพิจารณาว่าองค์ประกอบนั้นจำเป็นหรือไม่จำเป็น
  3. สำหรับรายการองค์ประกอบที่คล้ายกัน อย่าลืมว่าจำนวนองค์ประกอบอาจแตกต่างกันไป
  4. โปรดระวังช่องว่างภายในแนวตั้งและใช้คุณลักษณะนี้ซึ่งจะเป็นประโยชน์ต่อคุณ

แท็ก: เพิ่มแท็ก