在输入焦点上更改元素的 translateY

Posted

技术标签:

【中文标题】在输入焦点上更改元素的 translateY【英文标题】:Change translateY of element on input focus 【发布时间】:2015-06-12 18:18:24 【问题描述】:

当用户专注于输入时,我正在尝试对元素应用效果。我读过我可以通过使用 css 选择器(+、~、>)在不使用 jQuery 的情况下实现这一点。那么问题是客户端使用Contact From 7 呈现大量代码。

这里是代码

<div class="theInput">
    <span class="wpcf7-form-control-wrap your-name">
        <input type="text" name="your-name" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required effectForm" aria-required="true" aria-invalid="false" />
    </span>
    <span class="theLabel" id="your-name">Name</span>
</div>

如您所见,“spans”来自联系表格 7。我正在尝试使用 css 选择器“+”翻译类 theLabel

到目前为止我已经尝试过什么

最后的想法是尽可能详细地介绍课程

span.wpcf7-form-control-wrap.your-name input.wpcf7-form-control.wpcf7-text.wpcf7-validates-as-required.effectForm:focus + .theLabel
    transform:translateY(-25px);
    

一个想法是通用的

input:focus + .theLabel

其他想法过于笼统

input:focus .theLabel

还有很多其他的组合,都失败了。我知道我做错了什么。但我找不到什么。

谢谢你:)

【问题讨论】:

【参考方案1】:

您正在尝试使用 CSS 选择父元素的同级元素。请参阅此相关答案:CSS: how to select parent's sibling

如果您可以编辑 html,则可以将输入 HTML 元素移动到与 span.theLabel 元素相同的 DOM 层次结构级别,以使您能够使用 CSS 同级选择器 (+)。 this fiddle 中有一个示例。

HTML

<!-- the span wrapper around the input has been removed, moving the input to the same
DOM tree level. -->

<div class="theInput">
  <input type="text" name="your-name" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required effectForm" aria-required="true" aria-invalid="false" />
  <span class="theLabel" id="your-name">Name</span>
</div>

CSS

/* Note the display:inline-block needed for the transform to work as well as vendor
prefixes */

input.wpcf7-text:focus + span 
            display: inline-block;
  -webkit-transform: translateY(-25px);
      -ms-transform: translateY(-25px);
          transform: translateY(-25px);

如果您无法更改 HTML 标记,则需要使用 javascript 来选择 span.theLabel,如顶部链接答案所示。

【讨论】:

感谢您的回答 :) 不幸的是,我无法更改 html。 (我必须自己编辑插件,并且在第一次更新时它会坏掉)。我最终为此使用了 JS。

以上是关于在输入焦点上更改元素的 translateY的主要内容,如果未能解决你的问题,请参考以下文章

如何使整个表单(输入和提交按钮)在焦点上更改边框颜色(引导程序 3)

当输入在标签之后时如何更改输入焦点上的标签? [复制]

更改焦点上的离子输入边框颜色

在焦点上更改占位符文本

以角度更改焦点上的输入类型

更新谷歌地图会从表单元素中窃取焦点