【问题标题】:HTML z-index for filter effects用于滤镜效果的 HTML z-index
【发布时间】:2017-01-24 01:14:26
【问题描述】:

我正在为我的单选按钮使用图像。我知道 CSS 滤镜效果会影响 z-index 属性。

我已经创建了一个示例小提琴:

https://jsfiddle.net/iambong/2kcvv3bL/1/

CSS:

.colour-black{background-image:url(https://s28.postimg.org/p585381cd/Colour_Black.png);}
.colour-blue{background-image:url(https://s24.postimg.org/clxbf89g5/Colour_Blue_suede.png);}
.colour-chestnut-brown{background-image:url(https://s23.postimg.org/swdj7nh6z/Colour_Chestnut_Brown.png);}

.colour-selector input{
position:relative;
z-index:2 !important;
overflow: hidden;
background-repeat:no-repeat;
border: none;
margin:0;padding:0;
-webkit-appearance:none;
   -moz-appearance:none;
        appearance:none;
 }

.colour-selector input:active +.colour-cc{opacity: 0.9; position:relative;    z-index:2;}
.colour-selector input:checked +.colour-cc{
position:relative; 
z-index:2;
-webkit-filter: none;
   -moz-filter: none;
        filter: none;
}

.colour-cc{
positon:relative;
  z-index:3 !important;
background-size:contain;
background-repeat:no-repeat;
display:inline-block;
overflow: hidden;
padding: 8px;
margin-bottom: 8px;
align: left;
width:100px;height:70px;
-webkit-transition: all 100ms ease-in;
   -moz-transition: all 100ms ease-in;
        transition: all 100ms ease-in;
-webkit-filter: brightness(1.8) grayscale(1) opacity(.7);
   -moz-filter: brightness(1.8) grayscale(1) opacity(.7);
        filter: brightness(1.8) grayscale(1) opacity(.7);
}

.colour-cc:hover{
 positon:relative;
 z-index:10 !important;
 overflow: hidden;
 display:inline-block;
-webkit-filter: brightness(1.2) grayscale(.5) opacity(0.9);
   -moz-filter: brightness(1.2) grayscale(.5) opacity(0.9);
        filter: brightness(1.2) grayscale(.5) opacity(0.9);
-webkit-transform:scale(2.5); /* Safari and Chrome */
-moz-transform:scale(2.5); /* Firefox */
-ms-transform:scale(2.5); /* IE 9 */
-o-transform:scale(2.5); /* Opera */
 transform:scale(2.5);


}

HTML:

<p>Colour Selection</p>                  

 <div class="colour-selector"; style="position:relative; left:100px; top:50px; z-index:1;">

     <input id="colour-black" type="radio" name="properties[colour]" value="colour-black" style="position:relative; z-index:3;"/>
     <label class="colour-cc colour-black" for="colour-black"></label>
       <input id="colour-blue" type="radio" name="properties[colour]" value="colour-blue" style="position:relative; z-index:3;"/>
     <label class="colour-cc colour-blue" for="colour-blue"></label>
     <input id="colour-chestnut-brown" type="radio" name="properties[colour]" value="colour-chestnut-brown" style="position:relative; z-index:3;"/>
     <label class="colour-cc colour-chestnut-brown" for="colour-chestnut-brown"></label>

</div>

我想要的: 我希望实现的是,在鼠标悬停(悬停)时,放大的图像将是完整的,而不是显示相邻图像的一部分

现在出了什么问题: 如果您将鼠标悬停在中间图片上,则放大后的图片(使用 CSS 中的变换比例)会显示相邻图片的部分内容

感谢您的帮助!

【问题讨论】:

  • .colour-cc 中的过滤器创建了一个新的堆叠上下文。如果您可以不使用滤镜:亮度(1.2),您可以简单地移除滤镜,添加不透明度:0.7,它会按预期工作。否则,您需要让每个元素正确堆叠。
  • 嗨 walsh,是的,我知道过滤器会创建一个新的堆叠上下文。我已经尝试过您的解决方案,但它不起作用,因为不透明度也是一个过滤器,因此仍然有一个堆叠上下文

标签: html css filter radio-button z-index


【解决方案1】:

使用这样的东西:

#nav{z-index:2}
#nav li{display:inline-block;
    text-align:center;
    padding:10px;
    color:#fff;
   
    cursor:pointer;
height:50px;
  width:100px;
list-style-type:none;}

#nav ul li:nth-child(1){background:#b4b4b4;}
#nav ul li:nth-child(2){background:#cecece;}
#nav ul li:nth-child(3){background:#b4b4b4;}


#nav ul:hover li {
          transform: translateX(-24%);
    z-index:4;
}
#nav ul:hover li:hover {
 
          transform: scale(1.5);
          transition-duration: 0.18182s;
}
#nav li:hover ~ li {
          transform: translateX(24%);
    
}
<div id="nav">
    <ul>
    <li><p></p></li>
    <li><p></p></li>
    
    
    <li><p></p></li></ul>
    
    
          
        
    </div>

【讨论】:

  • @Bill 希望这对你有帮助:)
  • 感谢您的想法/帮助我试图实现您的代码,但 1) 我希望保留单选按钮的使用,它用于表单,不知道如何在 html 中使用它列表格式请看链接的小提琴,左边有一个空白,我现在无法点击图片 2) 你能解释一下“.nav li:hover ~ li { transform: translateX(24%); }” 部分吗, 谢谢! [链接] (jsfiddle.net/iambong/y8vyy9wk/1)
  • @Bill ".nav li:hover ~ li { transform: translateX(24%); }" 表示悬停的 li 的下一个兄弟将在 x 方向上平移 24%。请如果对您有帮助,请接受答案:)
  • 它可以替换元素,但它不允许我继续使用单选按钮,你能帮忙吗?你可以看到新的小提琴 [link] (jsfiddle.net/iambong/y8vyy9wk/1)
  • 看这里单选按钮的作用
猜你喜欢
  • 1970-01-01
  • 2014-06-07
  • 2021-07-01
  • 2022-01-21
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
相关资源
最近更新 更多