互动页面教程(持续更新)

目录

小朋友们你们好啊,我是甲骨文,Leon 被我处决了,荷修被我赶走了,整个寄呕吸蒽已经是我的天下了,你们准备受死吧啊哈哈哈哈哈哈哈哈哈哈😈😈😈。

上面的是一个很基础的选项按钮,我们可以在这之上制作出 这样 的效果1

毫无疑问的是,这里运用了 Wikidot 的 HTML 模块。

[[html]]
[[/html]]

HTML 是一种 超文本标记语言 ,在网页制作中经常用到。当然,这里没必要展开叙述,只要了解一下就好。

现在我们要插入一个 HTML 模块:

与 Wikidot 一样,HTML 也拥有 加粗倾斜删除线下划线

相应的,HTML 也拥有标题、分割线等内容,碍于篇幅,此处不做演示。

本文一开始的按钮选项是怎样实现的呢?首先我们需要一个按钮。

咦,为什么这个按钮看上去这么 【原始】?

这是没有 样式表 导致的。

那什么是样式表呢?我们在 Wikidot 中使用的版式就是样式表。

啊哈,就像页面本身的内容一样了,并没那么突兀。

接下来就要为其添加功能了。

不出意外的话,浏览器弹出了一个提示,内容为【弹出一段文字】,对吧?

那么怎样生成一段新的文字呢?

现在可以在页面中生成新的文字了。

如果希望按钮在点击后消失,该怎样做呢?

还不错。那么现在可以试着制作一个类似本文开头的示例的选项按钮了。

到现在,每次选择只能生成一段文字,那么能不能多生成几段呢?当然可以!只需要创建一个数组就好。

现在我们成功地生成了多段文字,但新的问题也接踵而至:生成的文字被遮挡住了一部分

事实上,这主要是由于 Wikidot 的 HTML 模块本质上是在原有的页面中嵌入了一个新页面,而不是直接加入原有的页面,因此,它的高度会严重影响其内容的显示效果。

修复的办法也很简单粗暴:设置 HTML 模块的最小高度

如果想要文字以动画形式显示,则可以为其添加 CSS 样式。


在了解了上文的内容后,我们就可以开始更进一步的学习了。

如你所见,如果选择【但是,我拒绝!】,就会进入 循环 ,直到选择【好】。这种效果在循环类型的作品中还算常见,例如 港口上的天空 就运用了它。


一个只能做选择题的互动页面是无聊的,因而我们要加入一些更有 代入感 的代码。

把“我爱学习”打在公屏上:

这里我们做了一件很有趣的事情:获取读者输入的内容 ,很多互动页面的【密钥】都是以这种方式实现的。


某些情况下,我们希望页面能够记录读者的行为,例如某个按钮点击过几次、某个输入框输入过什么,这时候就可以运用 LocalStorage 实现 本地存储

LocalStorage 的结构像这样:

名字 Leon
年龄 1145

我们可以随时从浏览器中调用存储的数据。

我们可以点击几下按钮,接着刷新页面,或者退出并重新打开页面,这时的文字依然被保留。

如果我们希望删除本地存储数据该怎么办?


如果我们想写一篇关于超形上学实体的文档,那么 Meta 就是增加逼格的不可或缺的一环。以 SCP 基金会的【锥形长矛】为例,倘若我们既希望加入它的戏份,又觉得单纯的文字描写没什么代入感,那么就可以操纵评分利用 HTML 模块制作一个 虚假的评分模块

可以看见,当重复评分时,会做出提示;当 down 时,页面会被自动删除并显示空页面提示,除非取消评分。

最重要的是,这会被记录,即便刷新页面也不会消失 ,直到点击空页面提示中的【点击此处创建页面】,此处才会被重置。

在页面中使用这行代码来加入此功能:

[[include :goc-sandbox-cn:rate]]

当然,我们也可以让评分模块置于右侧,只需要这样:

[[include :goc-sandbox-cn:rate
| right=0
]]

接下来我将演示如何从头开始制作一个伪评分模块。

当然了,只能远观而不能亵玩,因为我们还没有为其绑定点击事件。

接下来我们为其绑定点击事件。

一般来说,大家普遍习惯将评分模块置于右侧,那么该怎样修改呢?

现在的伪评分模块会在每次刷新后重置,那么能不能记住读者的评分呢?当然可以,只需要运用前文提到的 LocalStorage 就好。

其后的内容就可以由各位自行发挥了,相信大家可以搞出很不错的创意来。


如果不做 Meta 页面,互动代码就毫无作用了吗?当然不会,接下来我将演示一个可以用在很多地方的动态的类聊天记录内容:

在页面中使用如下代码以加入此功能(不完整版):

[[include :goc-sandbox-cn:chat-box
| chatBoxName=标题
| chatHeadA=http://scp-wiki.wikidot.com/local--files/art:goc-logos/High-Command.png
| chatNameA=第一条消息的发送者的昵称
| chatTextA=出现的第一条消息的文字内容。
| ButtonA=选项 A
| ButtonB=选项 B
| buttonHeadA=http://goc-sandbox-cn.wikidot.com/local--files/code-help/xiu.png
| buttonNameA=选项 A 中所使用的昵称
| buttonTextA=选择选项 A 后发送的消息中的文字内容
| chatTimeA=1000
| chatHeadB=http://scp-wiki.wikidot.com/local--files/art:goc-logos/High-Command.png
| chatNameB=选项 A 中对方所使用的昵称
| chatTextB=选择选项 A 后对方回复的消息中的文字内容
| buttonHeadB=http://goc-sandbox-cn.wikidot.com/local--files/code-help/xiu.png
| buttonNameB=选项 B 中所使用的昵称
| buttonTextB=选择选项 B 后发送的消息中的文字内容
| chatTimeB=1000
| chatHeadC=http://scp-wiki.wikidot.com/local--files/art:goc-logos/High-Command.png
| chatNameC=选项 B 中对方所使用的昵称
| chatTextC=选择选项 B 后对方回复的消息中的文字内容
]]

其中:

  • chatBoxName: 设置标题。
  • chatHeadA: 设置第一条消息的发送者的头像的 URL 。
  • chatNameA: 设置第一条消息的发送者的昵称。
  • chatTextA: 设置出现的第一条消息的文字内容。
  • ButtonA: 设置选项 A 的文本。
  • ButtonB: 设置选项 B 的文本。
  • buttonHeadA: 设置选项 A 中所使用的头像的 URL 。
  • buttonNameA: 设置选项 A 中所使用的昵称。
  • buttonTextA: 设置选择选项 A 后发送的消息中的文字内容。
  • chatTimeA: 设置选择选项 A 后对方回复前的等待时间。
  • chatHeadB: 设置选项 A 中对方所使用的头像的 URL 。
  • chatNameB: 设置选项 A 中对方所使用的昵称
  • chatTextB: 设置选择选项 A 后对方回复的消息中的文字内容
  • buttonHeadB: 设置选项 B 中所使用的头像的 URL 。
  • buttonNameB: 设置选项 B 中所使用的昵称。
  • buttonTextB: 设置选择选项 B 后发送的消息中的文字内容。
  • chatTimeB: 设置选择选项 B 后对方回复前的等待时间。
  • chatHeadC: 设置选项 B 中对方所使用的头像的 URL 。
  • chatNameC: 设置选项 B 中对方所使用的昵称
  • chatTextC: 设置选择选项 B 后对方回复的消息中的文字内容

如你所见的,该组件 必须且最多 设置两个选项,同时 必须且最多 为每个选项设置一条发出消息和一条回复消息。事实上,受制于 Wikidot 的特性,我只能将组件做到这样的程度。

如果想要一个高度自定义的版本,不妨看看该功能是如何实现的。

可悲的事实是:它太长了,我没办法详细地解释每一条的作用,除非大家愿意把网页三件套3都粗略学一遍。

值得一提的是,我很乐意像前文的示例一样,从头开始复刻一个简单的版本。

先从聊天室的嵌套结构开始吧:

这是类聊天记录最基本的嵌套结构,但目前还没有为其添加样式,因此看不出任何效果:

现在我们开始编写样式表吧,第一步就是为 div 添加背景与边框:

现在它看上去很扁,这是由于我们还没有设定其宽高,现在我们设置一下看看:

看上去还是很奇怪……这是由于我们没有正确设置 边距定位 ,那么现在设置一下吧:

这下看上去正常多了,接下来就开始设置圆角和阴影,让其更加立体吧:

现在我们开始填充它的内容,如顶栏内容、消息与选项按钮:

有了前面的经验,我们知道这依旧是样式表的问题,所以接下来继续编写样式表:

现在我们加入【发出的消息】和【提示消息】:

终于,我们可以开始步入正题——选项功能了:

至于多条消息、多级对话,也都分别在前文中涉及过,其大体原理是一致的,感兴趣的话可以自行尝试,此处不做演示。

最后,让我们为消息设置一个弹出动画:

以上就是对动态类聊天记录功能的实现。

当然了,我这里也制作了静态版,使用方法如下:

静态版的消息数量没有限制,但出于方便考虑,此处仅设置三条消息以作演示。

希望大家可以发挥出更多更好的创意来。

除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License