如何创建一个切换箭头,当您单击箭头时“打开”一个部分以显示文本?
Posted
技术标签:
【中文标题】如何创建一个切换箭头,当您单击箭头时“打开”一个部分以显示文本?【英文标题】:How do I create a Toggle arrow that "opens up" a section to show text as you click on the arrow? 【发布时间】:2020-08-23 10:00:09 【问题描述】:Toggle when closed
Toggle when opened
我的目标是创建一个如图所示的切换箭头。 “关闭”状态包括一行文本,旁边有一个图标以及触发切换的箭头。 “打开”状态包括几行文本和一张图片(与屏幕截图中显示的有点不同,但我真正纠结的只是动画部分)。
我正在使用来自 html5 Up 的模板,该模板在菜单栏中包含类似的切换,因此我尝试复制不起作用的相应 HTML 和 CSS 代码。没有错误消息,网站上也没有出现切换开关(请参阅下面的 sn-p 了解 CSS)。
<span class="opener">Text that appears next to toggle arrow</span>
有没有办法用 HTML 和 CSS 来做到这一点,还是需要 javascript?
#menu ul a.opener, #menu ul span.opener
-moz-transition: color 0.2s ease-in-out;
-webkit-transition: color 0.2s ease-in-out;
-ms-transition: color 0.2s ease-in-out;
transition: color 0.2s ease-in-out;
text-decoration: none;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
position: relative;
#menu ul a.opener:before, #menu ul span.opener:before
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
text-transform: none !important;
font-family: 'Font Awesome 5 Free';
font-weight: 900;
#menu ul a.opener:before, #menu ul span.opener:before
-moz-transition: color 0.2s ease-in-out, -moz-transform 0.2s ease-in-out;
-webkit-transition: color 0.2s ease-in-out, -webkit-transform 0.2s ease-in-out;
-ms-transition: color 0.2s ease-in-out, -ms-transform 0.2s ease-in-out;
transition: color 0.2s ease-in-out, transform 0.2s ease-in-out;
color: #9fa3a6;
content: '\f078';
position: absolute;
right: 0;
#menu ul a.opener:hover:before, #menu ul span.opener:hover:before
color: #015a9d;
#menu ul a.opener.active + ul, #menu ul span.opener.active + ul
display: block;
#menu ul a.opener.active:before, #menu ul span.opener.active:before
-moz-transform: rotate(-180deg);
-webkit-transform: rotate(-180deg);
-ms-transform: rotate(-180deg);
transform: rotate(-180deg);
【问题讨论】:
【参考方案1】:您可以使用名为 <details>
的 html5 元素轻松完成此操作
<details>
<summary>Click here to see something</summary>
Here's more stuff below :)
</details>
【讨论】:
嘿,非常感谢,这很好用!不敢相信我以前从未遇到过这个元素。【参考方案2】:详细信息标签应该是首选的方式。但是如果你想让它更花哨或其他原因你不能使用 details 标签,你可以自己创建这样一个下拉列表。
可能是这样的:
CSS
.dropdown
postion: relative;
.dropdown-content
display: flex;
flex-direction: column;
width: fit-content;
border: 1px solid transparent;
position: absolute;
opacity: 0;
background: white;
z-index: 9;
transition: height 0.5s ease;
transition: opacity 0.3s ease;
height: 0;
overflow: hidden;
.dropdown.active .dropdown-content
opacity: 1;
height: fit-content;
border-color: gray;
.dropdown-trigger > i > svg
width: 0.7rem;
height: 0.7rem;
transform: rotate(90deg);
transition: all 0.3s ease;
.dropdown.active .dropdown-trigger > i > svg
width: 0.7rem;
height: 0.7rem;
transform: rotate(-90deg);
HTML
<div class="dropdown">
<button class="dropdown-trigger"> <i><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M5 3l3.057-3 11.943 12-11.943 12-3.057-3 9-9z" /></svg></i> Open</button>
<span class="dropdown-content">
<p>lorem ipsum</p>
<p>lorem ipsum</p>
<p>lorem ipsum</p>
<p>lorem ipsum</p>
</span>
</div>
https://codepen.io/bluebrown/pen/qBZRaVX?editors=0100
【讨论】:
您好,非常感谢您的建议!可悲的是,无论是在我的网页上还是在 codepen 中,您编写的代码都不会触发切换——我可以按下按钮,但没有任何反应,没有展开,也没有显示文本。我错过了什么吗?第一个 CSS 代码行的“position”中缺少一个“i”,但这并没有解决。以上是关于如何创建一个切换箭头,当您单击箭头时“打开”一个部分以显示文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何捕获AutoCompleteTextView箭头单击事件
Microsoft Access 组合框箭头隐藏的矩形再次出现
如何在 Xamarin IOS 自定义渲染器中单击 UITextField Rightview 打开 UIPickerView