我在浏览这个网站https://amaioswim.com/ 我注意到当点击左侧的导航时,网址会立即改变。
他们还使用“淡出”和“淡入”窗帘,使页面之间的过渡无缝。
我想知道你会采用什么样的方法来实现这一目标。
我知道JS你可以更改网址,但只有主题标签网址...对吗? 或者是因为他们有一个超级延迟的超快速服务器?
你认为他们在同一个dvi容器中加载ajax-ly吗?
由于
答案 0 :(得分:2)
这与历史API没什么关系。 (他们使用该API来更新显示的URL,但这是网站工作方式的一个小细节;它本身不会产生这种行为。)
此特定网站正在运行客户端框架。 (我在缩小的代码中没有看到任何关于哪一个的明显线索。)
站点内的链接作为AJAX请求处理。他们使用相同的端点进行新页面加载和XHR调用,并检查X-Requested-With
标头以确定是否发送完整的服务器呈现的HTML文件(包括完整站点的框架)或只是该特定页面的内容(将在已加载的站点中嵌入客户端。)
作为证据:这将返回完整网站(如用户首次访问该网址时):
curl 'https://amaioswim.com/about'
这只返回“about”内容(如用户在加载网站后点击“about”链接):
curl 'https://amaioswim.com/about' -H 'X-Requested-With: XMLHttpRequest'
(您还可以在浏览网站时通过浏览器控制台中的“网络”面板查看此内容。)
加载单个页面的内容当然比加载整个页面HTML(及其CSS和JS)快得多,并允许您在AJAX调用过程中添加交叉渐变和动画等光泽效果
答案 1 :(得分:1)
几年以来,您可以使用html5历史记录api:
https://css-tricks.com/using-the-html5-history-api/
它将允许您非常自由地操纵URL。 例如,当您滚动到新部分时,您可以将该部分放在浏览器URL的末尾。
答案 2 :(得分:1)