จะมีการให้ LESS ใช้ตัวเลือกลูกทันที (>) ในผลลัพธ์หรือไม่?
ในสไตล์ของฉันฉันต้องการเขียนสิ่งที่ชอบ:
.panel {
...
> .control {
...
}
}
และมี LESS สร้างสิ่งที่ต้องการ:
.panel > .control { ... }
จะมีการให้ LESS ใช้ตัวเลือกลูกทันที (>) ในผลลัพธ์หรือไม่?
ในสไตล์ของฉันฉันต้องการเขียนสิ่งที่ชอบ:
.panel {
...
> .control {
...
}
}
และมี LESS สร้างสิ่งที่ต้องการ:
.panel > .control { ... }
คำตอบ:
UPDATE
อันที่จริงรหัสในคำถามเดิมใช้ได้ดี คุณสามารถใช้>
ตัวเลือกเด็กได้
พบคำตอบ
.panel {
...
>.control {
...
}
}
สังเกตว่าไม่มีช่องว่างระหว่าง ">" และ "" มิฉะนั้นจะไม่ทำงาน
.panel >.control
มันเห็นว่ามันเป็นตัวเลือกเดียวที่ให้คุณได้รับ
div > p
และdiv>p
. ความสอดคล้องจะใช้ช่องว่างระหว่างตัวเลือกเสมอ (ดู CSS ที่สร้างขึ้น)
วิธีอย่างเป็นทางการ:
.panel {
& > .control {
...
}
}
&
หมายถึงตัวเลือกปัจจุบันเสมอ
ดูhttp://lesscss.org/features/#features-overview-feature-nested-rules
div > p
หรือdiv >p
? &
Combinator เป็นวิธีที่เป็นที่ยอมรับในการทำมันน้อยไม่ความรู้สึกของฉัน คำอธิบายของคุณเป็นไปในทางที่ผิด บางคนเขียน CSS เป็นบรรทัดเดียว ...
ไวยากรณ์ที่ถูกต้องจะตามมาในขณะที่ใช้ "&" จะซ้ำซ้อนที่นี่
.panel{
> .control{
}
}
ตามหลักเกณฑ์น้อยกว่า '&' ใช้เพื่อกำหนดพารามิเตอร์บรรพบุรุษ (แต่ไม่จำเป็นต้องใช้ที่นี่) ในตัวอย่างน้อยนี้ , &: โฉบอยู่เหนือสิ่งสำคัญ: โฉบมิฉะนั้นก็จะส่งผลให้เกิดความผิดพลาดในประโยค อย่างไรก็ตามไม่มีข้อกำหนดทางวากยสัมพันธ์สำหรับการใช้ "&" ที่นี่ มิฉะนั้นการทำรังทั้งหมดจะต้องใช้ '&' เนื่องจากอ้างอิงถึงผู้ปกครองเป็นหลัก
ในกรณีที่คุณต้องการกำหนดเป้าหมายตัวเลือกเพิ่มเติม:
.parent {
>.first-child,
>.second-child,
>.third-child {
...
}
}
นอกจากนี้หากคุณกำหนดเป้าหมายองค์ประกอบลูกแรกเช่นองค์ประกอบแรก<td>
ของ a <tr>
คุณสามารถใช้สิ่งนี้ได้:
tr {
& > td:first-child {font-weight:bold;}
}
ซึ่งจะช่วยลดการประกาศชั้นเรียนเมื่อไม่จำเป็น