我总是忍不住想到 这个网站。 它看起来像一个非常标准的网站; 带有指向不同页面链接的网站。 除了… 整个网站都包含在一个 HTML 文件中,别无他法。
您可能会问,点击导航链接会怎样? 每个链接只是显示和隐藏 HTML 的某些部分。
<section id="home">
<!-- home content goes here -->
</section>
<section id="about">
<!-- about page goes here -->
</section>
每个 <section>
都通过 CSS 隐藏
section { display: none; }
主导航中的每个链接都指向页面上的一个锚点
<a href="#home">Home</a>
<a href="#about">About</a>
而且,一旦您点击一个链接,该特定链接的 <section>
会通过以下方式显示
section:target { display: block; }
看到那个 :target
伪选择器了吗? 这就是魔法! 当然,它已经存在很多年了,但这绝对是一种巧妙的使用方式。 大多数情况下,它用于在点击指向它的锚链接后突出显示页面上的锚点。 这是一种帮助用户了解他们刚刚跳转到哪里方便的方式。
无论如何,像这样使用 :target
非常聪明! 当您四处点击时,它最终看起来就像一个普通的网站。
我太喜欢了。
我喜欢这个想法,它几乎完美,但是…
延迟加载的支持度并不高
https://caniuse.cn/loading-lazy-attr
Safari 会一次性加载所有内容,尤其是在移动设备上,你说对吗?
恕我直言,这算不上什么。
如果您想看到最强大的单个 HTML 文件,请查看 tiddlywiki.com。
但是有很多 JavaScript。
又是那种“为什么我他妈的没想到这个”之类的东西。
很聪明。
这正是我们过去构建 Flash 网站的方式。 完整地包含哈希标签等内容。 会有什么问题呢?!
搜索引擎会索引 display:none; 部分吗? 它们不会忽略它吗?
不,据我所知,搜索引擎索引机器人不会运行 CSS,它们查看源代码。
我不确定这是否完全正确。 当然,机器人会查看源代码。 但是它们知道隐藏内容是什么。 它们运行 JavaScript。 它们非常聪明,如果您正在做一些很少有其他网站会做的事情,我认为担心为数十亿个网站设计的机器人可能无法在异常值上正常工作是合理的。
不要使用
display: none
,而是隐藏包含在内的部分 (https://www.scottohara.me/blog/2017/04/14/inclusively-hidden.html) 也可以解决网络爬虫可能遇到的任何问题。非常有意思! 不幸的是,除非页面标题也更新,否则浏览器(或后退按钮)历史记录很快就会变得完全不可用。
后退按钮和历史记录在我这里(Firefox)使用这篇文章中的示例网站时运行良好。
但是想想不必要的流量。 如果我只想查看一个页面的内容,我却无缘无故地加载了所有内容。 您可能会说,在当今的宽带网络中这无关紧要,但移动用户呢?
您也可以使用 Eleventh SSG 来实现:Solo
我在我自己的网站上使用过类似的技巧:除了一个永久链接页面,几乎整个网站都不使用 JavaScript,但在 JavaScript 由于任何原因无法使用的情况下,有一个纯 CSS 备用方案。
您可以 这里查看它(内容为葡萄牙语)。 可以使用或不使用 JavaScript。 需要点击,但可以正常使用。
这么多年了,我真不敢相信我从未考虑过以这种方式使用
:target
!确实非常有意思。
而且在各平台上都支持
https://caniuse.cn/?search=%3Atarget
我认为您可能会喜欢这个小巧疯狂的项目,它是在 10 个月前创建的。 这是一款仅使用 HTML/CSS 的“像素绘图器”:https://sdp.iglou.eu/
或者是我以前个人网站,它没有使用任何 JS,并大量使用了锚点:https://iglou.eu/
非常有意思的概念! 我认为它可以在适当的情况下替换 JavaScript,用于部分内容或备用内容。 例如,在小屏幕上显示来自博客文章列表或导航的标记项。 这种内容不需要自己的标题和元标签。 在某些情况下,它可能是 Jamstack 架构中完全页面重新加载的良好替代方案。 感谢分享!
是否可以使用 (css) 选择当前选定的链接?
在我看来,这看起来像一个 SPA。 它甚至(实际上!)具有 CSR。
非常酷。
与优秀的 SSG 相结合,单页网站是小型项目文档或开发人员博客的最佳选择。
无需担心客户端 JavaScript。
我在发现 Gregory 的仓库后几天内就创建了 Solo,并以此为目标。
基于 Gregory 绝妙的概念,我构建了一个单文件博客生成器 PHPetite。
https://phpetite.org
(仅供将来阅读这些评论的任何人)
我不想显得老套,但这就是我们过去构建网站的方式。
很有趣。 我在 2002-2003 年(借助基本的 JS)为大学的一个项目做过类似的事情。 我的导师当时告诉我“很有意思,但太奇怪了,无法推广”。
看到标题时,我以为这会是另一个 SPA 教程。
做得好。
我进一步阐述了这个想法,并创建了一个专门用于这种网站的网站。 您可以在以下位置找到它
https://www.zengardenwebsites.com