CSS มีอะไรที่ไม่ดีเลย


170

เมื่อฉันเห็นรหัสเริ่มต้นของเว็บไซต์และตัวอย่าง CSS จะอยู่ในไฟล์แยกต่างหากตั้งชื่อบางอย่างเช่น "main.css", "default.css" หรือ "Site.css" อย่างไรก็ตามเมื่อฉันเขียนโค้ดขึ้นหน้าฉันมักจะล่อลวง CSS ในบรรทัดกับองค์ประกอบ DOM เช่นโดยการตั้งค่า "ลอย: ขวา" บนภาพ ฉันรู้สึกว่านี่เป็น "การเข้ารหัสที่ไม่ดี" เนื่องจากเป็นตัวอย่างที่ไม่ค่อยได้ทำ

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

คำถาม: การใช้ CSS ในบรรทัดถือว่าไม่ดีแม้ว่าจะใช้กับองค์ประกอบนั้นเท่านั้นหรือไม่ ถ้าเป็นเช่นนั้นทำไม

ตัวอย่าง (อันนี้แย่ใช่ไหม):

<img src="myimage.gif" style="float:right" />

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

3
ฉันคิดว่ารูปแบบอินไลน์ขี้เกียจ ฉันพูดแบบนี้เพราะฉันทำบ่อยๆดังนั้นฉันจึงรู้ - ทำไม - ฉันกำลังทำอยู่เพราะฉันไม่รู้ว่าสไตล์จะคงอยู่หรือไม่ดังนั้นฉันจึงเคยทำมันติดกับ html ทุกวันนี้ด้วยการสนับสนุน html5 และในทางปฏิบัติสำหรับ <style> </style> ทุกที่ฉันใช้แท็ก <style> ใกล้เคียงแทนขณะที่เล่นกับเลย์เอาต์แล้วย้ายไปยังไฟล์ core / main css หลังจากนั้น ประโยชน์ที่เหมือนกันของความเร็วและความฉับไวแทบไม่มีข้อเสียเลย (ผลข้างเคียงกับองค์ประกอบนอกหน้าเนื่องจากมีความจำเพาะเป็นหนึ่ง)
Kzqai

3
@yu_ominae - โปรดจำไว้ว่า "ไซต์เชิงพาณิชย์" ไม่เป็นไปตามแนวทางปฏิบัติที่ดีที่สุดเสมอไป อันที่จริงแล้วมันค่อนข้างหายาก ปัจจัยในการตัดสินใจคือหากผู้พัฒนารู้ว่าใส่ใจและมีเวลา หรือถ้าผู้จัดการยินดีที่จะจัดสรรเวลาและสั่งให้พนักงานนำไปปฏิบัติ เมื่อลำดับความสำคัญของงานคือให้ตรงตามกำหนดเวลาคุณภาพมักจะลดลง
BryanH

1
น่าสังเกตว่าแม้ว่า "ไซต์เชิงพาณิชย์" ดูเหมือนจะใช้รูปแบบอินไลน์ แต่อาจเป็นผลมาจากการใช้การเรียก jQuery บางอย่าง (เช่นcss()) ซึ่งใช้รูปแบบอินไลน์
Dave Becker

คำตอบ:


203

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

<div style ="font-size:larger; text-align:center; font-weight:bold">

ในแต่ละหน้าเพื่อแสดงส่วนหัวของหน้ามันจะง่ายกว่ามากในการรักษา

<div class="pageheader">  

หากมีการกำหนดส่วนหัวของหน้าในสไตล์ชีทเดียวดังนั้นหากคุณต้องการเปลี่ยนลักษณะที่ส่วนหัวของหน้าทั่วทั้งไซต์คุณเปลี่ยน CSS ในที่เดียว

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


18
คุณพูดว่าตัวอย่างของฉันไม่ใช่ปัญหา แต่คุณยอมรับว่าคุณเป็นคนนอกรีต ฉันชอบวิธีการนั้น
ChessWhiz

8
ถ้าฉันมีนิเกิลทุกครั้งที่ฉันต้องแก้ไขโฟลตของภาพหรือ css อื่น ๆ ที่เดิมจะเป็น "เพียงองค์ประกอบเดียว" ... ... เอาละฉันจะออกไปทานอาหารค่ำนอกบ้าน ที่ร้านอาหารที่ดี
Kzqai

