CSS3不透明效果

时间:2015-01-09 19:35:04

标签: html css css3

我发现一段CSS代码在我的网站上运行得很好,但是我觉得麻烦这个效果与规格完全一致。

我尝试做的事情:我希望默认情况下的图像的不透明度为1.0,但是当您滚动任何图像时,图像的不透明度将达到0.3。这当前有效,你可以在这里查看jsfiddle:http://jsfiddle.net/raybullard/C8NMs/

下面是HTML和CSS:

<div id="wrap">
<div id="columns" class="columns_3">
    <div class="figure">
        <a href="http://www.burton.com"><img src="http://i.imgur.com/ruU04I6.jpg"></a>
       </div>
    <div class="figure">
        <a href="http://www.burton.com"><img src="http://i.imgur.com/ruU04I6.jpg"></a>
       </div>
    <div class="figure">
        <a href="http://www.burton.com"><img src="http://i.imgur.com/ruU04I6.jpg"></a>
       </div>
    <div class="figure">
        <a href="http://www.burton.com"><img src="http://i.imgur.com/ruU04I6.jpg"></a>
       </div>
    <div class="figure">
        <a href="http://www.burton.com"><img src="http://i.imgur.com/ruU04I6.jpg"></a>
       </div>

#wrap{
width:240px;
}
.columns_3 .figure{
width:70px;
margin-right:0px;
}
.columns_3 .figure:nth-child(3){
margin-right: 0;
}

#columns .figure:hover{
-webkit-transform: scale(1.1);
-moz-transform:scale(1.1);
transform: scale(1.1);

}
#columns:hover .figure:not(:hover) {
opacity: 0.4;
}
div#columns .figure {
display: inline-block;
background: #FEFEFE;
border: 2px solid #FAFAFA;
box-shadow: 0 1px 2px rgba(34, 25, 25, 0.4);
margin: 3px 3px 3px 0px;
-webkit-column-break-inside: avoid;
-moz-column-break-inside: avoid;
column-break-inside: avoid;
background: -webkit-linear-gradient(45deg, #FFF, #F9F9F9);
opacity: 1;
-webkit-transition: all .3s ease;
-moz-transition: all .3s ease;
-o-transition: all .3s ease;
transition: all .3s ease;
-moz-border-radius: 5px;
border-radius: 5px;
}

div#columns .figure img {
width: 60px;
height:50px;
border-bottom: 1px solid #ccc;
margin-bottom: 0px;
}

问题是整个#columns div被调出,因为我只有5个图标,如果你滚动到第六个图标应该是&#39;整个div改变了不透明度。

我想做的是,当用户滚动图标(如果可能)时,让非活动图标在.figure级别(而不是#columns级别)将不透明度更改为0.3。

感谢任何帮助/建议!

感谢。

3 个答案:

答案 0 :(得分:2)

只需将 display:inline 的属性值添加到CSS代码的 #columns 块,就可以了。

解决方案:将 display:inline 的属性值添加到 #columns 使其在技术上仅存在于包含某些内容的区域。< / p>

#columns {
  display: inline;
 /* This block of CSS solves your problem */
}
#wrap {
  width: 240px;
}
.columns_3 .figure {
  width: 70px;
  margin-right: 0px;
}
.columns_3 .figure:nth-child(3) {
  margin-right: 0;
}
#columns .figure:hover {
  -webkit-transform: scale(1.1);
  -moz-transform: scale(1.1);
  transform: scale(1.1);
}
#columns:hover .figure:not(:hover) {
  opacity: 0.4;
}
div#columns .figure {
  display: inline-block;
  background: #FEFEFE;
  border: 2px solid #FAFAFA;
  box-shadow: 0 1px 2px rgba(34, 25, 25, 0.4);
  margin: 3px 3px 3px 0px;
  -webkit-column-break-inside: avoid;
  -moz-column-break-inside: avoid;
  column-break-inside: avoid;
  background: -webkit-linear-gradient(45deg, #FFF, #F9F9F9);
  opacity: 1;
  -webkit-transition: all .3s ease;
  -moz-transition: all .3s ease;
  -o-transition: all .3s ease;
  transition: all .3s ease;
  -moz-border-radius: 5px;
  border-radius: 5px;
}
div#columns .figure img {
  width: 60px;
  height: 50px;
  border-bottom: 1px solid #ccc;
  margin-bottom: 0px;
}
<div id="wrap">
  <div id="columns" class="columns_3">
    <div class="figure">
      <a href="http://www.burton.com">
        <img src="http://i.imgur.com/ruU04I6.jpg">
      </a>
    </div>
    <div class="figure">
      <a href="http://www.burton.com">
        <img src="http://i.imgur.com/ruU04I6.jpg">
      </a>
    </div>
    <div class="figure">
      <a href="http://www.burton.com">
        <img src="http://i.imgur.com/ruU04I6.jpg" />
      </a>
    </div>
    <div class="figure">
      <a href="http://www.burton.com">
        <img src="http://i.imgur.com/ruU04I6.jpg" />
      </a>
    </div>
    <div class="figure">
      <a href="http://www.burton.com">
        <img src="http://i.imgur.com/ruU04I6.jpg" />
      </a>
    </div>

答案 1 :(得分:0)

我不知道你是否对jquery开放,但这是一个jquery的解决方案:http://jsfiddle.net/C8NMs/6/

此解决方案适用于具有类.figure的所有元素,无论您将它们放在页面上的什么位置。

$(document).ready(function() {
    $('.figure').on('mouseover', function() {
        var element = $(this);
        $('.figure').not(element).css('opacity', 0.4);
    })
    $('.figure').on('mouseout', function() {
        $('.figure').css('opacity', 1);
    });
});

答案 2 :(得分:0)

这种情况正在发生,因为列div扩展到其子节点的大小,并且正在悬停。

如果您不需要在布局的其余部分中进行更多定位,则可以将其剪切

.columns_3 {
    height: 0px;
}

所以避免它被徘徊

demo