【问题标题】:Thick underline when hover悬停时加粗下划线
【发布时间】:2014-08-30 02:13:37
【问题描述】:

当鼠标悬停在单词(导航栏)上时,我正在尝试创建粗下划线。但是我注意到下划线比单词长得多,并且单词和下划线之间有很大的差距。怎样才能让下划线和单词一样长(类似text-decoration: underline),而且差距也很小。

下面是我的代码和结果图片。

nav > ul > li:hover > a { 
border-bottom: 2px solid #F117B4;
text-decoration: none; 
}

这是导航栏的全部代码。

nav { font-family: Open Sans Condensed; letter-spacing: 1px; }

nav { position: relative; border-bottom: 1px {{ settings.border_style }} {{ settings.border_color }}; /*border-top: 1px {{ settings.border_style }} {{ settings.border_color }};*/ }

nav > ul > li {  margin-bottom: 0; }

nav > ul > li > a { text-decoration: none; color: {{ settings.nav_link_color }}; display: block; padding: 0 15px; font-size: 17px/*font-size: {{ settings.nav_font_size }}*/; 
line-height: {{ settings.nav_line_height }}; height: {{ settings.nav_line_height }}; font-weight: {{ settings.nav_weight }}; text-transform: {{ settings.nav_font_style }}; }

nav > ul > li > a.current {  color: {{ settings.selected_nav_link_color }}; }

nav > ul > li:hover > a { display:inline; border-bottom: 2px solid #F117B4; color: {{ settings.nav_link_hover_color }}; text-decoration: none; }

nav > ul > li.dropdown { position:relative; }

nav > ul > li.dropdown > .dropdown { background: {{ settings.nav_dropdown_background_color }}; list-style: none outside none; padding: 5px 15px; display: none; position: absolute; min-width: 180px; z-index: 99999; top: 100%; left: 0%; margin-left: 15px; border: 1px solid {{ settings.border_color }}; }

nav > ul > li.dropdown:hover > .dropdown { display: block; z-index: 999999; -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.10); -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.10); box-shadow:0 0 3px rgba(0, 0, 0, 0.10); }

nav > ul > li.dropdown li { list-style: none; font-size: 13px; line-height: 30px; }

您好,有人有解决方案吗? :(请帮助我。谢谢。

【问题讨论】:

  • 要么在 a:hover 上使用相同的,要么你不能为此使用 javascript。?
  • 你渲染的 html 是什么样子的?
  • @KiranHegde op 不能发布图片,rep 是不允许的
  • 上传图片并在此处提供链接。有人会编辑您的问题。

标签: css hover underline


【解决方案1】:

嘿,有点晚了,但我得到了这个工作。您要查找的下划线粗细需要通过border-bottom-style property 完成。

要定位的两个元素是li:hovera:hover,具体取决于您使用哪一个。查看 jsfiddle https://jsfiddle.net/14umqLrr/

您还可以使用outline-offset: 属性来偏移边框,使其离导航栏文本更近或更远。

【讨论】:

    【解决方案2】:

    更新

    1. 下划线与字号完全相同。
    2. 下划线和单词的距离减小。使用伪元素实现。

    这是 jsfiddle:http://jsfiddle.net/e79gV/1/

    css

      nav > ul > li > a {
        text-decoration: none;
    }
    
    .border{
        position:relative;
    }
    .border:hover::after{
        content:'';
        position:absolute;
        width: 100%;
        height: 0;    
        left:0;
        bottom:0px; /*Change this to increase/decrease distance*/
        border-bottom: 2px solid #000;  
    }
    

    html

     <nav>
        <ul>
            <li><a class="border" href="#">M</a>
    
            </li>
            <li><a class="border" href="#">Menu</a>
    
            </li>
            <li><a class="border" href="#">Menu Item</a>
    
            </li>
        </ul>
    </nav>
    

    下划线与单词的长度完全相同。

    一些可能有帮助的参考资料:

    https://stackoverflow.com/a/12804469/3603806

    Changing Underline color

    【讨论】:

    • 完美运行。您能否在&lt;li&gt;&lt;/li&gt; 标签内提供一个没有&lt;a&gt;&lt;/a&gt; 标签的解决方案,使其仅适用于有序列表文本?谢谢
    【解决方案3】:

    使用a:hover 而不是li:hover 这应该可以解决下划线重叠的问题。

    <style>
    nav > ul > li > a:hover { 
    border-bottom: 2px solid #F117B4;
    text-decoration: none; 
    }
    </style>
    <nav>
        <ul>
            <li>
                <a>hello</a><!--use &nbsp for line overlapping -->
            </li>
        </ul>
    </nav>
    

    【讨论】:

    • 嗨,我只有非常基础的 CSS 知识。而编码,它实际上是来自一个模板。如果我要编辑它,恐怕我会毁了整个主题。 >
    • 嗨,我已将其更改为 nav > ul > li > a:hover 而不是 nav > ul > li:hover > a 但结果仍然相同..
    • 是不是边框底部离文字很远?就距离而言?尝试检查元素的填充。
    • 您好,这是结果截图。 i735.photobucket.com/albums/ww358/roundeworld/…我认为每个导航周围都有一个不可见的框,并且border-bottom在底部边框上。
    猜你喜欢
    • 2017-12-23
    • 2014-01-23
    • 1970-01-01
    • 2013-05-26
    • 2013-04-15
    • 2021-01-22
    • 2014-04-12
    • 2018-02-17
    • 2015-02-07
    相关资源
    最近更新 更多