【问题标题】:Hide portion of element offscreen and push & reveal on click在屏幕外隐藏部分元素并在点击时推送和显示
【发布时间】:2015-10-06 21:02:13
【问题描述】:

我正在构建一个响应式页面,当在移动设备上查看时,它包含一些流行的行为。

我有一个包含文本和链接的元素。文本部分需要覆盖 100% 的视口宽度,当单击/点击链接时,应将文本内容向左推并显示链接。

小提琴:http://jsfiddle.net/Flignats/0n0fwm20/

HTML:

<div id="container">
    <div id="block-one">
        I'm a bunch of informational text.
    </div>
    <div id="block-two">
        <a href="#">I'm a link!</a>
    </div>
</div>

CSS:

#container {
    width: 100%;
    height: 100px;
}

#block-one {
    float: left;
    width: 75%;
    height: 100px;
    background-color: #626366;
}
#block-two {
    float: left;
    width: 25%;
    height: 100px;
    background-color: #969696;
}
    #block-two a {
        color: blue;
    }

我怎样才能让第一块跨越屏幕的整个宽度,第二块隐藏在屏幕之外,并且在点击时,将第二块动画(边距?)第二块推到左侧的视图中?

如果我错过了一个明确的现场示例,我深表歉意,大多数其他问题都比较复杂。

我不希望构建 jquery 移动页面,尽管推送和显示面板会完成此操作。如果 nganimate 优于 javascript,我也会使用 Angular。

【问题讨论】:

    标签: javascript jquery angularjs mobile


    【解决方案1】:

    这里是纯 css 解决方案:http://jsfiddle.net/3wcfggmf/

    我使用了 labelcheckbox:checked 的技巧来识别元素是否被点击。

    input:checked + #block-one {
      width: 75%;
    }
    

    如果我没有正确理解你,请告诉我,我会为你修改这个 PURE css 解决方案:)

    【讨论】:

    • 非常优雅的解决方案!我对 OP 的问题的理解不同,很想知道谁做对了 :)
    • 我希望我 :D 我是松鼠的声誉 :)
    • +1 仅使用 CSS!这几乎是我想要的,但你的例子帮助我实现了我所需要的。从您的代码中,我保持宽度@ 100% 并转换左边距:-25%。不幸的是,我无法使用您的确切示例,因为我需要在信息区域中包含多个元素,并且将它们嵌套在标签中并不是最优雅的。相反,我回到了 jquery 并在这里更新了我的小提琴:jsfiddle.net/Flignats/0n0fwm20/27
    【解决方案2】:

    我在这里用一个工作示例叉了你的小提琴:http://jsfiddle.net/90gm224q/

    为你添加了 CSS:

    #container * { transition: width .4s; }
    #container.clicked #block-one { width:25%; }
    #container.clicked #block-two { width:75%; }
    

    JS:

    var container = document.getElementById('container'),
        link = document.getElementById('block-two').getElementsByTagName('a')[0];
    
    link.onclick = function() {
        container.className = 'clicked';
        return false;
    }
    

    假设我正确理解了您的问题,您可以使用 CSS 宽度值来达到您想要的效果。

    【讨论】:

    • 干得好!非常接近,我可能不应该添加链接,因为它有点令人困惑。该链接不需要切换,只需显示即可。
    【解决方案3】:

    您可以通过 CSS 转换JavaScript 类切换 来完成此操作。

    演示 - http://jsfiddle.net/Leh5t9t6/

    在我的演示中,单击#block-one 会切换一个触发 CSS 转换的类。我在演示中包含了一个纯 JavaScript 和 jQuery 版本(你提到你不想使用 jQuery)。

    我还稍微编辑了样式以适应屏幕外链接。

    纯 Javascript

     var element = document.getElementById('block-one');
     element.addEventListener('click', function () {
       this.classList.toggle('reveal');
     }, false);
    

    jQuery

    $('#block-one').on('click', function(){
        $(this).toggleClass('reveal');
    });
    

    【讨论】:

    • 宾果游戏!我带着班级切换去了。不幸的是,我在 Rafal Lesniak 之后看到了您的回答,这帮助我找到了与您的解决方案更相似的解决方案。
    • @Flignats - 没问题,如果它看起来是一个不错的答案,我们将不胜感激;)
    • 我得回来投票了,我的声望还没有达到要求的数量:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多