8
สถานการณ์อื่นเมื่อไม่เพียง แต่จะใช้การจัดแต่งทรงผมแบบอินไลน์ แต่เป็นวิธีเดียวที่จะจัดรูปแบบอะไรก็ได้: อีเมล HTML
Christophe Marois

แต่htmlตัวไฟล์เองก็ถูกแคชไว้เช่นกัน

เพื่อตอบสนองต่อผู้ใช้ 663031: เว็บไซต์ที่มีหลายหน้ามีหลายหน้า HTML ที่แตกต่างกัน แต่สามารถรวมสไตล์ทั้งหมดไว้ในไฟล์ CSS เดียวเท่านั้นที่สามารถแคชได้อย่างง่ายดาย
Sinthorion

68

ข้อดีของการมีไฟล์ css แตกต่างกันคือ

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

2
ฉันถามคำถามนี้กับตัวเองทุกเดือน (ค่อนข้างใหม่สำหรับการเขียนโปรแกรมเว็บ) และนี่เป็นครั้งแรกที่ฉันได้อ่านอะไรเกี่ยวกับไฟล์ css ที่ถูกแคช นั่นสำหรับฉันที่นั่น!
ganders

ฉันคิดเกี่ยวกับแคชเช่นกัน แต่ในกรณีของฉันฉันต้องจัดการกับ CSS ที่รวมกันซึ่งเป็น 15k บรรทัดเป็นไปไม่ได้ที่จะรักษาขยะส่วนใหญ่ทั้งหมดที่จะใช้เพียงครั้งเดียวในหน้าเดียวที่ไม่ได้ ' ไม่มีอีกแล้ว ดังนั้นคุณจึงทิ้งโค้ด CSS ให้กับทุกคนในการเข้าชมแต่ละหน้าชั่วคราวซึ่งมีผู้เข้าชมเพียง 1% เท่านั้น ฉันไม่แน่ใจว่าการโต้เถียงทางอินเทอร์เน็ตนั้นถูกต้องในทุกกรณี โชคดีที่ส่วนประกอบของเว็บกำลังจะเปลี่ยนแปลงสิ่งต่างๆ!
Shadoweb

@Shadowbob - จะดีกว่าไหมถ้ามีไฟล์ css ที่เล็กกว่าแทนที่จะเป็นไฟล์ใหญ่ มีบางทีหนึ่งทั่วไปที่ใช้สำหรับทุกหน้า แต่จากนั้นมีสไตล์ชีตแยกขนาดเล็กสำหรับหน้าอื่น ๆ ควรบำรุงรักษาง่ายกว่า และถ้าปัญหาการจราจรเป็นปัญหาสำหรับการผลิตอาจจะรวมเข้าเป็นหนึ่งเดียวในกระบวนการสร้าง
Darius.V

26

วิธี html5 ในการสร้างต้นแบบ css ที่รวดเร็ว

หรือ: <style>แท็กไม่ได้มีไว้สำหรับหัวอีกต่อไปแล้ว!

CSS การแฮ็ก

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

ไม่มีแอตทริบิวต์สไตล์แบบอินไลน์

อย่าสร้าง css แบบอินไลน์ของคุณโดยที่ฉันหมายถึง: <element style='color:red'>หรือแม้กระทั่ง<img style='float:right'>สะดวกมาก แต่ไม่ได้สะท้อนถึงตัวเลือกที่แท้จริงในไฟล์ css จริงในภายหลังและหากคุณเก็บไว้คุณจะเสียใจกับภาระการบำรุงรักษาในภายหลัง

ต้นแบบด้วย<style>แทน

จุดที่คุณจะใช้อินไลน์ css แทนใช้<style> องค์ประกอบในหน้า ลองดูสิ! มันทำงานได้ดีในเบราว์เซอร์ทั้งหมดดังนั้นจึงเหมาะสำหรับการทดสอบ แต่ช่วยให้คุณสามารถย้าย css ดังกล่าวไปยังไฟล์ css ทั่วโลกได้ทุกเมื่อที่คุณต้องการ / ต้องการ! (* โปรดทราบว่าตัวเลือกจะมีความเฉพาะเจาะจงในระดับหน้าเว็บแทนที่จะเป็นข้อมูลเฉพาะระดับเว็บไซต์ดังนั้นควรระมัดระวังให้กว้างเกินไป) เช่นเดียวกับในไฟล์ css ของคุณ:

