[英]How do I create this hover button Using HTML, css and javascript
`
/* Button */.button { margin: 1em 0em; }.circle { width: 50px; height: 50px; border-radius: 50%; background: #1A718A; position:relative; }.button h3{ position:relative; top:3.4em; left:.5em; color: white; font-weight: 400;important: font-size.;9em:important; z-index. 1: }:circle;hover { position:relative; top:1em; left:3em; }
<div class="button"> <div class="text"><h3>- View <span>Work</span></h3></div> <div class="circle"></div> </div> <!--button-->
`如何使用 HTML、css 和 ZDE9B9ED78D7E2E1DCEEFFEE780E2F99 创建此 hover 按钮。
圆圈向右移动(无效果),而视图变为灰色,作品变为白色(反向)。
也是代码新手:)
默认 State
Hover state
谢谢
我们想要为元素及其文本“- View Work”设置动画,所以我们可以拥有的最简单的 HTML 是:
<p>- View Work</p>
然后我们可以根据需要设置它的样式。 要将线放在中间,我们可以通过使用一点 JavaScript 将line-height
设置为元素的height
来进行一些小技巧:
const p = document.querySelector('p'); p.style = '--height:' + getComputedStyle(p).getPropertyValue('height');
p { position: relative; border: 1px solid black; color: black; background-color: #f3f3f3; width: 14rem; height: 10rem; font-weight: bold; font-family: sans-serif; text-align: center; line-height: var(--height); text-transform: uppercase }
<p>- View Work</p>
现在我们要添加圆形,其中文本的颜色不同。
我们可能会以某种方式使用mix-blend-mode
,但是我对它的理解还不够好,无法让它与它一起工作。
因此,我们回退到使用伪元素(更具体地说, ::after
)。
伪元素需要...:
前两个要点就像为伪元素和父元素设置样式一样简单,方式大致相同。
要获取文本,我们可以通过设置自定义数据属性(例如data-text
)来再次使用 JavaScript 来获取文本。 然后伪元素可以显示带有content: attr(data-text)
。
对于显示圆,我们给伪元素一个背景色。 然后,我们使用clip-path
剪掉应该“显示”的内容。
在 hover 上,我们在显示圈的两个不同位置之间进行转换。
const p = document.querySelector('p'); p.dataset.text = p.innerText; p.style = '--height:' + getComputedStyle(p).getPropertyValue('height');
p { position: relative; border: 1px solid black; color: black; background-color: #f3f3f3; } p, p::after { width: 14rem; height: 10rem; font-weight: bold; font-family: sans-serif; text-align: center; line-height: var(--height); text-transform: uppercase } p::after { content: attr(data-text); position: absolute; top: 0; left: 0; color: white; background-color: #1A718A; clip-path: circle(3rem at 70px 55px); transition: clip-path 0.15s;; pointer-events: none; } p:hover::after { clip-path: circle(3rem at 155px 100px); }
<p>- View Work</p>
此示例代码仅适用于单行,并且要求元素具有固定大小。 这种效果也可以通过主要使用 JavaScript 来实现,其中可以用实际的 HTML 元素模拟这样的伪元素,然后将所述元素覆盖在原始元素上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.