ตัวเลือก CSS“ +” (เครื่องหมายบวก) หมายถึงอะไร?


750

ตัวอย่างเช่น:

p + p {
  /* Some declarations */
}

ฉันไม่รู้ว่า+หมายถึงอะไร ความแตกต่างระหว่างนี้และเพียงแค่การกำหนดรูปแบบสำหรับการpได้โดยไม่ต้อง+ p?


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

คำตอบ:


749

ดูตัวเลือกที่อยู่ติดกันใน W3.org

ในกรณีนี้ตัวเลือกหมายความว่ารูปแบบจะใช้กับย่อหน้าต่อจากย่อหน้าอื่นโดยตรงเท่านั้น

pตัวเลือกธรรมดาจะใช้สไตล์กับทุกย่อหน้าในหน้า


สิ่งนี้จะใช้ได้กับ IE7 ขึ้นไปเท่านั้น ใน IE6 สไตล์จะไม่ถูกนำไปใช้กับองค์ประกอบใด ๆ สิ่งนี้ยังไปสำหรับผู้รวบรวม>ด้วยโดยวิธี

ดูเพิ่มเติมภาพรวมของ Microsoft สำหรับการทำงานร่วมกัน CSS ใน Internet Explorer


ฉันพบว่ามีประโยชน์ที่จะไม่ยุบองค์ประกอบเมื่อซ่อนไว้ ดังนั้นวิธีการที่เหมาะสมมากขึ้นที่จะซ่อนมันคือการใช้แทนvisibility : hidden/visible display : none/blockดูเอกสารอ้างอิงนี้
KFL

6
อะไรจะเป็นความแตกต่างระหว่าง p + p และ p> p
Muhammad Rizwan

7
@MuhammadRizwan p > pหมายถึงการซ้อนกันp, EI ใด ๆpที่อยู่ตรงด้านล่างอีกเช่นp <p><p>This paragraph</p></p>
Banana

203

มันเป็นตัวเลือกพี่น้องที่อยู่ติดกัน

จากบล็อกของ Splash of Style

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

h1+p {color:blue;}

โค้ด CSS ด้านบนจะจัดรูปแบบย่อหน้าแรกหลังจาก (ไม่อยู่ภายใน) ส่วนหัว h1 ใด ๆ เป็นสีน้ำเงิน

h1>pเลือกpองค์ประกอบใด ๆที่เป็นลูก (รุ่นแรก) โดยตรง (ภายใน) ของh1องค์ประกอบ

  • h1>pการแข่งขัน<h1> <p></p> </h1>( <p>ภายใน<h1>)

h1+pจะเลือกpองค์ประกอบแรกที่เป็นพี่น้อง (ที่ระดับเดียวกันของ dom) เป็นh1องค์ประกอบ

  • h1+pการแข่งขัน<h1></h1> <p><p/>( <p>ถัดจาก / หลัง<h1>)

3
ฉันสับสนระหว่างและplus sign greater signถ้าฉันใช้h1>pแทนh1+pมันจะให้ผลลัพธ์เดียวกันหรือไม่ คุณช่วยอธิบายความแตกต่างเล็กน้อยระหว่างพวกเขาได้ไหม
lvarayut

91
ในตัวอย่างของคุณh1>pเลือกpองค์ประกอบใด ๆที่เป็นลูกโดยตรง (รุ่นแรก) ของh1องค์ประกอบ h1+pจะเลือกpองค์ประกอบแรกที่เป็นพี่น้อง (ที่ระดับเดียวกันของ dom) เป็นh1องค์ประกอบ h1>pการแข่งขัน<h1><p><p></h1>, h1+pการแข่งขัน<h1></h1><p><p/>
แมทธิวเถา

1
@MatthewVines คุณควรเพิ่ม h1> p และ h1 + p ในคำตอบของคุณ
MonsterMMORPG

ในตัวอย่างของคุณโดยพื้นฐานแล้วมันจะจับคู่ <p> แรกหลัง <h1> แต่มันจะตรงกับ <p> เดียวกันถ้ามันมาก่อน <h1> หรือไม่ หรือหลังจากเท่านั้น
Vincent

53

+เข้าสู่ระบบวิธีการเลือก "พี่น้องที่อยู่ติดกัน"

ตัวอย่างเช่นสไตล์นี้จะมีผลตั้งแต่วินาที<p>:

p + p {
   font-weight: bold;
} 
<div>
   <p>Paragraph 1</p>
   <p>Paragraph 2</p>
</div>


ตัวอย่าง

ดู JSFiddle นี้แล้วคุณจะเข้าใจ: http://jsfiddle.net/7c05m7tv/ (อีก JSFiddle: http://jsfiddle.net/7c05m7tv/70/ )


