基于单选按钮选择使用 CSS 显示/隐藏链接

Posted

技术标签:

【中文标题】基于单选按钮选择使用 CSS 显示/隐藏链接【英文标题】:Show/hide links with CSS based on radiobutton selection 【发布时间】:2016-09-20 09:10:39 【问题描述】:

我正在尝试根据当前选中的单选按钮显示/隐藏超链接。这一直有效,直到我将单选按钮包装在 <ul><li> 元素中。

CSS

.site 
  opacity: 0;
  height: 0px;
  -moz-transition: opacity .5s ease-in-out, height .5s ease-in-out,background  .5s ease-in-out;
  -webkit-transition: opacity .5s ease-in-out, height .5s ease-in-out,background  .5s ease-in-out;
  transition: opacity .5s ease-in-out, height .5s ease-in-out,background  .5s ease-in-out;

input[id=rbSites]:checked ~.site 
  opacity: 1;
  height: 15px;

HTML

<input type="radio" id="rbSites" name="types"> 
<label for="supportCase">Sites</label>
<input type="radio" id="rbOther" name="types"> 
<label for="other">Other</label>
<div class="cell site">Link to</div>
<a class="site">SiteX</a>
<a class="site">SiteY</a>
<a class="moblie">AppX</a>

一旦单选按钮被包裹在 &lt;ul&gt;&lt;li&gt; 元素中,上述内容就会停止工作,如下所示:

<ul>
  <li>
    <input type="radio" id="rbSites" name="types"> 
    <label for="supportCase">Sites</label>
    <input type="radio" id="rbOther" name="types"> 
    <label for="other">Other</label>
  </li>
<ul>

参见jsFiddle without &lt;ul&gt;&lt;li&gt; 和with &lt;ul&gt;&lt;li&gt;

【问题讨论】:

Is there a CSS parent selector?的可能重复 【参考方案1】:

问题是.site 不再是兄弟,所以一旦单选按钮被包裹在&lt;ul&gt;&lt;li&gt; 中,~.site 选择器就不起作用了。

您将需要一个额外的父选择器(选择&lt;ul&gt;,然后选择~.site)或选择具有特定子元素(选中的单选按钮)的元素(&lt;ul&gt;)的方法。

很遗憾,恐怕这两个选项都只能在 CSS4 中使用。另请参阅this 和this 的答案。

【讨论】:

以上是关于基于单选按钮选择使用 CSS 显示/隐藏链接的主要内容,如果未能解决你的问题,请参考以下文章

Axure:切换单选按扭,控制界面显示不同内容

在隐藏的单选框/复选框上显示 HTML5 错误消息/验证

Razor 显示/隐藏基于使用 javascript 的单选按钮

根据单选按钮选择显示/隐藏输入字段

C#单选按钮测验[重复]

使用 simple_form、haml 和 jquery 基于单选按钮选择切换字段