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

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

javascript selector problem with tilde how to make it a vairable

问题

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

  1. const sideMenu = document.getElementById('side-menu');
  2. const nav = document.querySelector('.nav');
  3. nav.addEventListener('click', (event) => {
  4. if (event.target.tagName === 'A') {
  5. sideMenu.checked = false;
  6. // 可以根据需要添加其他关闭菜单的逻辑
  7. }
  8. });

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

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

英文:

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

  1. .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 :

  1. &lt;header class=&quot;header&quot;&gt;
  2. &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;
  3. &lt;input class=&quot;side-menu&quot; type=&quot;checkbox&quot; id=&quot;side-menu&quot; /&gt;
  4. &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;
  5. &lt;nav class=&quot;nav&quot;&gt;
  6. &lt;ul class=&quot;menu&quot;&gt;
  7. &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Accueil&lt;/a&gt;&lt;/li&gt;
  8. &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Agenda&lt;/a&gt;&lt;/li&gt;
  9. &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Contact&lt;/a&gt;&lt;/li&gt;
  10. &lt;/ul&gt;
  11. &lt;/nav&gt;
  12. &lt;/header&gt;

and the css file :

  1. .side-menu {
  2. display: none;
  3. }
  4. /* Toggle menu icon */
  5. .side-menu:checked ~ nav{
  6. max-height: 100%;
  7. }

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效果。

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

和CSS:

  1. .open-menu{
  2. display: block;
  3. max-height: 100%;
  4. min-width: 20%;
  5. }

你可以在这里查看文档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.

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

and CSS:

  1. .open-menu{
  2. display: block;
  3. max-height: 100%;
  4. min-width: 20%;
  5. }

You can check the docs right here.

答案2

得分: 0

以下是翻译好的部分:

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

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

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

英文:

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

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

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:

确定