JavaScript选择器问题,如何将波浪号转为变量。

huangapple go评论65阅读模式
英文:

javascript selector problem with tilde how to make it a vairable

问题

在JavaScript中,你可以使用以下代码来实现点击链接时关闭移动版本的汉堡菜单:

const sideMenu = document.getElementById('side-menu');
const nav = document.querySelector('.nav');

nav.addEventListener('click', (event) => {
    if (event.target.tagName === 'A') {
        sideMenu.checked = false;
        // 可以根据需要添加其他关闭菜单的逻辑
    }
});

这段JavaScript代码会监听导航菜单(.nav)上的点击事件,如果点击的元素是链接(<a>标签),它将关闭移动版本的汉堡菜单(将 side-menuchecked 属性设置为 false)。

这样,在点击链接时,汉堡菜单应该会关闭。希望这对你有所帮助。

英文:

I would like to know if it's possible et get this element in Javascript :

.side-menu:checked ~ nav

I've a burger menu using this selector to open it on mobile version, i try to close that menu when a link of it is clicked

my code :

&lt;header class=&quot;header&quot;&gt;
    &lt;a href=&quot;#&quot; class=&quot;logo&quot;&gt;&lt;img src=&quot;assets/img/brand.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;
    &lt;input class=&quot;side-menu&quot; type=&quot;checkbox&quot; id=&quot;side-menu&quot; /&gt;
    &lt;label class=&quot;hamb&quot; for=&quot;side-menu&quot;&gt;&lt;span class=&quot;hamb-line&quot;&gt;&lt;/span&gt;&lt;/label&gt;
    &lt;nav class=&quot;nav&quot;&gt;
        &lt;ul class=&quot;menu&quot;&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Accueil&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Agenda&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Contact&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/nav&gt;
&lt;/header&gt;

and the css file :

.side-menu {
    display: none;
}

/* Toggle menu icon */

.side-menu:checked ~ nav{
    max-height: 100%;
}

Any ideas ? I'm trying to change the max value to 0 checking the checkbox value but i have no idea how to do this. There is maybe a other solution using only css but as a beginner i haven't find it
Thxs a lot

答案1

得分: 1

你需要使用querySelector在你的DOM元素上切换一个类。

切换时,CSS类将在你的属性上激活/取消激活,并应用/移除CSS效果。

var side-menu = document.querySelector('.side-menu') // 使用类
side-menu.classList.toggle('open-menu');

和CSS:

.open-menu{
    display: block;
    max-height: 100%;
    min-width: 20%;
}

你可以在这里查看文档1

英文:

You need to toggle a class on your DOM element using querySelector.

When toggle, the CSS class gonna be active/inactive on your property and apply/remove the CSS effects.

var side-menu = document.querySelector(&#39;.side-menu&#39;) // Using class
side-menu.classList.toggle(&#39;open-menu&#39;);

and CSS:

.open-menu{
    display: block;
    max-height: 100%;
    min-width: 20%;
}

You can check the docs right here.

答案2

得分: 0

以下是翻译好的部分:

终于,这个简单的函数在我的链接上起作用了:

function closeM() {
const someCheckbox = document.getElementById('side-menu');
someCheckbox.checked = false;
}

谢谢你让我思考我的问题。

英文:

Finally it's work with this simple function on my links :

function closeM() {
const someCheckbox = document.getElementById(&#39;side-menu&#39;);
someCheckbox.checked = false;
}

Thanks you make me think on my problem

huangapple
  • 本文由 发表于 2023年2月27日 02:06:33
  • 转载请务必保留本文链接:https://go.coder-hub.com/75574026.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定