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