jQuery 宽度为 window 的函数
jQuery function with window width
我正在尝试将其他 JavaScript/jQuery 用于多个宽度。为了轻松开始,我想在 window 宽度 > 981 时执行 20%,在 < 981 时执行 100%。这是我用其他脚本制作的脚本。
<script>
if ($(window).width() < 981){
function openNav() {
document.getElementById("mySidenav").style.width = "20%";
document.getElementById("main1").style.marginLeft = "20%";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.marginLeft = "0";
}
}
else ($(window).width() > 981){
function openNav() {
document.getElementById("mySidenav").style.width = "100%";
document.getElementById("main1").style.display = "none";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.display = "block";
}
}
</script>
我的HTML
<html>
<div id="mySidenav" class="sidenav">
<a id="closebtn" onclick="closeNav()">×</a>
<p> OVER MEZELF </p>
<a href="/about/about.html">ABOUT</a>
<p> PHP OPDRACHTEN </p>
<a href="/bmi/bmi1.html">BEREKEN BMI</a>
<a href="/array/array.html">ARRAY OPDRACHTEN</a>
<p style="display:none;"> DOWNLOAD </p>
<a href="download.zip" style="display:none;">DOWNLOAD ZIP BESTAND</a>
<div id="date" style="color:#818181;font-size:15px;cursor:context-menu;font-weight:bold;text-transform:uppercase;margin-top:100%;"> <?php $today = date("F j, Y"); echo $today; ?></div>
<div id="time" style="color:#818181;font-size:15px;cursor:context-menu;font-weight:bold;"></div>
</div>
<div id="main1">
<span id="menu0" style="color:white;font-size:30px;cursor:pointer;" onclick="openNav()">☰ </span>
</div>
</html>
所以当window<981时显示100%,>981时显示20%。但是这段代码不起作用。希望有人知道。
(抱歉是荷兰语)
这是else if in Javascript
的结构
if (time < 10) {
greeting = "Good morning";
} else if (time < 20) {
greeting = "Good day";
} else {
greeting = "Good evening";
}
所以请将您的代码更正为
if ($(window).width() < 981){
function openNav() {
document.getElementById("mySidenav").style.width = "20%";
document.getElementById("main1").style.marginLeft = "20%";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.marginLeft = "0";
}
}
else if ($(window).width() > 981){
function openNav() {
document.getElementById("mySidenav").style.width = "100%";
document.getElementById("main1").style.marginLeft = "100%";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.marginLeft = "0";
}
}
您的函数应该在 if/else
块之外声明,并使用 var 进行通信。你也忘记了else IF
<script>
var openWidth = "100%";
function openNav() {
document.getElementById("mySidenav").style.width = openWidth;
document.getElementById("main1").style.marginLeft = openWidth;
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.marginLeft = "0";
}
if ($(window).width() < 981){
openWidth = "20%";
} else if ($(window).width() > 981){
openWidth = "100%";
}
</script>
CSS 也可以使用 @media
来完成
@media only screen and (max-width: 320px) {
/* Here you can set the width of open */
}
如果这是所有代码,那么我可以看到几个问题。
您有 if
和 else
,但最后一个必须是 else if
。但这会带来另一个问题——if width < 981
,else if width > 981
,但如果宽度恰好是 981 怎么办?与添加 if
.
相比,您最好删除 ($(window).width() > 981)
并使其成为普通的 else
语句
宽度什么时候检查运行?除非您 运行 在调整大小事件中使用该代码(并且不要那样做!),否则它将 运行 一次。因此,打开的大小将在页面加载时设置为 only。如果您在此之后调整浏览器大小,并超出 981px 阈值,您将不会获得想要的结果。
那么为什么我说使用媒体查询呢?首先,让我们看一下JS,把open/close函数做的很通用:
function openNav() {
$("html").addClass("navopen");
}
function closeNav() {
$("html").removeClass("navopen");
}
我们现在实际上是在为页面设置一个状态,表示导航是打开还是关闭。所以现在 CSS:
#mySidenav {
width: 0;
}
#main1 {
margin-left: 0;
}
html.navopen #mySidenav {
width: 100%;
}
html.navopen #main1 {
display: none;
}
@media (max-width: 981px) {
html.navopen #mySidenav {
width: 20%;
}
html.navopen #main1 {
margin-left: 20%;
display: block;
}
}
现在,您只需在 JS 中使用一个简单的切换来设置导航是否打开,然后使用 CSS 即可。更容易处理,您也不必设置处理程序来查看浏览器视口大小是否发生变化。
我发现了我的问题...
<script>
if ($(window).width() > 981){
function openNav() {
document.getElementById("mySidenav").style.width = "20%";
document.getElementById("main1").style.marginLeft = "20%";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.marginLeft = "0";
}
}
else if ($(window).width() < 981){
function openNav() {
document.getElementById("mySidenav").style.width = "100%";
document.getElementById("main1").style.display = "none";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.display = "block";
}
}
</script>
加上这个:
<script src="https://code.jquery.com/jquery-1.10.2.js">
</script>
成功了...感谢您的帮助!
我正在尝试将其他 JavaScript/jQuery 用于多个宽度。为了轻松开始,我想在 window 宽度 > 981 时执行 20%,在 < 981 时执行 100%。这是我用其他脚本制作的脚本。
<script>
if ($(window).width() < 981){
function openNav() {
document.getElementById("mySidenav").style.width = "20%";
document.getElementById("main1").style.marginLeft = "20%";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.marginLeft = "0";
}
}
else ($(window).width() > 981){
function openNav() {
document.getElementById("mySidenav").style.width = "100%";
document.getElementById("main1").style.display = "none";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.display = "block";
}
}
</script>
我的HTML
<html>
<div id="mySidenav" class="sidenav">
<a id="closebtn" onclick="closeNav()">×</a>
<p> OVER MEZELF </p>
<a href="/about/about.html">ABOUT</a>
<p> PHP OPDRACHTEN </p>
<a href="/bmi/bmi1.html">BEREKEN BMI</a>
<a href="/array/array.html">ARRAY OPDRACHTEN</a>
<p style="display:none;"> DOWNLOAD </p>
<a href="download.zip" style="display:none;">DOWNLOAD ZIP BESTAND</a>
<div id="date" style="color:#818181;font-size:15px;cursor:context-menu;font-weight:bold;text-transform:uppercase;margin-top:100%;"> <?php $today = date("F j, Y"); echo $today; ?></div>
<div id="time" style="color:#818181;font-size:15px;cursor:context-menu;font-weight:bold;"></div>
</div>
<div id="main1">
<span id="menu0" style="color:white;font-size:30px;cursor:pointer;" onclick="openNav()">☰ </span>
</div>
</html>
所以当window<981时显示100%,>981时显示20%。但是这段代码不起作用。希望有人知道。
(抱歉是荷兰语)
这是else if in Javascript
的结构if (time < 10) {
greeting = "Good morning";
} else if (time < 20) {
greeting = "Good day";
} else {
greeting = "Good evening";
}
所以请将您的代码更正为
if ($(window).width() < 981){
function openNav() {
document.getElementById("mySidenav").style.width = "20%";
document.getElementById("main1").style.marginLeft = "20%";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.marginLeft = "0";
}
}
else if ($(window).width() > 981){
function openNav() {
document.getElementById("mySidenav").style.width = "100%";
document.getElementById("main1").style.marginLeft = "100%";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.marginLeft = "0";
}
}
您的函数应该在 if/else
块之外声明,并使用 var 进行通信。你也忘记了else IF
<script>
var openWidth = "100%";
function openNav() {
document.getElementById("mySidenav").style.width = openWidth;
document.getElementById("main1").style.marginLeft = openWidth;
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.marginLeft = "0";
}
if ($(window).width() < 981){
openWidth = "20%";
} else if ($(window).width() > 981){
openWidth = "100%";
}
</script>
CSS 也可以使用 @media
来完成@media only screen and (max-width: 320px) {
/* Here you can set the width of open */
}
如果这是所有代码,那么我可以看到几个问题。
您有
if
和else
,但最后一个必须是else if
。但这会带来另一个问题——ifwidth < 981
,else ifwidth > 981
,但如果宽度恰好是 981 怎么办?与添加if
. 相比,您最好删除 宽度什么时候检查运行?除非您 运行 在调整大小事件中使用该代码(并且不要那样做!),否则它将 运行 一次。因此,打开的大小将在页面加载时设置为 only。如果您在此之后调整浏览器大小,并超出 981px 阈值,您将不会获得想要的结果。
($(window).width() > 981)
并使其成为普通的 else
语句
那么为什么我说使用媒体查询呢?首先,让我们看一下JS,把open/close函数做的很通用:
function openNav() {
$("html").addClass("navopen");
}
function closeNav() {
$("html").removeClass("navopen");
}
我们现在实际上是在为页面设置一个状态,表示导航是打开还是关闭。所以现在 CSS:
#mySidenav {
width: 0;
}
#main1 {
margin-left: 0;
}
html.navopen #mySidenav {
width: 100%;
}
html.navopen #main1 {
display: none;
}
@media (max-width: 981px) {
html.navopen #mySidenav {
width: 20%;
}
html.navopen #main1 {
margin-left: 20%;
display: block;
}
}
现在,您只需在 JS 中使用一个简单的切换来设置导航是否打开,然后使用 CSS 即可。更容易处理,您也不必设置处理程序来查看浏览器视口大小是否发生变化。
我发现了我的问题...
<script>
if ($(window).width() > 981){
function openNav() {
document.getElementById("mySidenav").style.width = "20%";
document.getElementById("main1").style.marginLeft = "20%";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.marginLeft = "0";
}
}
else if ($(window).width() < 981){
function openNav() {
document.getElementById("mySidenav").style.width = "100%";
document.getElementById("main1").style.display = "none";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main1").style.display = "block";
}
}
</script>
加上这个:
<script src="https://code.jquery.com/jquery-1.10.2.js">
</script>
成功了...感谢您的帮助!