Tắt thay đổi màu của thẻ liên kết khi được truy cập


93

Tôi phải vô hiệu hóa sự thay đổi màu sắc của thẻ liên kết khi được truy cập. Tôi đã làm điều này:

a:visited{ color: gray }

(Liên kết có màu xám trước khi được truy cập.) Nhưng đây là cách mà tôi nói rõ ràng về màu sau khi liên kết được truy cập, đây lại là một sự thay đổi màu sắc.

Làm cách nào để vô hiệu hóa sự thay đổi màu sắc của thẻ liên kết khi được truy cập mà không thực hiện bất kỳ thay đổi màu rõ ràng nào?

Câu trả lời:


105

Bạn không thể. Bạn chỉ có thể tạo kiểu cho trạng thái đã thăm.

Đối với những người khác tìm thấy điều này, hãy đảm bảo rằng bạn có chúng theo đúng thứ tự:

a {color:#FF0000;}         /* Unvisited link  */
a:visited {color:#00FF00;} /* Visited link    */
a:hover {color:#FF00FF;}   /* Mouse over link */
a:active {color:#0000FF;}  /* Selected link   */

4
Để được thực sự hậu môn về nó, không nên aa:link?
nikc.org

1
Tôi đoán vậy, mặc dù tôi hiếm khi làm điều đó.
Rich Bradshaw,

2
@ nikc.org không hậu môn ở tất cả, a:linkakhông giống nhau. Một anchor không nhất thiết phải là một liên kết. Nó thường chỉ thay đổi màu khi nó chứa một liên kết.
gỉ

203

Nếu bạn chỉ muốn màu neo giữ nguyên như phần tử mẹ của mỏ neo, bạn có thể tận dụng kế thừa:

a, a:visited, a:hover, a:active {
  color: inherit;
}

Lưu ý rằng không cần lặp lại quy tắc cho mỗi bộ chọn; chỉ sử dụng danh sách các bộ chọn được phân tách bằng dấu phẩy (thứ tự quan trọng đối với các phần tử giả neo). Ngoài ra, bạn có thể áp dụng các bộ chọn giả cho một lớp nếu bạn muốn vô hiệu hóa có chọn lọc các màu neo đặc biệt:

.special-link, .special-link:visited, .special-link:hover, .special-link:active {
  color: inherit;
}

Câu hỏi của bạn chỉ hỏi về trạng thái đã thăm, nhưng tôi cho rằng bạn muốn nói đến tất cả các trạng thái. Bạn có thể xóa các bộ chọn khác nếu bạn muốn cho phép thay đổi màu trên tất cả trừ những người đã truy cập.


Điều này làm việc tuyệt vời, cảm ơn! Một lưu ý đối với những người khác, bạn có thể phải thêm! Important vào thẻ màu để nó sử dụng đúng cách tùy thuộc vào nội dung khác trong trang web của bạn: color: inherit! Important;
Mmm,

3
Trong Chrome, điều này chỉ hiển thị văn bản liên kết bằng màu đen.
RajV

4
Có cách nào để có a:linkmàu liên kết mặc định (thường là màu xanh lam) có tính a:visitedkế thừa từ màu đó mà không cần mã hóa cứng "blue" ở bất cứ đâu không?
gỉ

13

Để :hoverghi đè :visited, và để đảm bảo :visitedgiống với màu ban đầu, :hoverphải đến sau :visited.

Vì vậy, nếu bạn muốn vô hiệu hóa sự thay đổi màu sắc, a:visitedphải đến trước a:hover. Như thế này:

a { color: gray; }
a:visited { color: orange; }
a:hover { color: red; }

Để tắt :visitedthay đổi, bạn sẽ tạo kiểu cho nó bằng lớp không giả:

a, a:visited { color: gray; }
a:hover { color: red; }

2
Tôi đang nhìn điều này sai hay bạn đang làm ngược lại hoàn toàn với những gì được nói trong câu trích dẫn? Theo W3Schools, đó là 1) a:link, a:visited2) a:hover3)a:active
Max Truxa,

0

Xóa bộ chọn hoặc đặt nó thành màu giống như văn bản của bạn xuất hiện bình thường.


0

Nếu bạn sử dụng một số bộ xử lý trước như SASS, bạn có thể sử dụng @extendtính năng:

a:visited {
  @extend a;
}

Kết quả là bạn sẽ thấy a:visitedbộ chọn được thêm tự động cho mọi kiểu với abộ chọn, vì vậy hãy cẩn thận với nó, vì bảng kiểu của bạn có thể tăng kích thước lên rất nhiều.

Như một sự thỏa hiệp, bạn chỉ có thể thêm @extend vào những khối mà bạn thực sự cần.


-1

Bạn có thể giải quyết vấn đề này bằng cách gọi a:linka:visitedchọn bộ chọn cùng nhau. Và làm theo nó với a:hoverbộ chọn.

a:link, a:visited
{color: gray;}
a:hover
{color: skyblue;}

-1

Tôi nghĩ nếu tôi đặt màu cho a:visitednó thì không tốt: bạn phải biết màu mặc định của thẻ avà mỗi lần đồng bộ hóa nó với a:visited.

Tôi không muốn biết về màu mặc định (nó có thể được đặt trong common.cssứng dụng của bạn hoặc bạn có thể sử dụng kiểu bên ngoài).

Tôi nghĩ đó là giải pháp tốt:

HTML:

<body>
    <a class="absolute">Test of URL</a>
    <a class="unvisited absolute" target="_blank" href="google.ru">Test of URL</a>
</body>

CSS:

.absolute{
    position: absolute;
}
a.unvisited, a.unvisited:visited, a.unvisited:active{
    text-decoration: none;
    color: transparent;
}

Ai đặt cho tôi trừ, bạn có thể viết tại sao bạn làm điều đó? Tất nhiên bạn có thể sử dụng các màu của thẻ A. Nhưng tôi bằng văn bản nếu bạn đang sử dụng màu sắc mặc định Brower của
Smagin Alexey

-2
a {
    color: orange !important;
}

!importantcó tác dụng là không thể ghi đè thuộc tính được đề cập trừ khi một thuộc tính khác !importantđược sử dụng. Nó thường được coi là thực hành xấu để sử dụng !importanttrừ khi thực sự cần thiết; tuy nhiên, tôi không thể nghĩ ra cách nào khác để 'vô hiệu hóa' chỉ :visitedbằng CSS.


-8

Sử dụng:

a:visited {
    text-decoration: none;
}

Nhưng nó sẽ chỉ ảnh hưởng đến các liên kết chưa được nhấp vào.


3
Câu hỏi hỏi về màu sắc, không phải trang trí văn bản.
Bryan Green
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.