我正试图实现对图像悬停链接和图像的基础.

以下是试图实现的目标:

req

The issue是当我在元素上悬停时,我看到两条线,但在悬停链接和图像时应该是一条线,而且在调整窗口大小期间有两条下划线可见,并且不稳定. 也许有更好的方法来处理这件事?

enter image description here

以下是我的代码:

.lnk-underline {
    text-decoration: none; /* Remove default underline for text */
    position: relative;
    display: inline-block;
}

.lnk-underline::before {
    content: "";
    position: absolute;
    left: 0;
    bottom: -1.5px;
    width: 100%;
    height: 2px;
    background: #D0191D;
}

.underline-hover {
    text-decoration: none;
    position: relative;
    display: inline-block;
}

.underline-hover::before {
    content: "";
    position: absolute;
    left: 0;
    bottom: -1.5px;
    width: 100%;
    height: 2px;
    background: #D0191D;
    transform: scaleX(0);
    transform-origin: bottom;
    transition: transform 0.3s ease-in-out;
}

.underline-hover:hover::before {
    transform: scaleX(1);
}

/* Remove underline from lnk-underline for downloadLink on hover */
.lnk-underline:hover {
    text-decoration: none;
}
<div class="underline-hover">
              <a href="@Url" class="lnk-underline" id="downloadLink">
                  Download
              </a>
              <a href="@Url" id="iconDownload">
                  <img src="/icons/download.svg" />
              </a>
</div>

推荐答案

我会这样做的...

  • 只有一行,所以没有渲染故障
  • 基于图标具有已知大小的原理
  • 不需要复制您的链接元素<a href...
  • 不需要使用div的家长.

Less code is always more easier for understanding...

html {
  font-family     : Arial, Helvetica, sans-serif;
  font-size       : 14px;
  }
a.lnk-moving-underline {
  position        : relative;
  display         : inline-block;
  font-size       : 1.5rem;
  width           : fit-content;
  overflow        : hidden;
  padding-bottom  : .2em;
  text-decoration : none;
  color           : crimson;
  }
a.lnk-moving-underline svg {
  width  : 1em; 
  height : 1em;
  fill   : currentColor; 
  }
a.lnk-moving-underline::before {
  content    : '';
  position   : absolute;
  display    : block;
  width      : 100%;
  height     : .2em;
  bottom     : 0;
  left       : 0;
  background : currentColor;
  transform  : translateX( -1.2em ); /* for words spacing */
  transition : transform 0.3s ease;
  }
a.lnk-moving-underline:hover::before {
  transform  : translateX( 0 );
  }

.noDisplay { display: none; }
<a class="lnk-moving-underline" href="@Url..." >
  Download 1 
  <svg><use xlink:href="#dnld_icon"></svg>
</a>
<br><br>
<a class="lnk-moving-underline" href="@Url..." >
  Download 2
  <svg><use xlink:href="#dnld_icon"></svg>
</a>


<svg class="noDisplay">
  <symbol id="dnld_icon" viewBox="0 0 256 256" >
    <path d="M230.2,176.2v53.5c0,9-7.3,16.2-16.2,16.2H42c-9,0-16.2-7.2-16.2-16.2v-53.5c0-9,7.3-16.2,16.2-16.2
        c9,0,16.2,7.3,16.2,16.2v37.3h139.5v-37.3c0-9,7.3-16.2,16.2-16.2S230.2,167.3,230.2,176.2z M116.6,190.1
        c3.2,3.2,7.3,4.7,11.5,4.7c4.2,0,8.3-1.6,11.5-4.7l48.6-48.6c6.4-6.3,6.4-16.6,0-22.9c-6.3-6.3-16.6-6.3-22.9,0
        l-21,21V26.2c0-9-7.2-16.2-16.2-16.2c-9,0-16.2,7.3-16.2,16.2v113.3l-21-21c-6.3-6.3-16.6-6.3-22.9,0
        c-6.3,6.3-6.3,16.6,0,22.9L116.6,190.1z"/>
  </symbol>
</svg>

Html相关问答推荐

Select 包含iframe的图形<><>

为什么在移动视图中,这个水平可滚动的表格会在表格的右侧显示额外的空间?

我应该怎么做才能显示出整个字符串?

嵌套表列高度不是100%高度的问题

更改垫子输入的涟漪 colored颜色

在网页上的 Select 器中显示选项时出现问题:未在GO模板中传递循环{{range}}的数据

滚动两个不同高度的DIV;一个等待另一个

如何将CSS滤镜仅应用于背景图像

如何在R rmarkdown中创建循环中的分页表?

带下划线的文本应该有延长的下划线,以使其图像悬停

使用bash从html表格中提取表格

动画的停止和启动并不顺利

rvest: Select 不包含链接的段落(<;p>;)

按钮悬停效果不影响按钮内的图标

为什么带有截断的 contentedible div 在受约束时会在 Chrome 中添加空格

如何在黑暗模式切换中添加图标

可以通过悬停时的自定义区域更改文本属性吗?

如何在滚动行中显示一张图片和下一张图片的一半?

CSS 网格自动高度不适用于特定网格区域

下拉菜单项在页面加载时显示,需要隐藏直到悬停