<style>
.avatar-image{
    float:right
}
.faq .warning{
    color:crimson;
}
p{
    border-left:thin medium blue;
    // this general of a selector would be very bad, though.
    // so be aware of what'll happen to general selectors if they go
    // global
}
</style>

สร้างใหม่อินไลน์ css ของคนอื่น

บางครั้งคุณไม่ได้เป็นปัญหาและคุณต้องติดต่อกับคนอื่นของอินไลน์ CSS และคุณต้องปรับโครงสร้างใหม่ นี่เป็นอีกหนึ่งการใช้ที่ยอดเยี่ยมสำหรับ<style>หน้าเว็บเพื่อให้คุณสามารถตัดอินไลน์ css โดยตรงและวางลงบนหน้าในชั้นเรียนหรือรหัสหรือตัวเลือกในขณะที่คุณกำลังปรับโครงสร้างใหม่ หากคุณระมัดระวังอย่างเพียงพอกับตัวเลือกของคุณในขณะที่คุณเดินทางคุณสามารถย้ายผลลัพธ์สุดท้ายไปยังไฟล์ css ทั่วโลกในตอนท้ายด้วยการคัดลอกและวาง

เป็นการยากเล็กน้อยที่จะถ่ายโอนcss ทุก ๆ ชิ้นทันทีไปยังไฟล์ css ทั่วโลก แต่ด้วย<style>องค์ประกอบในหน้าตอนนี้เรามีทางเลือกอื่น


23

นอกเหนือไปจากคำตอบอื่น ๆ .... สากล

ขึ้นอยู่กับภาษาของเนื้อหา - บ่อยครั้งที่คุณต้องปรับแต่งสไตล์ขององค์ประกอบ

ตัวอย่างหนึ่งที่ชัดเจนคือภาษาจากขวาไปซ้าย

สมมติว่าคุณใช้รหัสของคุณ:

<img src="myimage.gif" style="float:right" />

ตอนนี้บอกว่าคุณต้องการให้เว็บไซต์ของคุณรองรับภาษา rtl - คุณต้องการ:

<img src="myimage.gif" style="float:left" />

ดังนั้นตอนนี้ถ้าคุณต้องการสนับสนุนทั้งสองภาษาไม่มีวิธีกำหนดค่าให้ลอยโดยใช้การกำหนดสไตล์แบบอินไลน์

ด้วย CSS สิ่งนี้จะได้รับการดูแลอย่างง่ายดายด้วยแอตทริบิวต์ lang

ดังนั้นคุณสามารถทำสิ่งนี้:

img {
  float:right;
}
html[lang="he"] img { /* Hebrew. or.. lang="ar" for Arabic etc */
  float:left;
}

การสาธิต


16

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

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

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


12
"เสมอชนะเสมอ" - เว้นแต่! จะมีการใช้สิ่งสำคัญในสไตล์ชีท
James Westgate

6
ฉันใช้ชีวิตภายใต้สมมติฐานที่ว่าผู้คนมีมนุษยธรรมและไม่ใช้สิ่งประหลาดเช่นนี้ =)
issa marie tseng

3
@JamesWestgate จนกว่าจะใช้คนที่มีความสำคัญใน CSS แบบอินไลน์ที่จะแทนที่แทนที่ .... !
Kzqai

11

จุดทั้งหมดของ CSS คือการแยกเนื้อหาจากงานนำเสนอ ดังนั้นในตัวอย่างของคุณคุณกำลังผสมเนื้อหากับงานนำเสนอและนี่อาจ "ถือว่าเป็นอันตราย"


7
ฉันจะจ่ายให้คุณ 5 bucks เพื่อส่ง "Inline CSS Style พิจารณาว่าเป็นอันตราย" ต่อ ACM
BalinKingOfMoria คืนสถานะ CM ใหม่

11

