我想得到一个transition hover effect on border,边界在悬停时扩大.

h1 {
  color: #666;
}

h1:after {
  position: absolute;
  left: 10px;
  content: '';
  height: 40px;
  width: 275px;
  border-bottom: solid 3px #019fb6;
  transition: left 250ms ease-in-out, right 250ms ease-in-out;
  opacity: 0;
}

h1:hover:after {
  opacity: 1;
}
<h1>CSS IS AWESOME</h1>

我已经在Jsfiddle号上试过这件了

推荐答案

设置为expand the bottom border on hover时,可以使用transform:scaleX'();(mdn reference),并在悬停状态下将其从0转换为1.

下面是边框悬停效果的示例: 扩展边框悬停效果

边框和转换设置在pseudo element上,以防止文本转换并避免添加标记

h1 { color: #666;display:inline-block; margin:0;text-transform:uppercase; }
h1:after {
  display:block;
  content: '';
  border-bottom: solid 3px #019fb6;  
  transform: scaleX(0);  
  transition: transform 250ms ease-in-out;
}
h1:hover:after { transform: scaleX(1); }
h1.fromRight:after{ transform-origin:100% 50%; }
h1.fromLeft:after{  transform-origin:  0% 50%; }
<h1 class="fromCenter">Expand from center</h1><br/>
<h1 class="fromRight">Expand from right</h1><br/>
<h1 class="fromLeft">Expand from left</h1>

Note : You need to add vendor prefixes to maximize browser support (see 100).

用两条线展开悬停时的下边框

当文本跨越两行时,可以实现这种效果.before伪元素绝对定位为使第一行的下划线为bottom:1.2em;:

h1 { position:relative;color: #666;display:inline-block; margin:0;text-transform:uppercase;text-align:center;line-height:1.2em; }
h1:after, h1:before {
  display:block;
  content: '';
  border-bottom: solid 3px #019fb6;  
  transform: scaleX(0);  
  transition: transform 250ms ease-in-out;
}
h1:before{
  position:absolute;
  bottom:1.2em; left:0;
  width:100%;
}
.ef2:hover:after {
  transition-delay:150ms;
}
  
h1:hover:after, h1:hover:before { transform: scaleX(1); }
<h1>Expand border<br/>on two lines</h1>
<br/>
<br/>
<h1 class="ef2">Expand border<br/>effect two</h1>

向内和向外悬停时的不同过渡方向:

重点是在悬停状态下将变换原点位置从一侧更改为另一侧.这样,当元素不再悬停时,底部波达enters from one side on hover and exits on the other

h1 { color: #666;display:inline-block; margin:0;text-transform:uppercase; }
h1:after {
  display:block;
  content: '';
  border-bottom: solid 3px #019fb6;  
  transform: scaleX(0);  
  transition: transform 250ms ease-in-out;
}
h1.fromLeft:after{ transform-origin: 100% 50%; }
h1.fromRight:after{  transform-origin:   0% 50%; }
h1.fromLeft:hover:after{ transform: scaleX(1); transform-origin:   0% 50%; }
h1.fromRight:hover:after{ transform: scaleX(1); transform-origin: 100% 50%; }
<h1 class="fromRight">Expand from right</h1><br/>
<h1 class="fromLeft">Expand from left</h1>

Css相关问答推荐

当滚动到页脚时,是否可以隐藏固定元素?

在carousel组件上应用css转换时出现问题

如何防止背景重复图像被截断

此css Select 器的总体特性是什么?按钮:不是(#mainBtn,.cta)

可以在 JavaFX CSS 中同时使用 dropshadow 和 insideshadow 吗?

更改行数时更改 CSS 网格列

如何给三角形添加渐变?

在 WooCommerce 变体 Select 中转换属性文本以大写

如何禁用亚像素渲染或强制浏览器将属性舍入到最近的像素?

有没有办法让 mui v5 呈现没有 css-xxx 前缀的类名?

使用 CSS 在悬停时转换 SVG 路径的填充属性

在 中制作等宽的列

如何通过 JavaScript 重新触发 WebKit CSS 动画?

在CSS中将文本和 Select 框对齐到相同的宽度?

CSS Select /样式第一个词

从 css 添加标题属性

CSS过渡自动高度不起作用

名称-值对的语义和 struct

:last-child 没有按预期工作?

如何创建一个带点的
标签?