การใช้ CSS วิธีเปลี่ยนเฉพาะคอลัมน์ที่ 2 ของตาราง


126

การใช้ css เท่านั้นฉันจะแทนที่ css ของคอลัมน์ที่ 2 ของตารางได้อย่างไร

ฉันสามารถเข้าถึงคอลัมน์ทั้งหมดโดยใช้:

.countTable table table td

ฉันไม่สามารถเข้าไปที่ html ในหน้านี้เพื่อแก้ไขได้เนื่องจากไม่ใช่ไซต์ของฉัน

ขอบคุณ

css 

คำตอบ:


239

คุณสามารถใช้:nth-childคลาสหลอกได้ดังนี้:

.countTable table table td:nth-child(2)

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


สิ่งนี้จะให้เฉพาะเซลล์ที่สองในแต่ละตารางไม่ใช่เซลล์ที่สองในแต่ละแถว คุณต้องการตารางตาราง. countTable tr td: nth-child (2)
Deeksy

3
@Deeksy - ไม่ถูกต้องไม่สนใจว่าตัวเลือกคืออะไร nth-childจะถูกนำไปใช้หลังจากค้นหาองค์ประกอบแล้วและจะnthเปรียบเทียบกับองค์ประกอบใดก็ตามที่มีไม่ว่าจะอยู่ในตัวเลือกหรือไม่ก็ตาม คุณสามารถดูการทำงานนี้ได้ที่นี่: jsfiddle.net/JQQPz
Nick

วิธีการเปลี่ยนเฉพาะ css ขององค์ประกอบภายใน td: nth-child (2) ชอบ <a> แท็ก. จะเป็น td a: nth-child (2) {} ไหม
Ivo San

1
@ ivory-santos เพียงเพิ่มส่วนaท้ายเช่นtd:nth-child(2) aลิงก์รูปแบบที่อยู่ใต้องค์ประกอบนั้น
Nick Craver

ทำไมคุณถึงมีตารางสองครั้ง (ไม่เหมือนคำตอบอื่น ๆ ด้านล่าง)
UlFie

26

ลองสิ่งนี้:

.countTable table tr td:first-child + td

คุณยังสามารถย้ำเพื่อจัดรูปแบบคอลัมน์อื่น ๆ ได้:

.countTable table tr td:first-child + td + td {...} /* third column */
.countTable table tr td:first-child + td + td + td {...} /* fourth column */
.countTable table tr td:first-child + td + td + td +td {...} /* fifth column */

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

18

หากต้องการเปลี่ยนเฉพาะคอลัมน์ที่สองของตารางให้ใช้สิ่งต่อไปนี้:

กรณีทั่วไป:

table td + td{  /* this will go to the 2nd column of a table directly */

background:red

}

กรณีของคุณ:

.countTable table table td + td{ 

background: red

}

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


การปรับแต่งเพียงแค่เลือกคอลัมน์แรกคืออะไร? การใช้ตาราง td {... } จะเลือกเซลล์ทั้งหมดในคอลัมน์อื่นด้วย
j4v1

1
@ j4v1 table td {background: red;} // คอลัมน์แรกจะมีพื้นหลังสีแดงตาราง td + td {background: blue;} // ส่วนที่เหลือจะมีสีน้ำเงิน
Abzoozy

-2

คุณสามารถกำหนดคลาสสำหรับแต่ละเซลล์ได้ในคอลัมน์ที่สอง

<table>
<tr><td>Column 1</td><td class="col2">Col 2</td></tr>
<tr><td>Column 1</td><td class="col2">Col 2</td></tr>
<tr><td>Column 1</td><td class="col2">Col 2</td></tr>
<tr><td>Column 1</td><td class="col2">Col 2</td></tr>
</table>

ฉันไม่สามารถใช้สิ่งนี้ได้ อย่างที่ฉันพูดนี่ไม่ใช่เพจของฉันดังนั้นฉันจึงไม่สามารถเปลี่ยน html ได้

2
@Duniyadnd นี่ไม่ใช่แนวทางที่ดีเมื่อเทียบกับวิธีการใช้ตัวเลือกที่มีอยู่
น.

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