การใช้อินไลน์ CSS นั้นยากกว่าการดูแลรักษามาก

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


3
+1 - ฉันจับใจจริงๆเมื่อนักออกแบบของเราทำเช่นนั้นเพื่อแก้ไขปัญหาอย่างรวดเร็วเพียงเพื่อให้ได้สิ่งที่สอดคล้อง การใช้ CSS ภายนอกนั้นหมายความว่าไม่จำเป็นต้องทำการแทนที่ข้อความขนาดใหญ่เว้นแต่ว่าจะใช้งานกับสไตล์ชีทเดียว ฉันได้รับแม่แบบแผงควบคุมให้ฉันเมื่อวานนี้และใช้เวลา 2 1/2 ชั่วโมงในการค้นหาอินสแตนซ์ที่ไอคอนถูกปรับแต่งด้วยสไตล์แบบอินไลน์ ฉุนผมบอกคุณ .. คลั่ง :)
ทิมโพสต์

1
เมื่อคุณมี 50+ SCSS และองค์ประกอบการตรวจสอบของคุณชี้ไปที่ CSS ที่ถูกบีบอัดเท่านั้นฉันไม่แน่ใจว่าเป็น CSS ที่ชนะในความเรียบง่าย!
Shadoweb

1
@Shadowbob นั้นเป็นแหล่งที่มาของแผนที่ thesassway.com/intermediate/using-source-maps-with-sass
Mike Chamberlain

@ Timim มีเหตุผลว่าทำไมคุณสมบัติ "ตรวจสอบองค์ประกอบ" เกิดขึ้น
Norielle Cruz

9

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

DRY เป็นแนวคิดที่ดีสำหรับรหัสที่เขียนด้วยลายมือ แต่ในรหัสที่สร้างด้วยเครื่องจักรฉันเลือกใช้ "Law of Demeter": "สิ่งที่อยู่ด้วยกันต้องอยู่ด้วยกัน" การจัดการโค้ดที่สร้างแท็กสไตล์ง่ายกว่าการแก้ไขสไตล์โกลบอลเป็นครั้งที่สองในไฟล์ CSS ที่ต่างกันและ "ระยะไกล"

คำตอบสำหรับคำถามของคุณ: ขึ้นอยู่กับ ...


7
ฉันคิดว่านี่เป็นคำตอบที่ถูกต้องจริงๆ มนต์ของ "การแยกความกังวล" เป็นเพียงเกณฑ์เดียว "สถานที่" ยังมีความสำคัญต่อความสะดวกในการบำรุงรักษา ลักษณะสำคัญคือสไตล์นั้นสามารถนำกลับมาใช้ใหม่ได้หรือไม่ หากเป็นเช่นนั้นแผ่นงานจะเข้าท่า เช่นฉันจะไม่สร้างคลาสสำหรับ "float: ใช่" เพียงเพราะสององค์ประกอบใช้ มันขึ้นอยู่กับองค์ประกอบที่มีความหมายเหมือนกัน สไตล์ "สี" มักจะเกี่ยวข้องกับความหมาย (ส่วนหนึ่งของชุดรูปแบบ) และมักจะอยู่ในแผ่นงาน
koriander

5

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

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


4

