微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

悬停并单击CSS三角形

我有一个带有 javascript函数的三角形可以移动该图像.

问题是该元素具有方形形状,因此在三角形之外触发点击和悬停状态(参见下图中的红色部分):

如何防止悬停并在三角形外部单击并仅允许在三角形内部单击/悬停状态?

解决方法

要防止悬停并在CSS三角形外部单击,可以使用变换来制作三角形.

这里描述了这种技术:CSS Triangles with transform rotate

关键是要使用一个带有隐藏溢出的包装器并旋转可点击/可移动元素,使其实际上具有三角形形状,并防止点击事件或悬停状态在三角形外部.

演示:Click and hover on a CSS triangle

.tr {
  width: 40%;
  padding-bottom: 28.2842712474619%; /* = width / sqrt(2) */
  position: relative;
  overflow: hidden;
}
.tr a {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  background-color: rgba(0,122,199,0.7);
  transform-origin: 0 100%;
  transform: rotate(45deg);
  transition: background-color .3s;
}
/** hover effect **/
.tr a:hover {
  background: rgba(255,165,0.7);
}
<div class="tr"><a href="#"></a></div>

另一种方法是使用带有可点击三角形的SVG:

#tr{
  fill:transparent;
  transition:fill .3s;
}
#tr:hover{
  fill: orange;
}

/** for the demo **/
html,body{height:100%;margin:0; padding:0;}
body{background:url('https://farm8.staticflickr.com/7435/13629508935_62a5ddf8ec_c.jpg') center no-repeat;background-size:contain;}
svg{display:block;width:30%;margin:0 auto;}
<svg viewBox="-2 -2 104 64">
  <a xlink:href="#">
    <polygon id="tr" points="50 0 100 60 0 60" fill="transparent" stroke="darkorange" stroke-width="2"/>
  </a>
</svg>

原文地址:https://www.jb51.cc/css/215587.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。