jquery - 如何使用 jQuery/CSS3 创建 'Slide-in gallery panels'?

标签 jquery css slider html5-canvas panel

<分区>

通常我知道如何开始,有一些教程甚至经验,但在这一点上我什至不知道如何调用它。也许只要告诉我如何正确定义它就可以解决我的问题(-> 根据名称,我可以正确搜索)。

让我们为您提供我刚刚制作的这个快速模型。 mockup

我正在寻找 1:您如何调用它,尤其是 2:我将如何创建这样的东西?

我想创建面板,其中一些面板堆叠在一起,单击每个面板上的“下一步”按钮,您可以将该面板向左(或向右(向后))移动以转到下一个图 block 。假设每个面板都是一个投资组合元素(垂直堆叠),在每个面板(投资组合元素)中,您可以水平滑动来回滑动以在每个图 block 上解释元素的一部分。

每个图 block 的布局由一个带有完整背景图像的图 block (background-size:cover) 和半宽图 block 文本框组成。当然,出于响应原因,框的文本应该使用 HTML 编写,而不是使用 Photoshop“嵌入”到图像中。

我假设这可以用 CSS3 和 jQuery 创建。唯一的问题是:我所有的 Google 搜索都一无所获,或者导致出现我不想要的非 Canvas 导航菜单。

要回答这个问题,要么: 1.定义这个叫法/我可以在谷歌搜索这个 2. 将我链接到一个好的教程/插件 3. 代码这么简单就写出来。

非常感谢大家!

最佳答案

使用所谓的radio hack,这实际上非常简单。您可以使用 仅 html 和 CSS(CSS3 实现平滑过渡),这是非常可取的,因为 jquery 代表了一个很大的 block 供您的客户下载。

基本上是这样的(工作演示在这里:http://codepen.io/anon/pen/jcgxI):

HTML

我们使用单选输入集来确定应显示哪个“选项卡”。 radio 在这里是完美的,因为当一个被选中时,所有其他的都必须被取消选中。因此,请确保整个集合的属性名称相同。

    <input type="radio" name="radio-set" id="radio-1" checked="checked"/>
    <input type="radio" name="radio-set" id="radio-2"/>
    <input type="radio" name="radio-set" id="radio-3"/>
    <input type="radio" name="radio-set" id="radio-4"/>

然后我们将我们的内容真正包裹在任何标签中(结构部分 > 文章似乎很合适)。导航,即使它可以通过单击单选按钮本身来完成,也可以通过单击引用任何输入的标签来完成,通过它们的属性 FOR 设置为它们所引用的 ID。

<section>
    <article id="article-1">
        <h2>article 1</h2>
        <label for="radio-4"></label>
        <label for="radio-2"></label>
    </article>
    <article id="article-2">
        <h2>article 2</h2>
        <label for="radio-1"></label>
        <label for="radio-3"></label>
    </article>
    <article id="article-3">
        <h2>article 3</h2>
        <label for="radio-2"></label>
        <label for="radio-4"></label>
    </article>
    <article id="article-4">
        <h2>article 4</h2>
        <label for="radio-3"></label>
        <label for="radio-1"></label>
    </article>
</section>

CSS

因为我们将使用易于风格化的标签进行导航,所以我们可以隐藏输入本身。

input{ display:none; }

将所有文章并排放置。

article{
    position:absolute;
    width:100vw;
}
article:nth-of-type(1){ left: 0    }
article:nth-of-type(2){ left: 100% }
article:nth-of-type(3){ left: 200% }
article:nth-of-type(4){ left: 300% }

我在标签中添加了“箭头”(只是一些可以点击的东西,在实际设计中,我会将这些字符切换为字体图标)。

label:first-of-type::before{content: "<"}
label:last-of-type::before {content: ">"}

最后,我们使用 css 选择器“~”,意思是“(及其子元素)之后的任何同级元素”。这样,我们就说“在第 N 个输入检查后,整个部分滑动到相应的位置”。

input[id$="-1"]:checked ~ section{ transform: translateX(0)     }
input[id$="-2"]:checked ~ section{ transform: translateX(-100%) }
input[id$="-3"]:checked ~ section{ transform: translateX(-200%) }
input[id$="-4"]:checked ~ section{ transform: translateX(-300%) }

正是因为我们使用了这个选择器,所以我们的输入必须在滑动标签(此处为“section”)之外和之前,这样它们才能成为移动标签的 sibling (或其 parent 的 sibling )。

并且因为我们想观察移动的部分,所以我们添加了一个过渡属性:

section{ transition: all 1s; }

如果您将整个 HTML 包装到另一个标签中(以防止选择器“~”的影响传播到其他部分),您可以为其他 slider 使用相同的 HTML 结构,而无需编写任何额外的 CSS!

这里有一个完整的教程和一个漂亮的工作演示(对于垂直版本,但别担心,它与水平版本非常相似):http://tympanus.net/codrops/2012/06/12/css-only-responsive-layout-with-smooth-transitions/

PS:在 CSS 中,不要忘记为转换和转换添加所有供应商前缀。始终检查 w3schools.com(编辑:永远不要相信 w3schools,但请在线检查其他地方!)以了解需要哪些前缀。示例:

-webkit-transition: all 1s;
transition: all 1s;

关于jquery - 如何使用 jQuery/CSS3 创建 'Slide-in gallery panels'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21932982/

相关文章:

javascript - 如何使用 javascript 访问数组中的类并设置它们的样式

html - 基础 - 垂直居中对齐

css - IE9 之前的背景大小

javascript - 带有 AngularJS 的 jQuery slider

javascript - 使用 jquery 或 JavaScript 在不同页面上触发事件

javascript - 将 jQuery Ajax 请求的结果设置为全局变量

Javascript 忽略 if 语句

javascript - mousemove parallax 仅轻微移动而不是鼠标位置

JavaScript:替代 JQuery 的(双)Slider 控件?

javascript - 由于 diapo slider ,主 slider 不工作