สนับสนุนเบราว์เซอร์

ตัวเลือกพี่น้องที่อยู่ติดกันได้รับการสนับสนุนในเบราว์เซอร์ที่ทันสมัยทั้งหมด


เรียนรู้เพิ่มเติม


42

"+" เป็นตัวเลือกพี่น้องที่อยู่ติดกัน มันจะเลือก p ใด ๆ โดยตรงหลังจาก ap (ไม่ใช่เด็กหรือผู้ปกครองแม้ว่าพี่น้อง)


23

+Adjacent Sibling Selectorตัวเลือกที่เรียกว่า

ตัวอย่างเช่นตัวp + pเลือกเลือกpองค์ประกอบทันทีตามpองค์ประกอบ

มันอาจจะคิดว่าเป็นlooking outsideตัวเลือกที่ตรวจสอบองค์ประกอบต่อไปทันที

นี่คือตัวอย่างข้อมูลเพื่อให้ชัดเจนยิ่งขึ้น:

body {
  font-family: Tahoma;
  font-size: 12px;
}
p + p {
  margin-left: 10px;
}
<div>
  <p>Header paragraph</p>
  <p>This is a paragraph</p>
  <p>This is another paragraph</p>
  <p>This is yet another paragraph</p>
  <hr>
  <p>Footer paragraph</p>
</div>

เนื่องจากเราเป็นหนึ่งในหัวข้อเดียวกันจึงควรพูดถึงตัวเลือกตัวเลือกอื่น~ซึ่งก็คือGeneral Sibling Selector

ตัวอย่างเช่นp ~ pเลือกทั้งหมดpที่ตามมาpไม่สำคัญว่าจะอยู่ที่ไหน แต่ทั้งpคู่ควรมีพาเรนต์เดียวกัน

นี่คือลักษณะที่ปรากฏด้วยมาร์กอัปเดียวกัน:

body {
  font-family: Tahoma;
  font-size: 12px;
}
p ~ p {
  margin-left: 10px;
}
<div>
  <p>Header paragraph</p>
  <p>This is a paragraph</p>
  <p>This is another paragraph</p>
  <p>This is yet another paragraph</p>
  <hr>
  <p>Footer paragraph</p>
</div>

ขอให้สังเกตว่ามีการpจับคู่สุดท้ายในตัวอย่างนี้



8

+นำเสนอหนึ่งในตัวเลือกที่สัมพันธ์กัน รายการของตัวเลือกที่เกี่ยวข้องทั้งหมด:

div p- เลือก<p>องค์ประกอบทั้งหมดภายใน<div>องค์ประกอบ

div > p- <p>องค์ประกอบทั้งหมดที่มีการ<div>เลือกพาเรนต์โดยตรง มันทำงานย้อนหลังด้วย ( p < div)

div + p- <p>องค์ประกอบทั้งหมดวางทันทีหลังจาก<div>องค์ประกอบถูกเลือก

div ~ p- <p>องค์ประกอบทั้งหมดที่นำหน้าด้วย<div>องค์ประกอบจะถูกเลือก

ตัวเลือกเพิ่มเติมเกี่ยวกับการตรวจสอบที่นี่


ตัวเลือกสุดท้ายถูกเข้าใจผิด ตาม MDN : combinator พี่น้องทั่วไป (~) แยกตัวเลือกสองตัวและจับคู่องค์ประกอบที่สองก็ต่อเมื่อองค์ประกอบต่อไปนี้เป็นองค์ประกอบแรก (แม้ว่าจะไม่จำเป็นทันที) และทั้งคู่ก็เป็นลูกขององค์ประกอบหลักเดียวกัน
Carles Alcolea

2

มันเลือกย่อหน้าถัดไปและเยื้องจุดเริ่มต้นของย่อหน้าจากด้านซ้ายเช่นเดียวกับที่คุณอาจใน Microsoft Word


2
p+p{
//styling the code
}

p+p{
} simply mean find all the adjacent/sibling paragraphs with respect to first paragraph in DOM body.

    <div>
    <input type="text" placeholder="something">
    <p>This is first paragraph</p>
    <button>Button </button>
    <p> This is second paragraph</p>
    <p>This is third paragraph</p>
    </div>

    Styling part 
    <style type="text/css">
        p+p{
            color: red;
            font-weight: bolder;
        }
    </style>

   It will style all sibling paragraph with red color.

ผลลัพธ์สุดท้ายมีลักษณะเช่นนี้

ป้อนคำอธิบายรูปภาพที่นี่


1

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

 div+ span{
   color: green;
   padding :100px;
}

     <div>The top or first element  </div>
       <span >this is span immediately after div, this will be selected</span>
       <span>This will not be selected</span>

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


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