วิธีการเขียน:hover
และ:visited
เงื่อนไขสำหรับa:before
?
ฉันพยายามa:before:hover
แต่มันไม่ทำงาน
วิธีการเขียน:hover
และ:visited
เงื่อนไขสำหรับa:before
?
ฉันพยายามa:before:hover
แต่มันไม่ทำงาน
คำตอบ:
ขึ้นอยู่กับสิ่งที่คุณพยายามทำ
หากคุณเพียงต้องการใช้สไตล์กับ:before
องค์ประกอบหลอกเมื่อa
องค์ประกอบตรงกับคลาสหลอกคุณต้องเขียนa:hover:before
หรือa:visited:before
แทน สังเกตุว่าองค์ประกอบหลอกเกิดขึ้นหลังจากคลาสหลอก (และอันที่จริงแล้วในตอนท้ายสุดของตัวเลือกทั้งหมด) โปรดสังเกตว่าพวกเขาเป็นสองสิ่งที่แตกต่างกัน การเรียกพวกเขาทั้ง "pseudo-selectors" จะทำให้คุณสับสนเมื่อคุณพบปัญหาทางไวยากรณ์เช่นปัญหานี้
หากคุณกำลังเขียน CSS3 คุณสามารถแสดงองค์ประกอบหลอกด้วยทวิภาคสองครั้งเพื่อให้ความแตกต่างนี้ชัดเจนยิ่งขึ้น ดังนั้นและa:hover::before
a:visited::before
แต่ถ้าคุณพัฒนาเบราว์เซอร์รุ่นเก่าเช่น IE8 และรุ่นเก่ากว่าคุณสามารถใช้โคลอนเดี่ยวได้ดี
คำสั่งเฉพาะของคลาสหลอกและองค์ประกอบหลอกถูกระบุไว้ในข้อมูลจำเพาะ :
องค์ประกอบหลอกหนึ่งอาจผนวกเข้ากับลำดับสุดท้ายของตัวเลือกง่าย ๆ ในตัวเลือก
ลำดับของตัวเลือกที่เรียบง่ายเป็นห่วงโซ่ของตัวเลือกที่ง่ายที่จะไม่แยกจากกันโดย Combinator มันมักจะเริ่มต้นด้วยตัวเลือกประเภทหรือตัวเลือกสากล ไม่อนุญาตให้ใช้ตัวเลือกชนิดอื่นหรือตัวเลือกสากลในลำดับ
เลือกง่ายเป็นทั้งเลือกชนิดเลือกสากลเลือกแอตทริบิวต์เลือกชั้นเลือก ID หรือหลอกชั้น
คลาสหลอกเป็นตัวเลือกที่ง่าย อย่างไรก็ตามองค์ประกอบหลอกไม่ได้แม้ว่ามันจะคล้ายกับตัวเลือกที่เรียบง่าย
อย่างไรก็ตามสำหรับผู้ใช้แอ็คชันหลอกคลาสเช่น:hover
1หากคุณต้องการให้เอฟเฟกต์นี้ใช้เฉพาะเมื่อผู้ใช้โต้ตอบกับองค์ประกอบหลอกตัวเอง แต่ไม่ใช่a
องค์ประกอบดังนั้นจึงเป็นไปไม่ได้ที่นอกเหนือจากการแก้ปัญหาเลย์เอาท์แบบปิดบังบางอย่าง . ตามที่ระบุโดยข้อความองค์ประกอบหลอก CSS มาตรฐานไม่สามารถมีคลาสหลอกได้ในขณะนี้ ในกรณีนั้นคุณจะต้องนำไปใช้:hover
กับองค์ประกอบลูกที่แท้จริงแทนที่จะเป็นองค์ประกอบปลอม
1 แน่นอนว่าสิ่งนี้ไม่ได้ใช้กับลิงค์หลอกเรียนเช่น:visited
ในคำถามเนื่องจากองค์ประกอบหลอกไม่ได้เชื่อมโยง
text-decoration
เช่น
:after
กับ CSS3 ::after
developer.mozilla.org/en-US/docs/Web/CSS/::after (ซิงเกิ้ล:
ได้รับการสนับสนุนที่ดีกว่า)
เพื่อเปลี่ยนข้อความของลิงค์เมนูบนเม้าส์ (ข้อความภาษาที่แตกต่างกันในการโฮเวอร์) นี่คือ
HTML:
<a align="center" href="#"><span>kannada</span></a>
CSS:
span {
font-size:12px;
}
a {
color:green;
}
a:hover span {
display:none;
}
a:hover:before {
color:red;
font-size:24px;
content:"ಕನ್ನಡ";
}
a:hover::before
ด้วยtext-decoration: underline
ซึ่งทำให้ขีดเส้นใต้เพื่อรับสีแดงของข้อความทดแทน
ลองใช้.card-listing:hover::after
hover
และafter
ใช้::
มันจะไม่ทำงาน
คำตอบของ BoltClock ถูกต้อง สิ่งเดียวที่ฉันต้องการผนวกคือถ้าคุณต้องการเลือกองค์ประกอบหลอกเท่านั้นใส่ในช่วง
ตัวอย่างเช่น:
<li><span data-icon='u'></span> List Element </li>
แทน:
<li> data-icon='u' List Element</li>
วิธีนี้คุณสามารถพูดได้
ul [data-icon]:hover::before {color: #f7f7f7;}
ซึ่งจะเน้นองค์ประกอบหลอกเท่านั้นไม่ใช่องค์ประกอบ li ทั้งหมด
คุณสามารถ จำกัด การกระทำของคุณให้เป็นคลาสเดียวได้โดยใช้วงเล็บเหลี่ยมขวา (">") ดังที่ฉันได้ทำในรหัสนี้:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
span {
font-size:12px;
}
a {
color:green;
}
.test1>a:hover span {
display:none;
}
.test1>a:hover:before {
color:red;
content:"Apple";
}
</style>
</head>
<body>
<div class="test1">
<a href="#"><span>Google</span></a>
</div>
<div class="test2">
<a href="#"><span>Apple</span></a>
</div>
</body>
</html>
หมายเหตุ:โฮเวอร์: ก่อนสวิตช์จะทำงานเฉพาะในคลาส. test1 เท่านั้น