โค้ดว่าคุณชอบโค้ดอย่างไร แต่ถ้าคุณส่งต่อให้คนอื่นวิธีที่ดีที่สุดคือใช้สิ่งที่คนอื่นทำ มีเหตุผลสำหรับ CSS จากนั้นมีเหตุผลสำหรับการอินไลน์ ฉันใช้ทั้งคู่เพราะมันง่ายกว่าสำหรับฉัน การใช้ CSS นั้นยอดเยี่ยมเมื่อคุณมีการซ้ำซ้อนกันมากมาย อย่างไรก็ตามเมื่อคุณมีองค์ประกอบหลายอย่างที่มีคุณสมบัติแตกต่างกันนั่นจะกลายเป็นปัญหา อินสแตนซ์หนึ่งสำหรับฉันคือเมื่อฉันวางตำแหน่งองค์ประกอบบนหน้า แต่ละองค์ประกอบเป็นคุณสมบัติด้านบนและด้านซ้ายที่แตกต่างกัน ถ้าฉันใส่สิ่งนั้นลงใน CSS ที่จะรบกวนความยุ่งเหยิงของฉันไประหว่างหน้า html และ css ดังนั้น CSS จึงยอดเยี่ยมเมื่อคุณต้องการให้ทุกอย่างมีแบบอักษรสีลักษณะโฮเวอร์เอฟเฟ็กต์และอื่น ๆ แต่เมื่อทุกอย่างมีตำแหน่งที่แตกต่างเพิ่มอินสแตนซ์ CSS สำหรับแต่ละองค์ประกอบอาจเป็นเรื่องที่เจ็บปวดจริงๆ นั่นเป็นเพียงความคิดเห็นของฉัน CSS มีความเกี่ยวข้องอย่างมากในแอปพลิเคชันขนาดใหญ่เมื่อคุณต้องขุดผ่านโค้ด ใช้ปลั๊กอินผู้พัฒนาเว็บ Mozilla และมันจะช่วยคุณค้นหาองค์ประกอบ ID และคลาส



1

การใช้รูปแบบอินไลน์เป็นการละเมิดหลักการแยกความกังวลเนื่องจากคุณผสมมาร์กอัปและสไตล์ในไฟล์ต้นฉบับเดียวกันได้อย่างมีประสิทธิภาพ ในกรณีส่วนใหญ่ละเมิดหลักการ DRY (อย่าทำซ้ำตัวเอง) เนื่องจากมันใช้งานได้กับองค์ประกอบเดียวเท่านั้นในขณะที่คลาสสามารถนำไปใช้กับหลาย ๆ คลาสได้ (และสามารถขยายผ่านความมหัศจรรย์ของกฎ CSS! )

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

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

<div class="header-row">It's a row!</div>

มีความหมายมากกว่า:

<div style="height: 80px; width: 100%;">It's...something?</div>

1

css ในหน้าเป็นสิ่งที่เกิดขึ้นในขณะนี้เนื่องจาก Google ให้คะแนนว่าเป็นการมอบประสบการณ์ผู้ใช้ที่ดีกว่า css ที่โหลดจากไฟล์แยกต่างหาก ทางออกที่เป็นไปได้คือการวาง css ในไฟล์ข้อความโหลดได้ทันทีด้วย php และส่งออกไปยังส่วนหัวของเอกสาร ใน<head>ส่วนรวมถึงสิ่งนี้:

<head> ...

<?php
$codestring = file_get_contents("styles/style1.txt");
echo "<style>" . $codestring . "</style>";
?>

... </head>

ใส่ CSS ที่ต้องการในสไตล์ / style1.txt แล้วมันจะกระจายออกไปใน<head>ส่วนของเอกสารของคุณ ด้วยวิธีนี้คุณจะมี css ในหน้าพร้อมประโยชน์ของการใช้เทมเพลตสไตล์ style1.txt ซึ่งสามารถแชร์ได้ทุกหน้าและทุกหน้าช่วยให้สามารถทำการเปลี่ยนแปลงสไตล์ทั่วทั้งไซต์ผ่านไฟล์เพียงไฟล์เดียว นอกจากนี้วิธีนี้ไม่จำเป็นต้องให้เบราว์เซอร์ร้องขอไฟล์ css แยกจากเซิร์ฟเวอร์ (ซึ่งจะช่วยลดเวลาในการดึง / แสดงผล) เนื่องจากทุกสิ่งจะถูกส่งโดย php

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


ใช่ สิ่งนี้มีความสำคัญอย่างยิ่งในการพยายามลด "เวลาการทาสีครั้งแรก" หาก css ทั้งหมดของคุณอยู่ในไฟล์มันจะเลื่อนการทำงานของ DOM ไปจนผู้ใช้งานดาวน์โหลดสไตล์ชีต การมีสไตล์ที่สำคัญของคุณในโหนด inline <styles> ในส่วนหัวคุณสามารถเริ่มแสดงผล DOM ได้ทันทีและเลื่อนสไตล์ชีตภายนอก เล่นเป็นปัจจัยสำคัญในการเชื่อมต่อ ~ 3G และความเร็วในการรับรู้ +1 สำหรับคำตอบของคุณ
ทางการ

