1 回答
TA贡献1900条经验 获得超5个赞
我想不出任何纯 CSS 方法来做到这一点,但可以使用一些 JavaScript 轻松完成,检查哈希值是否为空,然后在有值时显示和隐藏#home它。
window.onhashchange = checkHash;
checkHash();
function checkHash() {
var home = document.getElementById('home');
//Check if the hash is empty
if (window.location.hash.substring(1) == '') {
home.style.display = 'block';
} else {
home.style.display = 'none';
}
}
.section {
display: none;
}
.section:target {
display: block !important;
}
<div id="home" class="section">
<a href="#content">Content</a>
<a href="#somthingElse">Somthing Else</a>
<h3>Home</h3>
</div>
<div id="content" class="section">
<a href="#home">Home</a>
<h3>Content</h3>
</div>
<div id="somthingElse" class="section">
<a href="#home">Home</a>
<h3>Somthing Else</h3>
</div>
褪色
我用的position: absolute
是这样它们会堆叠在一起。z-index: -1
将使所有其余部分保持清晰,以阻止指针事件重叠。opacity: 0
显然是用于淡入淡出。
我更改了 JS 脚本以简化 CSS。现在,当您转到时,example.com/html.html
您会被重定向到example.com/html.html#home
(没有后退按钮的历史记录更改)。
window.onhashchange = checkHash;
checkHash();
function checkHash() {
//Check if the hash is empty
if (window.location.hash.substring(1) == '') {
history.replaceState(undefined, undefined, "#home")
}
}
.section {
position: absolute;
z-index: -1;
opacity: 0;
transition: opacity 0.5s;
}
.section:target {
z-index: 1;
opacity: 1;
}
<div id="home" class="section">
<a href="#content">Content</a>
<a href="#somthingElse">Somthing Else</a>
<h3>Home</h3>
</div>
<div id="content" class="section">
<a href="#home">Home</a>
<h3>Content</h3>
</div>
<div id="somthingElse" class="section">
<a href="#home">Home</a>
<h3>Somthing Else</h3>
</div>
- 1 回答
- 0 关注
- 110 浏览
添加回答
举报