Convert dropdown menus to details/summary tags
This commit is contained in:
parent
f72896892b
commit
a15cfc5876
@ -204,12 +204,13 @@ label.description {
|
||||
}
|
||||
|
||||
.navbar {
|
||||
overflow: hidden;
|
||||
overflow: visible;
|
||||
background: var(--color-bg-white);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.navbar a {
|
||||
float: left;
|
||||
font-size: 16px;
|
||||
color: var(--color-text-secondary);
|
||||
text-align: center;
|
||||
@ -229,41 +230,66 @@ label.description {
|
||||
}
|
||||
|
||||
/*
|
||||
Dropdown menu styling
|
||||
https://www.w3schools.com/howto/howto_css_dropdown.asp
|
||||
Using details/summary tags to build dropdowm nmenus.
|
||||
They have to be clicked open and closed, but they allow
|
||||
me to have semantically appropriate pure HTML dropdowms
|
||||
that work on mobile devices.
|
||||
*/
|
||||
|
||||
.dropdown {
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
overflow: visible;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.dropdown .dropbtn {
|
||||
.dropdown summary.dropbtn {
|
||||
font-size: 16px;
|
||||
border: none;
|
||||
border-radius: 0px; /* overrides default button corner style */
|
||||
border-radius: 0px;
|
||||
outline: none;
|
||||
color: var(--color-text-secondary);
|
||||
padding: 14px 16px;
|
||||
background-color: inherit;
|
||||
font-family: inherit;
|
||||
font-weight: bold;
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
list-style: none; /* Remove default arrow */
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Remove the default details arrow */
|
||||
.dropdown summary.dropbtn::-webkit-details-marker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dropdown summary.dropbtn::-moz-list-bullet {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
/* Add a downward-facing caret after the button label */
|
||||
.dropdown .dropbtn::after {
|
||||
.dropdown summary.dropbtn::after {
|
||||
content: " ▼";
|
||||
font-size: 0.8em;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.dropdown:hover .dropbtn {
|
||||
/* Rotate the caret when opened */
|
||||
.dropdown[open] summary.dropbtn::after {
|
||||
content: " ▲";
|
||||
}
|
||||
|
||||
.dropdown summary.dropbtn:hover {
|
||||
background: var(--color-hover-light);
|
||||
color: var(--color-primary-dark)
|
||||
color: var(--color-primary-dark);
|
||||
}
|
||||
|
||||
.dropdown summary.dropbtn:focus {
|
||||
background: var(--color-hover-light);
|
||||
color: var(--color-primary-dark);
|
||||
outline: none;
|
||||
box-shadow: 0 0 0 2px var(--shadow-primary);
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: var(--color-bg-white);
|
||||
border: 1px solid var(--color-border-light);
|
||||
@ -271,6 +297,8 @@ label.description {
|
||||
min-width: 160px;
|
||||
box-shadow: 0px 8px 16px 0px var(--shadow-primary);
|
||||
z-index: 1;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.dropdown-content a {
|
||||
@ -293,10 +321,6 @@ label.description {
|
||||
box-shadow: 0 0 0 2px var(--shadow-primary);
|
||||
}
|
||||
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*
|
||||
The two common display options for responsive layouts are flex and grid.
|
||||
flex (aka Flexbox) aligns items either horizontally or vertically.
|
||||
@ -638,4 +662,4 @@ label.description {
|
||||
width: auto;
|
||||
min-width: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,24 +2,24 @@
|
||||
<?php /* https://www.w3schools.com/howto/howto_css_dropdown.asp */ ?>
|
||||
<div class="navbar">
|
||||
<a href="<?= $config->basePath ?>">home</a>
|
||||
<div class="dropdown">
|
||||
<button class="dropbtn">feeds</button>
|
||||
<details class="dropdown">
|
||||
<summary class="dropbtn">feeds</summary>
|
||||
<div class="dropdown-content">
|
||||
<a href="<?= $config->basePath ?>feed/rss">rss</a>
|
||||
<a href="<?= $config->basePath ?>feed/atom">atom</a>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
<?php if (!Session::isLoggedIn()): ?>
|
||||
<a href="<?= $config->basePath ?>login">login</a>
|
||||
<?php else: ?>
|
||||
<div class="dropdown">
|
||||
<button class="dropbtn">admin</button>
|
||||
<details class="dropdown">
|
||||
<summary class="dropbtn">admin</summary>
|
||||
<div class="dropdown-content">
|
||||
<a href="<?= $config->basePath ?>admin">settings</a>
|
||||
<a href="<?= $config->basePath ?>admin/css">css</a>
|
||||
<a href="<?= $config->basePath ?>admin/emoji">emoji</a>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
<a href="<?= $config->basePath ?>logout">logout</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
Loading…
x
Reference in New Issue
Block a user