2017-03-11 60 views

回答

2

限制可應用於已訪問鏈接的樣式可防止它們以可通過getComputedStyle()查詢的方式影響無關元素的佈局,這種方式不會在沒有祕密計算整個頁面佈局的情況下欺騙鏈接未被訪問,這在性能方面將非常昂貴。這與:visited + span不再適用(甚至在:visited中仍然允許的屬性不一樣)。

考慮這方面的證據的概念,在其中您可以點擊一個鏈接切換模擬其visitedness類的名稱,並瞭解:link:visited之間切換會影響佈局:

var a = document.querySelector('a'), 
 
    p = document.querySelector('p + p'); 
 

 
a.addEventListener('click', function(e) { 
 
    a.className = a.className == 'unvisited' ? 'visited' : 'unvisited'; 
 
    console.log('a is now ' + a.className + '; top pos of following p is now ' + p.getBoundingClientRect().top); 
 
}, false);
a.unvisited { 
 
    font-size: 1em; 
 
} 
 

 
a.visited { 
 
    font-size: 2em; /* A property not normally allowed on :visited */ 
 
}
<p><a class="unvisited" href="#">Toggle visitedness</a> 
 
<p>Another paragraph

+0

謝謝。對於改變其他元素位置的樣式有意義。是否有一個原因'overline''直通''下劃線'陰影''不透明'和其他屬性不影響其他元素也被忽略? – DD3R

+0

@ DD3R:不透明會導致創建可能影響z-index佈局的堆疊上下文。我不知道爲什麼文本裝飾(文字修飾和文字陰影)不在允許的屬性列表中。 – BoltClock