- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的导航栏来处理导航栏的粘性收缩。
HTML:-
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<header></header>
<nav id="nav" class="nav">
<div class="nav__inner">
</div>
</nav>
<div class="container">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Incidunt id error ut delectus a sapiente accusantium quam, laudantium, atque laborum, distinctio. Commodi perspiciatis ipsa ducimus labore, iure dignissimos fugit quae.</p>
</div>
<footer>This is footer</footer>
</body>
</html>
CSS:-
* {
box-sizing: border-box;
}
body {
font-family: 'helvetica neue';
letter-spacing: 0.03em;
color: #333;
}
header {
height: 150px;
background: black;
}
footer {
height: 50px;
background: black;
color: dodgerblue;
}
.nav {
position: sticky;
top: 0;
height: 80px;
background: dodgerblue;
transition: height 200ms ease;
&.is-shrunk {
height: 50px;
}
}
JS:-
const nav = document.getElementById('nav');
const navFromTop = nav.offsetTop;
const navHeight = nav.offsetHeight;
const distanceScrolled = () => {
return window.pageYOffset;
};
const isScrolledEnough = () => {
return (distanceScrolled() > navFromTop + navHeight);
};
const setIsShrunk = (value) => {
if (value && isScrolledEnough()) {
nav.classList.add('is-shrunk');
} else if (!value) {
nav.classList.remove('is-shrunk');
}
};
window.addEventListener('scroll', () => {
setIsShrunk(distanceScrolled() > navHeight);
});
我希望此代码在页面滚动时将蓝色导航栏从 80 像素高度缩小到 50 像素高度。
我所做的是从 Sticky shrink 复制代码.但是我没有得到提到的链接中所示的效果。蓝色导航栏并没有像链接中那样在滚动页面时缩小。可能的问题和解决方案是什么。
最佳答案
只需更改:
&.is-shrunk {
height: 50px;
}
将其从 CSS 中嵌套的 .nav 选择器中取出。
.nav.is-shrunk {
height: 50px;
}
Ampersand (&) is a SASS nesting selector and you could do the same operation without nesting as shown below.
const nav = document.getElementById('nav');
const navFromTop = nav.offsetTop;
const navHeight = nav.offsetHeight;
const distanceScrolled = () => {
return window.pageYOffset;
};
const isScrolledEnough = () => {
return (distanceScrolled() > navFromTop + navHeight);
};
const setIsShrunk = (value) => {
if (value && isScrolledEnough()) {
nav.classList.add('is-shrunk');
} else if (!value) {
nav.classList.remove('is-shrunk');
}
};
window.addEventListener('scroll', () => {
setIsShrunk(distanceScrolled() > navHeight);
});
* {
box-sizing: border-box;
}
body {
font-family: 'helvetica neue';
letter-spacing: 0.03em;
color: #333;
}
header {
height: 150px;
background: black;
}
footer {
height: 50px;
background: black;
color: dodgerblue;
}
.nav {
position: sticky;
top: 0;
height: 80px;
background: dodgerblue;
transition: height 200ms ease;
}
.nav.is-shrunk {
height: 50px;
}
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<header></header>
<nav id="nav" class="nav">
<div class="nav__inner">
</div>
</nav>
<div class="container">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Incidunt id error ut delectus a sapiente accusantium quam, laudantium, atque laborum, distinctio. Commodi perspiciatis ipsa ducimus labore, iure dignissimos fugit quae.</p>
<p>Nesciunt eos recusandae adipisci nostrum illum eius. Tempora nemo necessitatibus temporibus quaerat laudantium dolorem minima blanditiis sapiente earum fugiat commodi officiis, magni ducimus corporis, ad! Maiores perspiciatis aperiam quod nemo.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Incidunt id error ut delectus a sapiente accusantium quam, laudantium, atque laborum, distinctio. Commodi perspiciatis ipsa ducimus labore, iure dignissimos fugit quae.</p>
<p>Nesciunt eos recusandae adipisci nostrum illum eius. Tempora nemo necessitatibus temporibus quaerat laudantium dolorem minima blanditiis sapiente earum fugiat commodi officiis, magni ducimus corporis, ad! Maiores perspiciatis aperiam quod nemo.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Incidunt id error ut delectus a sapiente accusantium quam, laudantium, atque laborum, distinctio. Commodi perspiciatis ipsa ducimus labore, iure dignissimos fugit quae.</p>
<p>Nesciunt eos recusandae adipisci nostrum illum eius. Tempora nemo necessitatibus temporibus quaerat laudantium dolorem minima blanditiis sapiente earum fugiat commodi officiis, magni ducimus corporis, ad! Maiores perspiciatis aperiam quod nemo.</p>
<p>Quisquam magni doloribus deserunt rerum, expedita iste numquam ipsum velit beatae, dolores optio sapiente corporis voluptatum mollitia nemo excepturi eveniet provident dolorem facilis incidunt minus aliquam error quas. Distinctio, exercitationem!</p>
<p>Esse sapiente dolore labore, fuga nobis voluptates explicabo odio asperiores, quod repudiandae totam harum tempora praesentium natus. Blanditiis, sint id sit, ab impedit fuga aliquam distinctio harum, ex molestias voluptates!</p>
<p>Cumque laborum, ad sequi, reiciendis illum non vero voluptatum libero consequatur quod vitae voluptatem quibusdam incidunt inventore temporibus omnis optio sint quasi soluta. Reprehenderit omnis inventore, doloremque repudiandae minus recusandae.</p>
<p>Reiciendis hic, placeat laborum iure quo ratione ex perspiciatis, error perferendis sed facilis animi corrupti delectus soluta libero id eligendi iusto magnam itaque. Facere, ducimus. Eveniet officiis quod, vero asperiores.</p>
</div>
<footer>This is footer</footer>
关于javascript - 导航栏粘性收缩不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47944973/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!