jquery - 打开画布外菜单时调整内容大小
问题描述
我创建了一个运行良好的简单画布菜单。
$("#menu2").click(function() {
$("#menu2").toggleClass("active");
$("#off-canvas-right").toggleClass("active");
$(".content").toggleClass("slide-left");
});
$(document).on('click', function(event) {
if (!$(event.target).closest('#menu1').length) {
$(".content").removeClass("slide-right");
}
if (!$(event.target).closest('#menu2').length) {
$("#menu2").removeClass("active");
$("#off-canvas-right").removeClass("active");
$(".content").removeClass("slide-left");
}
});
.content {
position: absolute;
transition: margin 0.5s ease-in-out;
padding-left: 30%;
}
.content p {
font-size: 42px;
}
body {
overflow-x: hidden;
position: relative;
}
#off-canvas-left,
#off-canvas-right {
position: absolute;
width: 30em;
}
#off-canvas-left {
transition: left 0.5s ease-in-out;
left: -30em;
}
#off-canvas-right {
transition: right 0.5s ease-in-out;
right: -30em;
}
#off-canvas-left.active {
transition: left 0.5s ease-in-out;
left: 0;
}
#off-canvas-right.active {
transition: right 0.5s ease-in-out;
right: 0;
}
.content.slide-right {
transition: margin 0.5s ease-in-out;
margin-left: 30em;
margin-right: -30em;
}
.content.slide-left {
transition: margin 0.5s ease-in-out;
margin-right: 30em;
margin-left: -30em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href='#' id='menu2'>menu2</a>
<div class="content">
<p>PAGE TEXT HERE</p>
</div>
<nav id="off-canvas-right">
<ul>
<li><a href="#">Stream</a></li>
<li><a href="#">Lab</a></li>
<li><a href="#">Projects</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
如果您切换 menu-2,您可以看到关闭画布菜单被推送到页面中,这很好。
但是,这会导致部分页面文本被推到页面之外。无论我的画布外菜单被推入页面多远,我都需要页面文本留在视口中。
本质上,文本会响应菜单宽度并相应地调整大小。
如果有人能指出我实现这一目标的方向,将不胜感激!
解决方案
$("#menu2").click(function() {
$("#menu2").toggleClass("active");
$("#off-canvas-right").toggleClass("active");
$(".content").toggleClass("slide-left");
});
$(document).on('click', function(event) {
if (!$(event.target).closest('#menu1').length) {
$(".content").removeClass("slide-right");
}
if (!$(event.target).closest('#menu2').length) {
$("#menu2").removeClass("active");
$("#off-canvas-right").removeClass("active");
$(".content").removeClass("slide-left");
}
});
.content {
position: fixed;
transition: margin 0.5s ease-in-out;
padding-left: 30%;
}
.content p {
font-size: 42px;
}
body {
overflow-x: hidden;
position: relative;
}
#off-canvas-left,
#off-canvas-right {
position: absolute;
width: 30em;
}
#off-canvas-left {
transition: left 0.5s ease-in-out;
left: -30em;
}
#off-canvas-right {
transition: right 0.5s ease-in-out;
right: -30em;
}
#off-canvas-left.active {
transition: left 0.5s ease-in-out;
left: 0;
}
#off-canvas-right.active {
transition: right 0.5s ease-in-out;
right: 0;
}
.content.slide-right {
transition: margin 0.5s ease-in-out;
margin-left: 30em;
margin-right: -30em;
}
.content.slide-left {
transition: margin 0.5s ease-in-out;
margin-right: 30em;
margin-left: -10em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href='#' id='menu2'>menu2</a>
<div class="content">
<p>PAGE TEXT HERE</p>
</div>
<nav id="off-canvas-right">
<ul>
<li><a href="#">Stream</a></li>
<li><a href="#">Lab</a></li>
<li><a href="#">Projects</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
推荐阅读
- modelica - 如何使用 Dymola 添加单位换算
- javascript - React JS memory leak with periodic calculations using setInterval
- image - 当您在 Flutter 中以字节形式接收图像时,如何读取/写入具有原始扩展名的图像文件?
- c# - Send PDF to the browser rather than saving to the server - ASP.NET iText 7 C# Web Forms
- puppeteer - 如何使用元素标题的一部分在 Puppeteer 或 Playwright 中找到元素?
- linux-kernel - 构建 AOSP 内核,构建错误的位置
- html - 如何在 Visual Studio Code 中递归地取消缩进代码?
- python - 如何在一维数组上使用 SimpleImputer?
- javascript - myMap 有没有办法进行身份验证
- python - Python网络抓取嵌套字典键对 - AttributeError