javascript - 防止 < href ="#slider"class ="slider-change"> 跳到顶部

标签 javascript jquery html css

关于这个问题有很多问题,但我还没有找到适合我的解决方案。这是创建一个 slider ,只有 html 和 css

<div class="slider-holder">
    <span id="slider-image-1"></span>
    <span id="slider-image-2"></span>
    <span id="slider-image-3"></span>
    <div class="image-holder">
        <img src="1.jpg" class="slider-image" />
        <img src="2.jpg" class="slider-image" />
        <img src="3.jpg" class="slider-image" />
    </div>
    <div class="button-holder">
        <a href="#slider-image-1" class="slider-change"></a>
        <a href="#slider-image-2" class="slider-change"></a>
        <a href="#slider-image-3" class="slider-change"></a>
    </div>
</div>

CSS:

.slider-holder{
            width: 800px;
            height: 400px;
            background-color: yellow;
            margin-left: auto;
            margin-right: auto;
            margin-top: 0px;
            text-align: center;
            overflow: hidden;
        }

        .image-holder
        {
            width: 2400px;
            background-color: red;
            height: 400px;
            clear: both;
            position: relative;

            -webkit-transition: left 2s;
            -moz-transition: left 2s;
            -o-transition: left 2s;
            transition: left 2s;
        }

        .slider-image
        {
            float: left;
            margin: 0px;
            padding: 0px;
            position: relative;
        }

        #slider-image-1:target ~ .image-holder
        {
            left: 0px;
        }

        #slider-image-2:target ~ .image-holder
        {
            left: -800px;
        }

        #slider-image-3:target ~ .image-holder
        {
            left: -1600px;
        }

        .button-holder
        {
            position: relative;
            top: -20px;
        }

        .slider-change
        {
            display: inline-block;
            height: 10px;
            width: 10px;
            border-radius: 5px;
            background-color: brown;
        }

问题是,如果我使用 preventdefault 或“#!”事件实际上不会发生,因此 slider 不会改变。

我也发现使用

function keepLocation(oldOffset) {
  if (window.pageYOffset!= null){
    st=oldOffset;
  }
  if (document.body.scrollWidth!= null){
    st=oldOffset;
  }
  setTimeout('window.scrollTo(0,st)',10);
}

并添加

<a href="#slider-image-1" onclick="keepLocation(window.pageYOffset);" class="slider-change"></a>
            <a href="#slider-image-2" onclick="keepLocation(window.pageYOffset);" class="slider-change"></a>
            <a href="#slider-image-3" onclick="keepLocation(window.pageYOffset);" class="slider-change"></a>

有效,但有瞬间向上和向后的瞬间,这看起来不太好。

任何人都可以解决链接的任何跳跃或移动页面?

提前致谢

最佳答案

只需在函数中使用 e.preventDevault()

function keepLocation(e) {
  e.preventDefault();
}

关于javascript - 防止 < href ="#slider"class ="slider-change"> 跳到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52861830/

相关文章:

html - 使用 HTML 和 CSS 剪辑图像

javascript - 我可以将 Firefox 中的 javascript 解释器用作 js shell 吗?

javascript - SetHTML 之后立即在 FCKeditor 上 ResetIsDirty -- Javascript 的并发/计时问题

javascript - 使用 mousedown 停止单击事件仅在触发警报时有效

javascript - 使用 JavaScript/AJAX/jQuery 逐行读取同一服务器上的文件?

javascript - 从 div 制作 ahref

javascript - 使用 AngularJS 连接 OData 过滤器的字符串时出现问题

javascript - jQuery 时间选择器和 jQuery 日期对 : How to set end time into 15mins

c# - 用 C# 4.0 编写的 IE BHO 可在 IE 9 中工作,但在 Windows 7 计算机上的 IE10 中无法工作

html - 让背景颜色在 div 上工作