1

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


0

แม้ว่าฉันเห็นด้วยกับคำตอบทั้งหมดที่กล่าวไว้ข้างต้นว่าการเขียน CSS ในไฟล์แยกกันดีกว่าเสมอจากการใช้รหัสการบำรุงรักษาการแยกความกังวลที่ดีขึ้นมีหลายสถานการณ์ที่ผู้คนชอบ CSS แบบอินไลน์ในรหัสการผลิตของพวกเขา -

ไฟล์ CSS ภายนอกทำให้เกิดการเรียกเบราว์เซอร์ HTTP พิเศษหนึ่งครั้งและทำให้เวลาในการตอบสนองเพิ่มเติม หากแทรก CSS แบบอินไลน์แล้วเบราว์เซอร์สามารถเริ่มต้นแยกวิเคราะห์ได้ทันที โดยเฉพาะอย่างยิ่งการโทรผ่าน SSL HTTP นั้นมีค่าใช้จ่ายสูงกว่าและเพิ่มเวลาแฝงเพิ่มเติมให้กับหน้าเว็บ มีเครื่องมือมากมายที่ช่วยในการสร้างหน้า HTML แบบคงที่ (หรือหน้าตัวอย่าง) โดยการแทรกไฟล์ CSS ภายนอกเป็นรหัสแบบอินไลน์ เครื่องมือเหล่านี้ถูกใช้ในเฟส Build and Release ซึ่งสร้างไบนารีการผลิต วิธีนี้เราจะได้รับประโยชน์ทั้งหมดของ CSS ภายนอกและหน้าจะกลายเป็นเร็วขึ้น


3
คุณขาดอะไรไป: latency ปัญหาใหญ่มากจริงๆ: ฝัง CSS หมายถึงคำขอทุกหน้าต้องมี CSS ที่ในขณะที่มิฉะนั้นเบราว์เซอร์สามารถแคชมัน
Andrew Barber

คุณพูดถูก นั่นเป็นเหตุผลที่เราอินไลน์ CSS เมื่อขนาดรหัสมีขนาดเล็กมากจึงไม่ทำให้เกิดค่าใช้จ่ายมากเกินไปกับขนาดหน้า มีบทความที่น่าสนใจเกี่ยวกับ Yahoo! ผู้พัฒนาหน้าPerf.yahoo.com/performance/rules.htmlซึ่งบอกว่าผู้ใช้ 60-80% มาที่ไซต์ของคุณทุกวันด้วยแคชเปล่า ( yuiblog.com/blog/2007/01/04/performance-research-part) -2 ) แน่นอนมันทั้งหมดขึ้นอยู่กับความนิยมของเว็บไซต์ - ยิ่งเว็บไซต์ได้รับความนิยมมากเท่าไหร่โอกาสที่จะมีแคชที่ไม่ว่างก็ยิ่งมากเท่านั้น
Diptendu

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

ทุกวันนี้เว็บเพจที่ทันสมัยจำนวนมากได้รับการออกแบบเป็นแอปพลิเคชั่นหน้าเดียวแบบเต็มหน้าจะโหลดเฉพาะครั้งแรก ครั้งต่อไปหน้าจะเปลี่ยนผ่านการโทร AJAX ดังนั้นแม้ว่าหน้านี้จะมีหลายหน้าก็ตาม CSS ภายนอกจะถูกโหลดเพียงครั้งเดียว
Diptendu

0

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

รายการการปรับปรุงที่ไม่สมบูรณ์เช่นระบบการแสดงผลอาจทำคือ:

  • แทนที่การอ้างอิงรูปภาพด้วยขนาดภาพเป็นวิวพอร์ตของผู้ดู
  • ภาพอินไลน์ที่มองเห็นได้บนครึ่งหน้าบน
  • ตัวแปร CSS แบบอินไลน์
  • โหลดส่วนประกอบเพิ่มเติมล่วงหน้า
  • ลดขนาด HTML และ CSS

0

นอกเหนือจากคำตอบอื่น ๆ แล้วคุณไม่สามารถกำหนดเป้าหมายองค์ประกอบหลอกหรือองค์ประกอบหลอกใน CSS แบบอินไลน์

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