css – 在悬停上展开底部边框

前端之家收集整理的这篇文章主要介绍了css – 在悬停上展开底部边框前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在边框在悬停上展开的边框上获得过渡效果
  1. h1 {
  2. color: #666;
  3. }
  4.  
  5. h1:after {
  6. position: absolute;
  7. left: 10px;
  8. content: '';
  9. height: 40px;
  10. width: 275px;
  11. border-bottom: solid 3px #019fb6;
  12. transition: left 250ms ease-in-out,right 250ms ease-in-out;
  13. opacity: 0;
  14. }
  15.  
  16. h1:hover:after {
  17. opacity: 1;
  18. }
  1. <h1>CSS IS AWESOME</h1>

我在@L_301_0@尝试过

解决方法

为了扩展悬停的底边界,可以使用transform:scaleX'(); ( mdn reference),并在悬停状态下将其从0转换为1。

边框和转换设置在伪元素上,以防止文本转换,并避免添加标记
要从左侧或右侧展开底部边框,您可以将transform-origin property更改为伪元素的左侧或右侧:

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

注意:您需要添加供应商前缀以最大限度地提高浏览器的支持(参见canIuse)。

使用2行在悬停上展开底部边框

当文本跨越2行时,可以实现此效果。以前的伪元素绝对定位为使第一行的下划线为底部:1.2em ;:

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

悬停进出的不同过渡方向:

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

猜你在找的CSS相关文章