Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CSS嵌套属性。。。至少我希望';就是这样';这叫什么_Css_Nested - Fatal编程技术网

CSS嵌套属性。。。至少我希望';就是这样';这叫什么

CSS嵌套属性。。。至少我希望';就是这样';这叫什么,css,nested,Css,Nested,我想知道是否有一种方法可以使用css以某种方式设计包装器,只要包装器中有一个带有特定id的div。假设我有 <div class="intro_wrapper"></div> 在整个站点的多个位置,但仅当它 <div class="intro_wrapper"> <div id="slider"></div> </div> 里面有#滑块。问题是,当#slider嵌套在其中时,我想让它有更少的填充空间,这样

我想知道是否有一种方法可以使用css以某种方式设计包装器,只要包装器中有一个带有特定id的div。假设我有

<div class="intro_wrapper"></div>

在整个站点的多个位置,但仅当它

<div class="intro_wrapper">
    <div id="slider"></div>
</div>

里面有
#滑块
。问题是,当
#slider
嵌套在其中时,我想让它有更少的填充空间,这样我就不能在不切断内容的情况下真正弄乱
#slider
的边距。我试着使用负边距,但它最终以一种奇怪的方式切断了我的图像


我知道你可以用
p+p
这样的东西来处理后面有段落的段落,所以我想可能有一种方法可以完成我正在尝试的事情。提前感谢。

此时,您无法使用任何CSS规则作为反向组合器来基于子对象在父对象上应用样式。相反,你可以通过给孩子增加一个边距来破解它

div.intro_wrapper > #slider
{
  margin:20px;
}

虽然我认为PSL的答案已经很好了(跨浏览器、简单等),但如果您真的需要使用父选择器,它并没有帮助。虽然目前最好尽可能避免这种情况,但在某些情况下可能需要父选择器(或类似的选择)

如果必须使用父选择器,一种解决方案是jquery,它的选择器引擎会识别选择器,例如,您可以执行以下操作:

$("#slider:parent").addClass('padded_intro_wrapper');
$('#slider').closest('.intro_wrapper').addClass('padded_intro_wrapper');
然后在CSS中:

.padded_intro_wrapper
{
  padding: 20px;
}
同样,如果
#滑块
div并不总是在
.intro\u包装器
div中,您可以执行以下操作:

$("#slider:parent").addClass('padded_intro_wrapper');
$('#slider').closest('.intro_wrapper').addClass('padded_intro_wrapper');
这就是它开始变得有点混乱的地方


编辑:

不幸的是,没有。但似乎将来会有一个允许(
.intro\u wrapper!#slider
)是的,我刚刚发现一篇帖子说,显然CSS4将使用它???@OneTrickPony:(不幸的);虽然我希望这将在CSS 4实际发布候选版本之前进行修订,但浏览器供应商忽略了这一点,并以任何方式实施,或者(最坏的情况下)CSS 4将作为实现细节的beta测试,并且可能包含在CSS 5中(真实)。这是一个遗憾,因为许多人期望这一功能:(@OneTrickPony:当然。我想要这个(我也更喜欢使用
:subject
伪类,而不是任意的标点符号;然而,工作组的存在似乎是为了挫败我的愿望)。是的,我的问题比这要复杂一点,但使用填充只是为了使问题更容易提问。@user1470242您应该编辑问题以消除误解的可能性。@user1470242此时没有办法。因此,您可能可以使用这些行,例如添加包装(有边距)以防您的特定div出现。但我不知道您的情况。@user1470242:我不想,我想帮助您;但我不能,因为我和其他人(在写作时)不知道您遇到了什么问题(尽管我们了解大致轮廓)。但是,如果您想关闭问题,您可以单击问题标签下方的“删除”链接。我不明白为什么这是一个大问题?问题可能无法清楚(或正确)描述他的问题但这里至少有几个有用的答案似乎对他有所帮助。删除这个问题肯定会有点过火……我对jquery不太在行,但我很感激。我会看看我是否能想出办法让它发挥作用。如果有帮助的话,我会加上一把小提琴:)我不确定你是否会使用jquery(我不是在每个项目中都使用它)所以不幸的是,这个答案不是通用的,但据我所知,这是实现您所描述的父选择器的唯一方法,无需付出大量的努力。哦,太好了。我应该把它放在我的页面上的什么地方?我需要链接到任何脚本库或任何东西吗?您需要链接到页面上某个地方的jQuery,大多数人建议使用Google it CDN: