Css 以div的所有直接子对象(图像除外)为目标

Css 以div的所有直接子对象(图像除外)为目标,css,css-selectors,Css,Css Selectors,是否可以针对除图像之外的div的所有直接子对象?使用:not-选择器或类似工具 例如: 使用媒体查询,div.wrapper中的所有元素都应该得到左/右填充,图像除外。它们应该是视口的全宽 我试过: .wrap > :not(img) {padding: 0 10px;} // (not working - EDIT: works!) .wrap * :not(img) {padding: 0 10px;} // Creates a double padding on child-&g

是否可以针对除图像之外的div的所有直接子对象?使用
:not
-选择器或类似工具

例如:

使用媒体查询,div.wrapper中的所有元素都应该得到左/右填充,图像除外。它们应该是视口的全宽

我试过:

.wrap > :not(img) {padding: 0 10px;} // (not working - EDIT: works!)

.wrap * :not(img) {padding: 0 10px;} // Creates a double padding on child->child elements.
.wrap>*:not(img){padding:0 10px;}
(其功能与
.wrap>相同:not(img)

演示:
但是,如果IE8-或其他不支持
:not
的旧浏览器存在问题,请使用以下浏览器:

.wrap > * {padding: 0 10px;}
.wrap > img {padding: 0;}

演示:

你说得对,但是你能解释一下为什么OP的代码不起作用吗“你只需要组合
*
选择器。”不,你不需要
*
-这是暗示。第一个应该起作用。而不是设置
填充:0 10px
,只要尝试一下显示:无,您就会看到它实际上在这里工作。此外,我无法想象
填充:0 10px
如何影响
img
?请注意,
img
不是一个容器。这似乎是一个特定于浏览器的问题。您标记为“(不工作)”的选择器在Chrome()中工作正常。您使用的是哪种浏览器?编辑:此评论与此问题的第一次修订有关。@JamesDonnelly:你说得对!第一个例子确实有效。我只是在我的类名上有一个输入错误。。。我已经编辑了我的问题。