Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将SVG的div置于该div的悬停位置_Javascript_Jquery_Html_Css_Svg - Fatal编程技术网

Javascript 将SVG的div置于该div的悬停位置

Javascript 将SVG的div置于该div的悬停位置,javascript,jquery,html,css,svg,Javascript,Jquery,Html,Css,Svg,基本上 我有一个梯度条,悬停在USP的下方,梯度移动到USP上方的三角形上。现在我想弄清楚如何将SVG的中心移到悬停时USP内部的中心,使渐变看起来也有一个三角形。下面是一个有点硬的屏幕截图和代码笔 你的电话回答得很好 我们的小企业服务确保您抓住每一个机会,让您的企业看起来更大。Lorem ipsum dolor sit amet,是一位杰出的献身者。不,不,不,不。我是韦尔奥迪奥 电话应答 在此处尝试此操作,单击项目以查看喙的移动。这不是一个可用于生产的代码,但您可以从这里开始:) 加价

基本上

我有一个梯度条,悬停在USP的下方,梯度移动到USP上方的三角形上。现在我想弄清楚如何将SVG的中心移到悬停时USP内部的中心,使渐变看起来也有一个三角形。下面是一个有点硬的屏幕截图和代码笔


你的电话回答得很好

我们的小企业服务确保您抓住每一个机会,让您的企业看起来更大。Lorem ipsum dolor sit amet,是一位杰出的献身者。不,不,不,不。我是韦尔奥迪奥

电话应答


在此处尝试此操作,单击项目以查看喙的移动。这不是一个可用于生产的代码,但您可以从这里开始:)

加价

<div class="bar">

  <div class="bar-background">
    <div class="bar-slider"></div>
  </div>
</div>
<ul class="menu">
  <li class="menu-items">Item 1</li>
  <li class="menu-items">Item 2</li>
  <li class="menu-items">Item 3</li>
  <li class="menu-items">Item 4</li>
</ul>
JS


换句话说,你是想让三角形与“电话应答”div的梯度相匹配?所以它们看起来是一样的形状?是的,这是一个更好的解释方法,你解决了吗?
<div class="bar">

  <div class="bar-background">
    <div class="bar-slider"></div>
  </div>
</div>
<ul class="menu">
  <li class="menu-items">Item 1</li>
  <li class="menu-items">Item 2</li>
  <li class="menu-items">Item 3</li>
  <li class="menu-items">Item 4</li>
</ul>
$bar-height: 6rem;
$bar-slider-height: 2rem;
$bar-slider-background: #ffffff;
* {
  box-sizing: border-box;
}

html {
  font-size: 16px;
}

body {
  padding: 0;
  margin: 0;
}

.bar {
  position: relative;
}

.bar-background {
  background: -webkit-linear-gradient(
      left, 
      rgba(0, 175, 169, 1) 30%, 
      rgba(1, 180, 172, 0.15) 60%);
  height: $bar-height;
  overflow: hidden;
  width: 100%;
}

.bar-slider {
  height: $bar-slider-height;
  margin-top: $bar-height - $bar-slider-height;
  display: flex;
  width: 200vw;
  transition: transform 1s linear;
  &:before,
  &:after {
    content: "";
    width: 100vw;
    display: block;
    background: $bar-slider-background;
    height: $bar-slider-height;
  }
  &:before {
    transform: skew(45deg) translateX(-50%);
  }
  &:after {
    transform: skew(-45deg)  translateX(-50%);
  }
}

.menu {
    height: 2rem;
    display: flex;
    justify-content: space-around;
    align-items: center;
}
.menu-items {
  list-style: none;
}
var slider = $('.bar-slider'),
  sliderCenter = parseInt(slider.width() / 4, 10); // taking 1/4 here because our slider is twice the width of viewPort

$('.menu-items').on('click', function() {
  var activeClassName = 'is-active';
  $(this)
    .addClass(activeClassName)
    .siblings()
    .removeClass(activeClassName);

  var activeItem = $('.' + activeClassName),
    activeItemPositonFromLeft = activeItem.position().left,
    activeItemCenter = parseInt(activeItem.width() / 2, 10),
    newPos = parseInt(activeItemPositonFromLeft - sliderCenter + activeItemCenter, 10),
    translateX = 'translateX(' + newPos + 'px)';
  slider.css({
    transform: translateX
  });
});