Хотя некоторые из предложенных решений работают для фрагментированных ссылок (= хеш-ссылок) на одной и той же странице (например, ссылка меню, которая прокручивается вниз), я обнаружил, что ни одна из них не работала в текущем Chrome, когда выхотите использовать фрагменты ссылок, приходящие с других страниц .
Поэтому вызов www.mydomain.com/page.html#foo с нуля НЕ сместит вашу цель в текущем Chrome с любым из указанных CSS-решений или JS-решений.
Существует также отчет об ошибке jQuery , описывающий некоторые детали проблемы.
РЕШЕНИЕ
Единственная найденная мною опция, которая действительнов Chrome работает JavaScript, который не вызывается onDomReady, но с задержкой.
// set timeout onDomReady
$(function() {
setTimeout(delayedFragmentTargetOffset, 500);
});
// add scroll offset to fragment target (if there is one)
function delayedFragmentTargetOffset(){
var offset = $(':target').offset();
if(offset){
var scrollto = offset.top - 95; // minus fixed header height
$('html, body').animate({scrollTop:scrollto}, 0);
}
}
РЕЗЮМЕ
Без задержки JS решения, вероятно, будут работать в Firefox, IE,Safari, но не в Chrome.