【问题标题】:Uncheck checkboxes in html and css only?仅取消选中 html 和 css 中的复选框?
【发布时间】:2017-03-14 13:51:35
【问题描述】:

我一直在尝试创建类似于谷歌图片的东西(当你点击一张图片时,它会“打开”一个带有信息和链接的大版本,当你再次点击它时它会关闭)。

我的任务(学校)是只用纯 html(5) 和 css(3) 来实现这一点,所以没有 javascript 或 JQuery 或任何其他编程语言。

我已经尝试过使用复选框和收音机。当我使用复选框时,它会展开一个“信息框”,当我打开下一个复选框时它不会关闭。一次只需要打开一个。 因此我也尝试使用收音机。这里的问题是我无法取消选择它们。

只用html和css就可以实现吗?

有没有人可以帮助我?

提前致谢!

.folder {
	width: 100%;
	visibility: hidden;
}

.fold {
	visibility: hidden;
	background-color: #8b0000;
	width: 60%;
	height: 0px;
	color: transparent;
	-webkit-transition: all 0.3s;
	-moz-transition: all 0.3s;
	transition: all 0.3s;
	position: absolute;
}

.toggle { display: none; }

.toggle-label {
	display: inline-block;
	cursor: pointer;
	margin-top: 10px;
	margin-bottom: 10px;
	border: 1px solid #fff;
	font-size: 11px;
	color: #999;
	background-color: #8b0000;
	padding: 5px;
}

.toggle-label:hover {
	background-color: #400000;
}

.toggle:checked ~ .fold {
	height: 80px;
	visibility: visible;
	color: #fff;
}

.content{
	width: 100%;
	min-height: 0;
	position: static;
	-webkit-transition: all 0.3s;
	-moz-transition: all 0.3s;
	transition: all 0.3s;
}

.toggle:checked ~ .content {
	min-height: 80px;
}
<label for="toggle1" class="toggle-label">FOLD/UNFOLD</label>
			<label for="toggle2" class="toggle-label">FOLD/UNFOLD</label>
			<label for="toggle3" class="toggle-label">CLOSE</label>
			<div class="content">
				<aside class="folder">
					<input type="checkbox" name="xinfo" class="toggle" id="toggle1"/>
					<div class="fold">Element 1</div>
				</aside>

				<aside class="folder">
					<input type="checkbox" name="xinfo" class="toggle" id="toggle2"/>
					<div class="fold">Element 2</div>
				</aside>
				
				<aside class="folder">
					<input type="checkbox" name="xinfo" class="toggle" id="toggle3"/>
				</aside>
			</div>

【问题讨论】:

  • 您不能显式“取消选择”单选按钮,只有在选中同一组中的另一个单选按钮时才会隐式发生。
  • 我知道,这就是为什么我正在寻找解决方案或其他方式来做到这一点。不过谢谢你的回答。
  • 解决方案包含在您已经知道的内容中。如果您有 X 个单选按钮并且您希望能够“取消选择”它们 - 那么您添加一个属于同一组的附加单选按钮。因此,无论您想放置“取消全选”功能的任何位置,都可以放置一个针对该单选按钮的标签。
  • 如果您将类型从复选框更改为单选并选择内部没有任何内容的单选切换 3,它实际上会关闭其他选项并且不显示任何内容,这实际上是我需要的。如果您可以单击打开的收音机再次将其关闭,而不是使用“全部关闭”按钮/收音机,那就更好了。 (有人知道我正在尝试创建的官方名称或最常用的名称吗?)
  • 然后在要点击关闭的地方放一个标签。

标签: html css image checkbox radio


【解决方案1】:

到目前为止,我发现的最佳解决方案是使用收音机。您需要使用 1 个没有内容的额外输入,因此当您选择它时它不会显示。这样其他的就会关闭。

<aside class="folder">
  <input type="radio" name="xinfo" class="toggle" id="toggle3"/>
</aside>

JSFiddle 示例: https://jsfiddle.net/zv1pd6wn/

现在唯一的问题是关闭按钮在动画结束之前都是可见的,我已经尝试过解决它,但没有运气,不胜感激。

【讨论】:

    【解决方案2】:

    这是你想要的。请尝试下面的代码。`折叠/展开 折叠/展开 关闭

            <div class="content">
                <aside class="folder">
                    <input type="radio" name="xinfo" class="toggle" id="toggle1"/>
                    <div class="fold">Element 1</div>
                </aside>
    
                <aside class="folder">
                    <input type="radio" name="xinfo" class="toggle" id="toggle2"/>
                    <div class="fold">Element 2</div>
                </aside>
    
            </div>
    

    ` --css---

    .folder {
        width: 100%;
        visibility: hidden;
    }
    
    .fold {
        visibility: hidden;
        background-color: #8b0000;
        width: 60%;
        height: 0px;
        color: transparent;
        -webkit-transition: all 0.3s;
        -moz-transition: all 0.3s;
        transition: all 0.3s;
        position: absolute;
    }
    
    .toggle { display: none; }
    
    .toggle-label {
        display: inline-block;
        cursor: pointer;
        margin-top: 10px;
        margin-bottom: 10px;
        border: 1px solid #fff;
        font-size: 11px;
        color: #999;
        background-color: #8b0000;
        padding: 5px;
    }
    
    .toggle-label:hover {
        background-color: #400000;
    }
    
    .toggle:checked ~ .fold {
        height: 80px;
        visibility: visible;
        color: #fff;
    }
    
    .content{
        width: 100%;
        min-height: 0;
        position: static;
        -webkit-transition: all 0.3s;
        -moz-transition: all 0.3s;
        transition: all 0.3s;
    }
    
    .toggle:checked ~ .content {
        min-height: 80px;
    }
    
    
    #toggle3:checked + .content .fold
    {
      visibility: hidden;
    }
    

    【讨论】:

    • avoid link only answers。答案“仅仅是指向外部网站的链接”may be deleted
    • 不要将垃圾放在代码块中以绕过将答案放在答案中的要求,而不仅仅是链接到 JS Fiddle。
    • @昆汀。我没有发布永久链接。这只是为了让他快速查看。
    • 为什么人们反对我的帖子。我没有发布错误或不相关的答案。
    • 这是一段格式错误的代码,完全没有任何类似于解释它的工作原理、问题中的代码发生了什么变化或为什么会有所作为的解释。
    猜你喜欢
    • 2022-10-15
    • 2013-11-05
    • 2014-07-30
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多