bounty将在4天后过期。回答此问题可获得+200声望奖励。user1186050正在查找规范答案:如果你能修改Stackblitz,使元素占位符在聚焦时浮动,文本在不聚焦时隐藏,在聚焦时显示,就像Bootstrap浮动标签一样,我会奖励你的分数
我想用浮动标签来设计我的Stripe.js元素(卡号、Cvc、有效期),以与我的其他引导浮动标签保持一致。我使用ngx-stripe作为Stripe.js的 Package 器。我已经能够使它们看起来与我的其他引导元素相似,但当这里给出焦点时,它们不会浮动。
Stripe在这里有一些关于浮动标签外观的信息,但是在尝试了不同的东西之后,什么都没有改变!所以我可能没有正确地使用它,或者我的引导类可能会干扰Stripe CSS?
- https://stripe.com/docs/elements/appearance-api?platform=web#form-inputs---floating-labels
- https://stripe.com/docs/elements/appearance-api?platform=web#others
下面是使用bootstrap的浮点类时卡号元素的样子:
<div class="form-floating mb-3">
<div id="floatingNumber" class="form-control stripe-form-control" placeholder="ex. 1111 1111 1111 1111"></div>
<label for="floatingNumber">Card Number</label>
</div>
图片来自我的Stackblitz
你可以看到标签和文本的位置是固定的,它们不会浮动。
这是我的Stackblitz已经设置好了。这是我尝试的。
1.添加了引导浮动类
1.在创建条纹元素时,我添加了外观:外观中的{ labels:'floating' }
1.添加了“stripe-form-control”作为类-可在Stripe网站上找到
2条答案
按热度按时间fumotvh31#
我不是一个Maven,在Angular ,引导,或条纹,但我只是阅读文件。
首先,为了使引导浮动标签工作,它要求
<input>
和<label>
是兄弟,因为浮动标签将工作,因为:placeholder-shown
伪元素。这里的问题是,你的挂载条带元素不是一个输入,他们成为一个输入 Package iframe,所以引导浮动标签不会工作,没有一些调整。其次,您提到了stripe API文档,其中说明我们可以使用
{ labels: 'floating' }
,但在尝试之后,发现它仅适用于作为 Package 载的元素(不确定它的名称),其中一个元素是address
,它之所以有效,是因为标签位于iframe内部(我在下面的Stackblitz链接上附上了证明)。然后,为了在挂载的元素上使用标签,我们必须使用this method。不幸的是,该方法没有将标签注入到iframe内部,它仍然在外部。因此外观API中的浮动标签无法工作。尽管在iframe内部,但幸运的是,输入仍然可以在iframe外部更改类(它可以给予
StripeElement--focus
、StripeElement--complete
和StripeElement--invalid
),因此我们可以模仿引导浮动标签的行为,并通过复制引导行为将其实现到我们的定制代码中。我能想到的最简单的解决方案是添加以下CSS:
然后清空占位符(因为我们要使用浮动标签):
Here is the working altered Stackblitz
lmvvr0a82#
我对你的代码做了一点改动,用set input代替了div。你想这么做吗?https://stackblitz.com/edit/angular-kauqxz?file=src%2Ftest%2Fstripe%2Fstripe.component.css,src%2Ftest%2Fstripe%2Fstripe.component.html
它使用名称输入,bc表示名称,您有一个
input
,而不是div
标记在这里,您可以看到您尝试使用的样式包括
:focus
伪类,但它不适用于divdiv:focus
-〉它不工作input:focus
-〉它工作正常