简体   繁体   English

悬停下划线的边距问题

[英]Margin Issue with hover underline

Recently I have been trying to make an underline hover effect.最近我一直在尝试制作下划线悬停效果。 I have used some previous JavaScript, but the issue seems to be that when I hover over a link, it stops prematurely.我使用过一些以前的 JavaScript,但问题似乎是当我将鼠标悬停在链接上时,它会过早停止。 I believe that there must be an issue with the margin-left, I set in the JS, but I'm not sure where to next我相信我在 JS 中设置的 margin-left 一定有问题,但我不确定下一步该去哪里

 $(".underline-nav").css("width", $("#one").width()); $(".underline-nav").css("margin-left", $("#one").css("margin-left")); var unav = $(".underline-nav"); $('nav a').mouseover(function() { $(".underline-nav").css("transition", "all ease 0.43s"); var position = $(this).position(); unav.css({ "width": $(this).width(), "margin-left": $(this).css("margin-left"), "left": position.left }); }) $('nav').mouseleave(function() { $(".underline-nav").css("transition", "all ease 0.7s"); var firstChild = $(this).find('a:first-child'); var position = firstChild.position(); unav.css({ "width": firstChild.width(), "margin-left": firstChild.css("margin-left"), "left": position.left }); })
 html { background-color: blue; } .underline-nav { background: tomato; height: .25rem; position: absolute; top: 6vh; transition: all ease 0.37s; z-index: 0; } .mainnav { padding-top: 1vh; width: 100%; position: absolute; z-index: 4; font-size: 0.8vw; text-align: center; display: flex; justify-content: center; align-items: center; } nav img { padding-left: 4vw; height: 3.5vw; } a { color: #fff; text-decoration: none; font-weight: 700; padding-left: 4vw; letter-spacing: 0.4em; } .sectionone { height: 100vh; background: url('media/bg.jpg') no-repeat center center fixed; background-size: cover; color: #fff; font-family: 'Raleway'; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <nav> <div class="mainnav"> <a id="one" href="#">HOME</a> <a href="#">LINK 1</a> <a href="#">LINK 2</a> <img src="/media/Asset 1.png" alt="logo"> <a href="#">LINK 3</a> <a href="#">LINK 4</a> <a href="#">LINK 5</a> <div class="underline-nav"> </div> </div> </nav>

CODEPEN: https://codepen.io/anon/pen/xeYGbK CODEPEN: https ://codepen.io/anon/pen/xeYGbK

Thanks guys谢谢你们

You have to also mind the padding in your links and the eventually line-height.您还必须注意链接中的填充和最终的行高。 A css update can be : css 更新可以是:

.underline-nav {
  margin-top:1.2vw;/* set underline under the link */
  transform : translatex(4vw);/* padding value */
}

demo https://codepen.io/anon/pen/ZZrGvd演示https://codepen.io/anon/pen/ZZrGvd

 $(".underline-nav").css("width", $("#one").width()); $(".underline-nav").css("margin-left", $("#one").css("margin-left")); var unav = $(".underline-nav"); $('nav a').mouseover(function() { $(".underline-nav").css("transition", "all ease 0.43s"); var position = $(this).position(); unav.css({ "width": $(this).width(), "margin-left": $(this).css("margin-left"), "left": position.left }); }) $('nav').mouseleave(function() { $(".underline-nav").css("transition", "all ease 0.7s"); var firstChild = $(this).find('a:first-child'); var position = firstChild.position(); unav.css({ "width": firstChild.width(), "margin-left": firstChild.css("margin-left"), "left": position.left }); })
 html { background-color: blue; } body { margin: 0; } .underline-nav { background: tomato; height: .25rem; position: absolute; top: 6vh; margin-top: 1.2vw; transform: translatex(4vw); transition: all ease 0.37s; z-index: 0; } .mainnav { padding-top: 1vh; width: 100%; position: absolute; z-index: 4; font-size: 0.8vw; text-align: center; display: flex; justify-content: center; align-items: center; } nav img { padding-left: 4vw; height: 3.5vw; } a { color: #fff; text-decoration: none; font-weight: 700; padding-left: 4vw; letter-spacing: 0.4em; } .sectionone { height: 100vh; background: url('media/bg.jpg') no-repeat center center fixed; background-size: cover; color: #fff; font-family: 'Raleway'; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <nav> <div class="mainnav"> <a id="one" href="#">HOME</a> <a href="#">LINK 1</a> <a href="#">LINK 2</a> <img src="/media/Asset 1.png" alt="logo"> <a href="#">LINK 3</a> <a href="#">LINK 4</a> <a href="#">LINK 5</a> <div class="underline-nav"> </div> </div> </nav>

I have changed padding-left of a to margin-left and it seem to work perfectly.我已将a padding-left更改为margin-left ,它似乎工作得很好。 I hope this is what you want我希望这是你想要的

 $(".underline-nav").css("width", $("#one").width()); $(".underline-nav").css("margin-left", $("#one").css("margin-left")); var unav = $(".underline-nav"); $('nav a').mouseover(function() { $(".underline-nav").css("transition", "all ease 0.43s"); var position = $(this).position(); unav.css({ "width": $(this).width(), "margin-left": $(this).css("margin-left"), "left": position.left }); }) $('nav').mouseleave(function() { $(".underline-nav").css("transition", "all ease 0.7s"); var firstChild = $(this).find('a:first-child'); var position = firstChild.position(); unav.css({ "width": firstChild.width(), "margin-left": firstChild.css("margin-left"), "left": position.left }); })
 html { background-color: blue; } .underline-nav { background: tomato; height: .25rem; position: absolute; top: 6vh; transition: all ease 0.37s; z-index: 0; } .mainnav { padding-top: 1vh; width: 100%; position: absolute; z-index: 4; font-size: 0.8vw; text-align: center; display: flex; justify-content: center; align-items: center; } nav img { padding-left: 4vw; height: 3.5vw; } a { color: #fff; text-decoration: none; font-weight: 700; margin-left: 4vw; letter-spacing: 0.4em; } .sectionone { height: 100vh; background: url('media/bg.jpg') no-repeat center center fixed; background-size: cover; color: #fff; font-family: 'Raleway'; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <nav> <div class="mainnav"> <a id="one" href="#">HOME</a> <a href="#">LINK 1</a> <a href="#">LINK 2</a> <img src="/media/Asset 1.png" alt="logo"> <a href="#">LINK 3</a> <a href="#">LINK 4</a> <a href="#">LINK 5</a> <div class="underline-nav"> </div> </div> </nav>

In the CSS for the a element, change the padding to a margin (so that you're keeping the spacing without affecting the size of the element), and center-align the text:a元素的 CSS 中,将内边距更改为边距(这样您就可以在不影响元素大小的情况下保持间距),并将文本居中对齐:

a {
    color:#fff;
    text-decoration: none;
    font-weight: 700;
    letter-spacing: 0.4em;
    margin-left: 4vw;
    text-align:center;
}

Demo: https://codepen.io/glhr/pen/JVpdMX演示: https : //codepen.io/glhr/pen/JVpdMX

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM