【问题标题】:Hover opacity effects with margins in css and .LESS在 css 和 .LESS 中悬停不透明度效果与边距
【发布时间】:2012-04-11 03:15:13
【问题描述】:

所以基本上,我有这个只有 4 个链接的小图像导航菜单。

<div class="home_featured_links">
    <a class="hf_link" href="<?=site_url('articles');?>"><img src="<?=site_url('assets/default/images/cta1.png');?>" /></a>
    <a class="hf_link" href="<?=site_url('drills');?>"><img src="<?=site_url('assets/default/images/cta2.png');?>" /></a>
    <a class="hf_link" href="<?=site_url('games');?>"><img src="<?=site_url('assets/default/images/cta3.png');?>" /></a>
    <a class="hf_link" href="<?=site_url('recruiting');?>"><img src="<?=site_url('assets/default/images/cta4.png');?>" /></a>
</div>

我想要做的是让它工作,以便图像全部处于不透明度 100(1.0),除非将一个悬停在这种情况下,未悬停的图像切换到不透明度 25(.25) 所以如果将其中任何一个悬停在上面,则 4 个图像中只有一个完全不透明。

现在我已经完成了这项工作,但是我将 4 图像链接与 14px 的边距隔开,并且根据我到目前为止编写的规则,如果我将鼠标悬停在任何边距上,那么所有 4 张图像的不透明度都为 25,我认为在这种情况下以不透明度 100 显示它们会更好。

我可以用一些 jquery 甚至在两者之间添加一些填充 div 来做到这一点,但我想知道是否有人会知道一种更好的方法,即纯 css/less。

CSS:

.home_featured_links {clear:both;float:left;margin-left:22px;margin-top:10px;}
.hf_link {float:left;display:block;width:220px;height:153px;margin-right:14px;}
.home_featured_links:hover .hf_link {.opacity(25);}
.home_featured_links:hover .hf_link:hover {.opacity(100);

【问题讨论】:

  • 除非我忽略了一些额外的父 div,它紧紧地包裹在 4 个图像链接周围似乎是唯一的出路..
  • 啊,所以像 .home_featured_link:hover .new_parent:hover .hf_link 这样的额外规则......让我试试
  • 啊,那没用,或者我无法概念化正确的 css 规则来编写...帮助?

标签: css hover less


【解决方案1】:

如果你想做纯css的方式,我有一个解决方案给你:(我已经测试过了)

CSS:(请注意,我已删除边距并使用绝对定位放置它,因为您知道宽度是 220px)

.home_featured_links {clear:both;float:left;margin-left:22px;margin-top:10px;
position: relative;
}
.hf_link {
display:block;width:220px;height:153px;
position: absolute;
}

.hf_link1 {
left: 0px;
}

.hf_link2 {
left: 234px; /* 0px + 220px + 14px */
}

.hf_link3 {
left: 468px; /* 234px + 220px + 14px */
}

.hf_link4 {
left: 702px; /* 468px + 220px + 14px */
}

.home_featured_links:hover .hf_link {.opacity(25);}
.home_featured_links:hover .hf_link:hover {.opacity(100); }

HTML:(注意我添加了4个类)

<div class="home_featured_links">
    <a class="hf_link hf_link1" href="<?=site_url('articles');?>"><img src="<?=site_url('assets/default/images/cta1.png');?>" /></a>
    <a class="hf_link hf_link2" href="<?=site_url('drills');?>"><img src="<?=site_url('assets/default/images/cta2.png');?>" /></a>
    <a class="hf_link hf_link3" href="<?=site_url('games');?>"><img src="<?=site_url('assets/default/images/cta3.png');?>" /></a>
    <a class="hf_link hf_link4" href="<?=site_url('recruiting');?>"><img src="<?=site_url('assets/default/images/cta4.png');?>" /></a>
</div>

【讨论】:

  • 就像一个魅力。谢谢。我宁愿避免绝对定位,但我想如果我想做纯粹的 css 就别无选择了。 +1
【解决方案2】:
.home_featured_links {clear:both;float:left;margin-left:22px;margin-top:10px;}
.hf_link {float:left;display:block;width:220px;height:153px;margin-right:14px;}
.home_featured_links:hover .hf_link { opacity: 0.25;}
.home_featured_links:hover .hf_link:hover { opacity: 1;}

【讨论】:

  • 没有。 .opacity() 是由 .less 提供的过滤器......不必担心这种愚蠢的 Microsoft 已弃用的 opacity 属性。
  • 我明白了。我花了一些时间弄清楚如何做到这一点并找到了解决方案。看看我发布的另一个答案。问候。
猜你喜欢
  • 2013-06-17
  • 1970-01-01
  • 2017-04-26
  • 2019-01-03
  • 2020-02-12
  • 2014-03-04
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多