【问题标题】:Hide a .gif if it is beside another .gif如果 .gif 在另一个 .gif 旁边,则隐藏它
【发布时间】:2013-09-24 21:31:29
【问题描述】:

我有一项服务,人们可以上传他们的图片,并将它们显示在我的网站上。如果.gif 上传到另一个.gif 旁边,我想自动隐藏它。

我不希望这影响以.png.jpg.. 结尾的图像。仅.gifs

这是一个图像示例..

如果连续三个.gifs,只显示第一个。

我试过选择它并隐藏它,但这根本不起作用。

img > .gif{
    display:none;
}

我需要使用 JavaScript 或 jQuery 来实现吗?

【问题讨论】:

  • 如果连续有 3 个或更多 gif,应该只有一个可见吗?
  • 是的。如果连续有 3 个,您可以看到我的图像,只显示第一个。

标签: javascript html css css-selectors


【解决方案1】:

您可以使用@Tomzan 对 CSS 选择器的回答:元素 + 元素(由于声誉低,我无法发表评论)[http://www.w3schools.com/cssref/sel_element_pluss.asp]:

.gif + .gif { display: none; } 

或者没有自定义类@yours CSS (http://www.w3schools.com/cssref/sel_attr_contain.asp):

img[src*=".gif"] + img[src*=".gif"] {display: none}

来自 W3c 对于这个答案的所有 CSS 选择器:

注意:要在 IE8 和更早版本中使用元素+元素, 必须声明。

更新 首先,使用 CSS 类适用于 IE7:http://msdn.microsoft.com/en-us/library/ie/aa358818(v=vs.85).aspx

【讨论】:

  • 抱歉,刚才我可以看到你的答案:和我的很接近。我可以删除我的帖子,你可以添加 W3 引用你怎么看? (由于声誉,我无法发表评论,bleh :P)
  • 此外,还有 2 个选项可以实现这一点:使用类或使用属性。 CSS 类也适用于旧浏览器 (IE7)
  • 相邻选择器在 IE7 下工作,但 [attribute$="value"] 不起作用。无论如何,对不起@JoshC,下次我会更加小心。
【解决方案2】:

只要写:

.gif + .gif {
    display: none;
} 

【讨论】:

  • 是的 - 它肯定会工作,但是这需要一个不需要的类。
【解决方案3】:

您可以使用 纯 CSS 做到这一点 - 无需 Javascript/jQuery!

使用attribute selectordirect adjacent combinator 的组合:+1

这将在紧跟.gif 之后的任何gifs 上设置display:none;。因此,不会有超过两个.gifs 出现在彼此旁边。

img[src$=".gif"] + img[src$=".gif"] { 
    display:none;
}

jsFiddle demo here!


1IE8及以下属性选择器和直接相邻组合器的使用为not fully supported

【讨论】:

  • 很好地使用“属性以”选择器结尾,但这不会隐藏除第一个 gif 之外的所有内容吗?我认为 OP 需要澄清。
  • 根据提供的图片。
  • @WesleyMurch 感谢您的帮助。连续 3 个应该只显示最后一个
  • +1 用于,呃,催眠生成的化身。请注意,您不能编写一个动态选择器,它会在另一个具有相同属性值的元素之后选择具有该属性值的元素 - 如果您需要将此应用于所有图像格式,则需要为每种格式重复选择器。
猜你喜欢
  • 2019-02-04
  • 2011-07-25
  • 1970-01-01
  • 2018-09-05
  • 2016-03-26
  • 2019-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多