加载默认幻灯片的更简单方法(使用 css :target)

科斯塔

我正在寻找一种更优雅的方式来完成某事。

我在 html 页面上有 5 张幻灯片。每张幻灯片都是一个包含一些内容的 div,以及一个引用上一张和下一张幻灯片的后退和下一张锚标签。幻灯片正常定位,即静态定位。没有特殊定位,但我使用 css 动画来淡入和淡出幻灯片。

这是片段:

div.slide,
div.intro {
  max-width 200px;
  height: 200px;
  margin 1em auto;
  padding 1em;
  text-align left;
  background: yellow;
}

div.slide { display: none; }

div.slide:target ~ div.intro { display: none; }

div.intro:target,
div.slide:target {
  display: block;
  animation: slidein 1s forwards;
}

@keyframes slidein {
  0% { opacity: 0; display: block; }
  1% { opacity: 0; }
  100% { opacity: 1; }
}

div.intro a { margin-left: 2.35em; }
    <div class="slide" id="slide-2">
    <h1>Two</h1>
    <a href="#slide-1">Back</a>
    <a href="#slide-3">Next</a>
    </div>
    <div class="slide" id="slide-3">
    <h1>Three</h1>
    <a href="#slide-2">Back</a>
    <a href="#slide-4">Next</a>
    </div>
    <div class="slide" id="slide-4">
    <h1>Four</h1>
    <a href="#slide-3">Back</a>
    <a href="#slide-5">Next</a>
    </div>
    <div class="slide" id="slide-5">
    <h1>Five</h1>
    <a href="#slide-4">Back</a>
    </div>
    <div class="intro" id="slide-1">
    <h1>One</h1>
    <a href="#slide-2">Next</a>
    </div>

您应该能够单击“下一步”和“返回”并浏览所有幻灯片,而不会显示任何内容都会中断淡入淡出不透明度太差,但重要的是,不要显示内容将页面的高度保持为当前幻灯片的高度。

起初,我对所有幻灯片都进​​行了相同的处理,但存在 URL 问题。如果页面在 URL 中没有 #slide-1 的情况下加载,则会中断。即使没有#slide-1,我也需要 URL 来加载介绍幻灯片。CSS 实现了这一点,但只能使用一般的兄弟选择器,并将介绍幻灯片放在 HTML 的最后,这很糟糕。

有没有办法在不弄乱 HTML 中的顺序的情况下完成同样的事情。

  1. 我想先在 HTML 中放置介绍幻灯片。
  2. 即使 URL 末尾没有 #slide-1,我也希望介绍幻灯片显示,如果有的话。
  3. 没有 JavaScript ;)

想法?

安迪霍夫曼

我有一个纯粹的CSS答案,它满足您的所有标准。

  • 在 中HTML,将ids移动到幻灯片内容上方
  • 继续默认隐藏所有幻灯片
  • intro-slide默认情况下,设置为display: block
  • 如果有任何目标,隐藏intro-slide
  • 使用更具体的内容覆盖上一个要点的规则:
#slide-1:target~.slide-1

完整代码:

.slide {
  max-width: 200px;
  height: 200px;
  margin: 1em auto;
  padding: 1em;
  text-align: left;
  background: yellow;
  display: none;
}

:target~.intro-slide {
  display: none;
}

.intro-slide,
#slide-1:target~.slide-1,
#slide-2:target~.slide-2,
#slide-3:target~.slide-3,
#slide-4:target~.slide-4,
#slide-5:target~.slide-5 {
  display: block;
  animation: slidein 1s forwards;
}

@keyframes slidein {
  0% {
    opacity: 0;
    display: block;
  }
  1% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

div.intro-slide a {
  margin-left: 2.35em;
}
<div id="slide-1"></div>
<div id="slide-2"></div>
<div id="slide-3"></div>
<div id="slide-4"></div>
<div id="slide-5"></div>

<div class="slide slide-1 intro-slide">
  <h1>One</h1>
  <a href="#slide-2">Next</a>
</div>
<div class="slide slide-2">
  <h1>Two</h1>
  <a href="#slide-1">Back</a>
  <a href="#slide-3">Next</a>
</div>
<div class="slide slide-3">
  <h1>Three</h1>
  <a href="#slide-2">Back</a>
  <a href="#slide-4">Next</a>
</div>
<div class="slide slide-4">
  <h1>Four</h1>
  <a href="#slide-3">Back</a>
  <a href="#slide-5">Next</a>
</div>
<div class="slide slide-5">
  <h1>Five</h1>
  <a href="#slide-4">Back</a>
</div>

js小提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

简单的幻灯片仅使用CSS和HTML

来自分类Dev

使用CSS加载页面后延迟幻灯片

来自分类Dev

使用CSS的幻灯片过渡

来自分类Dev

使用angularjs的CSS幻灯片动画

来自分类Dev

使用CSS / HTML移动幻灯片

来自分类Dev

使用Javascript / CSS的内容幻灯片

来自分类Dev

如何使用HTML和CSS制作简单的计时器图像幻灯片

来自分类Dev

使用JavaScript,CSS和HTML制作简单的照片幻灯片

来自分类Dev

使用CSS的下拉菜单:target伪

来自分类Dev

CSS幻灯片过渡

来自分类Dev

居中 CSS 幻灯片

来自分类Dev

使用CSS-HTML的幻灯片仅显示四张幻灯片

来自分类Dev

css:target-焦点

来自分类Dev

CSS-:target〜

来自分类Dev

CSS幻灯片放映(不同的幻灯片时间)

来自分类Dev

在CSS中创建幻灯片菜单

来自分类Dev

CSS过渡幻灯片向右

来自分类Dev

如何创建纯CSS幻灯片?

来自分类Dev

CSS背景幻灯片动画

来自分类Dev

:not(:target)选择器CSS

来自分类Dev

CSS:幻灯片之间的CSS过渡类似于示例

来自分类Dev

纯CSS3幻灯片会重复最后4张幻灯片吗?

来自分类Dev

如何使用jQuery / CSS3创建“幻灯片库面板”?

来自分类Dev

使用CSS一次显示所有Bootstrap旋转木马幻灯片

来自分类Dev

悬停时使用纯CSS3动画幻灯片标题

来自分类Dev

单独使用HTML和CSS为每张幻灯片制作两个图像

来自分类Dev

如何使用CSS /全屏幻灯片获取多个旋转背景封面

来自分类Dev

如何使用php,mysql,css和html制作动态幻灯片?

来自分类Dev

使用jquery和css在Click幻灯片div上向左或向右