当具有焦点时如何显示隐藏的元素?

问题描述 投票:0回答:3
<div class="row">
    <span class="show-on-hover"><button>Remove</button></span>
    <span class="hide-on-hover">1.00</span>
    <span class="show-on-hover"><input value="1.00"></span>
</div>

我希望CSS解决方案在div悬停在OR上或输入具有焦点时显示输入。我已经知道了悬停:

div.row .show-on-hover{ display:none; }
div.row:hover .hide-on-hover{ display:none; }
div.row:hover .show-on-hover{ display:inline; }

但是,如果输入也具有焦点(也包括移除范围),如何保持上述规则?

css
3个回答
0
投票

使用div元素的焦点内选择器。如果div / row中的任何元素都被聚焦,则内部焦点将样式应用于div / row。

div.row .show-on-hover {
  display: none;
}
div.row:hover .hide-on-hover,
div.row:focus-within .hide-on-hover {
  display: none;
}
div.row:hover .show-on-hover,
div.row:focus-within .show-on-hover {
  display: inline;
}

1
投票

现在,我已经解决了您的问题,如果不使用某种脚本来控制显示/不显示,似乎无法解决您的特定问题。

这是我得到的:

CSS

div:hover input {display:inline;}
input:focus {display:inline;}
input {display:none;}

HTML

<div> 
    <!-- <input id="same" type="button" value="Remove" /> -->
    <span class="hide-on-hover">1.00</span>
    <input id="same" value="1.00">
</div>

结果:http://jsfiddle.net/2thMQ/2/


0
投票

我认为您正在寻找这样的东西:

div.row .show-on-hover{ display:none; }
div.row:active .hide-on-hover{ display:none; }
div.row:active .show-on-hover{ display:inline; }
© www.soinside.com 2019 - 2024. All rights reserved.