Как добавить стиль к активному входу предыдущий брат, используя только CSS
Например, если у меня есть много этого:
<div class="form-group">
<div class="col-xs-2"><label for="USER_FORM___unique_id" class="control-label">Employee ID</label> </div>
<div class="col-xs-5"><input disabled="disabled" type="text" class="form-control" id="USER_FORM___unique_id__orig" value="20141100497"> </div>
<div class="col-xs-5"><input type="text" class="form-control" id="USER_FORM___unique_id" value="20141100497"> </div>
</div>
<div class="form-group">
<div class="col-xs-2"><label for="USER_FORM___name" class="control-label">Name</label> </div>
<div class="col-xs-5"><input disabled="disabled" type="text" class="form-control" id="USER_FORM___name__orig" value="20141100497"> </div>
<div class="col-xs-5"><input type="text" class="form-control" id="USER_FORM___name" value="Me me me me"> </div>
</div>
<!-- and so on -->
-
Я хочу добавить границу в родительский div.form-group
, только когда последний внутренний input.col-xs-5
сфокусированный/зависающий
-
или выделение label.control-label
только в том случае, если атрибут for ссылается на сфокусированный /hoevered
Можно ли использовать CSS
только для этого?
Я знаю, что это возможно, используя jQuery
, добавив onfocus="highlight(this)"
, onblur="highlight(this)"
, onmouseenter="highlight(this)"
и onmouseleave="highlight(this)"
на последнем входе:
function highlight(el) {
el = $(el);
var focused = el.is(":focus");
var style1 = focused ? '1px solid blue' : '';
$(el).parent().css('border',style1); // 1
var style2 = focused ? 'underline' : '';
$(el).prev().prev().css('text-decoration',style2); // 2
}
Ответы
Ответ 1
[Это взлом, но работает]
Если вы можете изменить свою разметку, вы можете добавить div
после input.form-control
и имитировать родительский стиль для этого div
вместо родительского div.form-group
. Пример:
.form-group {
position: relative;
border:1px solid blue;
display:inline-block;
padding:20px;
}
.form-control:focus + div {
position: absolute;
top:0;
bottom:0;
left:0;
right:0;
border:1px solid red;
}
<div class="form-group">
<div class="col-xs-2"><label for="USER_FORM___name" class="control-label">Name</label></div>
<div class="col-xs-5"><input disabled="disabled" type="text" class="form-control" id="USER_FORM___name__orig" value="20141100497" /></div>
<div class="col-xs-5">
<input type="text" class="form-control" id="USER_FORM___name" value="Me me me me" />
<div></div> <!-- additional markup -->
</div>
</div>