Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改#锚点的默认起始位置_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 更改#锚点的默认起始位置

Javascript 更改#锚点的默认起始位置,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个带有锚点的URL,它正在正常工作: site.com/item/id#comment-233 打开时,锚定将精确定位在页面顶部 如何改变起点?假设我希望它是从顶部向下的50px 我之所以需要这样做,是因为我在页面顶部有固定的层,因此注释重叠出现在固定标题div后面 以防万一,由于跨浏览器的兼容性,我更喜欢一种解决方案,它不涉及将注释的容器更改为“固定”和“定位顶部”减去标题的高度 假设您的 废话 废话 链接此处 废话 废话 废话 废话 废话 废话 废话 废话 废话 废话 废话 废话 基

我有一个带有锚点的URL,它正在正常工作:

site.com/item/id#comment-233
打开时,锚定将精确定位在页面顶部

如何改变起点?假设我希望它是从顶部向下的
50px

我之所以需要这样做,是因为我在页面顶部有固定的层,因此注释重叠出现在固定标题
div
后面

以防万一,由于跨浏览器的兼容性,我更喜欢一种解决方案,它不涉及将注释的容器更改为“固定”和“定位顶部”减去标题的高度

假设您的

废话
废话
链接此处
废话
废话
废话
废话
废话
废话
废话
废话
废话
废话
废话
废话

基于上述建议,这对我来说是一种享受:

<a name="[my-anchor-name]" class="anchor"></a>

.anchor {
    position:relative;
    top:-30px; /* or whatever value you need */
}

.主播{
位置:相对位置;
顶部:-30px;/*或您需要的任何值*/
}

此代码适用于Firefox、Chrome、IE以及其他浏览器:

<a id="comment-3" class="shifted_anchor">&nbsp;</a>
<div>
    ... comment ...
</div>

关键是
float
属性:我们使用它来避免
造成的额外垂直空间,而这反过来又是跨浏览器兼容性所必需的。

因此,我在这里结合了一些想法,并提出了一个适合我和所有浏览器的方法。空锚似乎不适合webkit浏览器,当然不适合Chrome浏览器。向锚点添加伪元素可以修复此问题,而不会破坏布局

a.anchor { position: relative; top: - $offsetHeight; visibility: hidden; }
a.anchor:before {
  content:"";
  float: left;
  height: 0px;
}
只要用您需要的任何东西替换
$offsetHeight

添加“display:block;”对我来说很有用:

<a name="[my-anchor-name]" class="anchor"></a>

.anchor {
    position:relative;
    top:-50px;
    display: block;
}

.主播{
位置:相对位置;
顶部:-50px;
显示:块;
}
.anchor{
显示:块;
高度:115px;
利润上限:-115px;
可见性:隐藏;
}
内容。。。

开始,它在FF3.6上工作,但在Safari和Chrome上都不工作。@Martin在
中添加了一个,现在它在Chrome、FF和Safari上为Mean工作,就是这样。这个空间解释了所有的混乱。谢谢你@潮湿对我来说,镀铬不起作用
任何东西
对我都有效。@gfeezy我刚刚尝试了我在chrome 25中发布的代码,效果很好……我喜欢类名,但我可能不会使用
&npsp此处。
浮动:左确实是个窍门!但是,不间断的空间不是必需的(至少对于现代浏览器来说),也不应该使用。这个响应非常完美!
a.anchor { position: relative; top: - $offsetHeight; visibility: hidden; }
a.anchor:before {
  content:"";
  float: left;
  height: 0px;
}
<a name="[my-anchor-name]" class="anchor"></a>

.anchor {
    position:relative;
    top:-50px;
    display: block;
}
.anchor{
  display: block;
  height: 115px; <!--same height as header-->
  margin-top: -115px; <!--same height as header-->
  visibility: hidden;
}

<span class="anchor"></span>
<div>content...</div>