苗条-单击时更改导航项的样式

时间:2020-09-29 21:40:06

标签: svelte-3 svelte-component

我正在使用Bulma CSS在Svelte中创建一个导航组件,并且当class:is-active为true时,我想使每个导航栏项目变为粗体。我目前所做的是:

    <script>
    import {onMount} from 'svelte';
    let segment;
    
    onMount(() => {
        const linkOne = document.getElementById("linkOne");
        const linkTwo = document.getElementById("linkTwo");
        const linkThree = document.getElementById("linkThree");
        const linkFour = document.getElementById("linkFour");
        const linkFive = document.getElementById("linkFive");
        
        linkOne.addEventListener('focusin', (event) => {
            event.target.style["font-weight"] = 'bold';    
        });

        linkOne.addEventListener('blur', (event) => {
            event.target.style["font-weight"] = 'normal';    
        });
        
        linkTwo.addEventListener('focusin', (event) => {
            event.target.style["font-weight"] = 'bold';    
        });

        linkTwo.addEventListener('blur', (event) => {
            event.target.style["font-weight"] = 'normal';    
        });
        
        linkThree.addEventListener('focusin', (event) => {
            event.target.style["font-weight"] = 'bold';    
        });

        linkThree.addEventListener('blur', (event) => {
            event.target.style["font-weight"] = 'normal';    
        });
        
        linkFour.addEventListener('focusin', (event) => {
            event.target.style["font-weight"] = 'bold';    
        });

        linkFour.addEventListener('blur', (event) => {
            event.target.style["font-weight"] = 'normal';    
        });
        
        linkFive.addEventListener('focusin', (event) => {
            event.target.style["font-weight"] = 'bold';    
        });

        linkFive.addEventListener('blur', (event) => {
            event.target.style["font-weight"] = 'normal';    
        });
    });
</script>
<nav class="navbar" role="navigation" aria-label="main navigation">
    <div class="navbar-brand">
        <a href="/" class="navbar-item">
        </a>
    </div>
    <div class="nav-menubar">
        <div class="navbar-menu">
            <a id="linkOne" href="/" class="navbar-item" class:is-active={segment === undefined}>LinkOne</a>
            <a id="linkTwo" href="/linkTwo" class="navbar-item" class:is-active={segment === "linktwo"}>LinkTwo</a>
            <a id="linkThree" href="/linkThree" class="navbar-item" class:is-active={segment === "linkthree"}>LinkThree</a>
            <a id="linkFour" href="/linkFour" class="navbar-item" class:is-active={segment === "linkfour"}>LinkFour</a>
            <a id="linkFive" href="/linkFive" class="navbar-item" class:is-active={segment === "linkfive"}> LinkFive</a>
        </div>
    </div>
</nav>

在Firefox(81.0)上,这导致链接在onFocus上变为粗体,但是当切换回另一个链接时,除非单击两次,否则该链接不会变为粗体。另外,我不确定这是设置这些组件样式的最佳方法。有人可以建议一种更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以用一条简单的CSS规则替换所有JavaScript:

a:focus {
  font-weight: bold;
}