【发布时间】:2014-08-08 20:18:07
【问题描述】:
假设你有类似的东西:
<div class="parent">
<input class="childInput" type="text" />
<div class="sibling"></div>
</div>
我想在孩子获得焦点时更改父母/兄弟姐妹的外观。有什么 CSS 技巧可以做这样的事情吗?
编辑:
我的问题原因如下:
我正在创建一个需要可编辑文本字段的 Angular 应用程序。在单击之前,它应该看起来像一个标签,此时它应该看起来像一个普通的文本输入。我基于 :focus 对文本字段进行了样式设置以实现此效果,但文本被文本输入的边界截断。我还使用 ng-show、ng-hide、ng-blur、ng-keypress 和 ng-click 根据模糊、按键和点击在标签和文本输入之间切换。这工作得很好,除了一件事:标签的 ng-click="setEdit(this, $event)" 将 ng-show 和 ng-hide 使用的编辑布尔值更改为 true 后,它使用 jQuery 调用 .select()文本输入。但是,直到 ng-click 完成后,所有内容都被 $digest'd 了,因此文本输入再次失去焦点。由于文本输入实际上从未获得焦点,因此使用 ng-blur 恢复显示标签是有问题的:用户必须单击文本输入,然后再次单击它才能恢复显示标签。
编辑:
这是一个问题的示例:http://plnkr.co/edit/synSIP?p=preview
【问题讨论】:
-
javascript 没有选择?
-
这个不能只用CSS,需要用js。
-
是的,但我很好奇它是否可以通过造型来完成。我将添加一个编辑以了解我提出问题的原因。
-
仅使用 CSS 无法完成父匹配。仅当元素与定义元素相邻时,才能进行兄弟匹配。见developer.mozilla.org/en-US/docs/Web/CSS/…
-
看到这个stackoverflow.com/questions/14402514/…这是同样的问题
标签: javascript html css angularjs focus