javascript - jQuery - If 语句检测页面加载
问题描述
我有一个旨在自动隐藏小屏幕上的侧边栏的功能。通过添加一个影响侧边栏边距的 id 来隐藏侧边栏。过渡用于动画它向左滑动。
由于我不希望侧边栏在页面加载时滑出屏幕,因此我通过添加一个类来删除过渡然后在 0.5 秒(即过渡的长度)后删除该类来抵消这一点。
我在页面加载和窗口调整大小时都运行了以下函数。我只希望在页面加载时删除转换,所以有没有办法使用 if 语句来检测这一点。
function setSidebarState() {
if($(window).width() < 960) {
$(".wrapper").attr("id", "sidebarClosed");
//Page load only
if($(document).ready()) {
/***if(!$(window).resize()) - this also doesn't work***/
$(".sidebar, .content").addClass("noTransition");
setTimeout(function() {
$(".sidebar, .content").removeClass("noTransition");
}, 500);
}
}
else {
$(".wrapper").attr("id", "");
}
}
$(document).ready(function() {
setSidebarState();
});
$(window).resize(function() {
setSidebarState();
});
CSS很简单
.sidebar {
width: 320px;
position: fixed;
height: 100vh;
background: #333;
}
.content {
margin-left: 320px;
}
.wrapper#sidebarClosed > .sidebar {
margin-left: -270px;
}
.wrapper#sidebarClosed > .content {
margin-left: 50px;
}
解决方案
您需要做的就是拥有一个可以传递给函数的布尔参数:
function setSidebarState(pageLoad) {
if($(window).width() < 960) {
$(".wrapper").attr("id", "sidebarClosed");
//Page load only
if(pageLoad) {
$(".sidebar, .content").addClass("noTransition");
setTimeout(function() {
$(".sidebar, .content").removeClass("noTransition");
}, 500);
}
}
else {
$(".wrapper").attr("id", "");
}
}
$(document).ready(function() {
setSidebarState(true);
});
$(window).resize(function() {
setSidebarState(false);
});
推荐阅读
- amazon-web-services - 使用 aws 子生成器部署的 JHipster 项目返回 http 404 错误
- docker - 大规模的 ServiceStack 和批处理
- javascript - d3.js:进入-更新-退出模式 - 未删除旧点
- rx-java - 组合列表 - 像 Sql 中的联接
- jquery - jQuery 如果屏幕较小时条件不起作用(移动设备)
- git - Git:从 PR 中获取分支名称
- python - 没有名为 tensorflow.python Windows 10 的模块
- r - 如何仅在有多个值时使用 sub on
- c# - Vector3 [] Unity 没有填满值
- node.js - 无法在消息处理程序中写入文件