父元素应用样式时,它的重点是

问题描述 投票:0回答:6
 **CSS**

    #child:focus > #parent {
    color: white;
    } 

    **HTML**
    <div id="parent">
        <div id="child">
        </div>
    </div>

这是当孩子专注于应用样式父的正确方法是什么?

编辑:我的问题是我需要将这些样式为小型设备。所以我不能使用jQuery。这就是为什么我在媒体查询中的CSS尝试。

html css styles
6个回答
1
投票

首先,你需要一个tabindex属性添加到您的div,或者他们不能接收焦点。

我也包括代码从当孩子失去焦点父删除CSS类。

$("#child").focusin(function() {
  $(this).parent().addClass("focused");
});
$("#child").blur(function() {
  $(this).parent().removeClass("focused");
});
.focused {
  background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="parent" tabindex="-1">
  Parent Top
  <div id="child" tabindex="-1">
    Child
  </div>
  Parent Bottom
</div>

1
投票

你也可以使用jQuery为此:

$('#child:focus').parent().addClass('your_class');

1
投票

CSS没有选择器选择了水平......你需要解决你的问题用JS


0
投票

你可以做到这一点很简单的使用JQuery:

$(document).ready(function(){
if ($(window).width() < 960) {
    $('.child input').on('focus', function(){
    $('.parent').css({
    'background-color': 'blue'
    });
 });
   $('.child input').on('blur', function(){
    $('.parent').css({
    'background-color': 'lightgrey'
    });
 }); 
}
 
});
.parent {
 width: 300px;
 height: 300px;
 display: block;
 background: lightgrey;
}
input {
  width: auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<div class="parent">
  <div class="child"><input type="text"></div>
</div>

0
投票

这通过4th Level selecor伪类的作品一样jQuery implementation是可能的。

#parent:has(> #child) { /* styles to apply to the #parent */ }

但这是not currently supported by browsers

why we don't have a parent selector


0
投票

对于这个特殊的需要是在CSS实现:focus-within伪类。在您的例子下面的CSS会做你试图完成什么。我加tabindex#child使div可获得焦点。这是没有必要的元件本身可聚焦(例如,链接或形式的元件)。然而,它不是由IE和边缘的支持。计划switch to Blink rendering engine后边缘会支持它。

另见本CSS Tricks article

#parent {
  padding: 0.25em;
   background-color: crimson;
}

#parent:focus-within {
  color: white;
} 
  <div id="parent">
      <h1>Parent</h1>
      <div id="child" tabindex="0">
        <p>Child (click me!)</p>
      </div>
  </div>
© www.soinside.com 2019 - 2024. All rights reserved.