Add nav resize utility functions.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
685ea662f5
commit
c807754bea
4
base.css
4
base.css
@ -73,6 +73,7 @@ main{
|
||||
position: relative;
|
||||
float: right;
|
||||
width: auto;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
.so-pane{
|
||||
@ -332,6 +333,9 @@ main{
|
||||
float: right;
|
||||
width: auto;
|
||||
}
|
||||
.vnav{
|
||||
display: none;
|
||||
}
|
||||
.menu li{
|
||||
float: left;
|
||||
}
|
||||
|
@ -96,13 +96,13 @@
|
||||
<input class="nav-menu" type="checkbox" id="nav-menu"/>
|
||||
<label class="hmb" for="nav-menu" title="Navigation Links"><span class="hmb-line"></span></label>
|
||||
<nav class="vnav" id="vnav">
|
||||
<ul class="vmenu no-lst-style">
|
||||
<ul class="vmenu no-lst-style" id="vmenu">
|
||||
</ul>
|
||||
</nav>
|
||||
<nav class="nav" id="nav">
|
||||
<ul class="menu no-lst-style">
|
||||
<ul class="menu no-lst-style" id="menu">
|
||||
{{ range .Data.GetHeaderLabels }}
|
||||
<li><b><a href="{{ $.Data.GetHeaderLink . }}" class="no-dec" title="{{ . }}">{{ . }}</a></b></li>
|
||||
<li><a href="{{ $.Data.GetHeaderLink . }}" class="no-dec" title="{{ . }}">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
||||
@ -192,7 +192,7 @@
|
||||
</p>
|
||||
<p>
|
||||
This page's content is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/">
|
||||
<img src="https://mirrors.creativecommons.org/presskit/buttons/80x15/png/by-nc-nd.png" alt="License" height="16"></a>.
|
||||
<img src="https://mirrors.creativecommons.org/presskit/buttons/80x15/png/by-nc-nd.png" alt="License" title="License" height="16"></a>.
|
||||
</p>
|
||||
</footer>
|
||||
<div id="st"></div>
|
||||
|
57
index.js
57
index.js
@ -77,7 +77,7 @@ function ReplaceHistory(url) {
|
||||
var s = true
|
||||
if (window.history) {
|
||||
if (window.history.replaceState) {
|
||||
window.history.replaceState({}, "", url);
|
||||
window.history.replaceState({}, "", url)
|
||||
s = false
|
||||
}
|
||||
}
|
||||
@ -291,13 +291,62 @@ function SortDurationD(a, b) {
|
||||
return 1
|
||||
}
|
||||
}
|
||||
function PerformNavResize() {
|
||||
var ht = document.getElementsByTagName("html")
|
||||
if (ht && ht.length > 0) {
|
||||
var maxbarsz = ht[0].clientWidth - 324;
|
||||
var men = document.getElementById("menu")
|
||||
var vmen = document.getElementById("vmenu")
|
||||
if (men && vmen) {
|
||||
if (ht[0].clientWidth > 679) {
|
||||
while (vmen.childNodes.length > 0) {InsertBefore(men, vmen.removeChild(vmen.childNodes[vmen.childNodes.length-1]));}
|
||||
} else {
|
||||
var vmeni
|
||||
var mensz = 0
|
||||
var menc = []
|
||||
var imenc = 0
|
||||
for (vmeni = 0; vmeni < vmen.childNodes.length; vmeni++) {
|
||||
if (vmen.childNodes[vmeni].nodeType === Node.ELEMENT_NODE) {
|
||||
if (mensz+vmen.childNodes[vmeni].clientWidth > maxbarsz) {menc[imenc] = vmen.childNodes[vmeni]; imenc++;}
|
||||
mensz += vmen.childNodes[vmeni].clientWidth
|
||||
}
|
||||
}
|
||||
if (menc.length > 0) {
|
||||
for (vmeni = 0; vmeni < menc.length; vmeni++) {vmen.removeChild(menc[vmeni]);}
|
||||
for (vmeni = menc.length - 1; vmeni >= 0; vmeni--) {InsertBefore(men, menc[vmeni]);}
|
||||
} else {
|
||||
for (vmeni = 0; vmeni < men.childNodes.length; vmeni++) {
|
||||
if (men.childNodes[vmeni].nodeType === Node.ELEMENT_NODE) {
|
||||
var mena = GetFirstSubElement(men.childNodes[vmeni], 0)
|
||||
var menaw = GetNavTextWidth(mena.textContent)
|
||||
if (mensz+menaw <= maxbarsz) {menc[imenc] = men.childNodes[vmeni]; imenc++;}
|
||||
mensz += menaw
|
||||
}
|
||||
}
|
||||
for (vmeni = 0; vmeni < menc.length; vmeni++) {vmen.appendChild(men.removeChild(menc[vmeni]));}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
function GetFirstSubElement(t,r) {
|
||||
for (var gfsei = 0; gfsei < t.childNodes.length; gfsei++) {
|
||||
if (t.childNodes[gfsei].nodeType === Node.ELEMENT_NODE) {
|
||||
if (r < 1) {return t.childNodes[gfsei];} else {return GetFirstSubElement(t.childNodes[gfsei], r - 1);}
|
||||
}
|
||||
}
|
||||
return t
|
||||
}
|
||||
function InsertBefore(p,c) {
|
||||
if (p.childNodes > 0) {p.insertBefore(c, p.childNodes[0]);} else {p.appendChild(c);}
|
||||
}
|
||||
function GetNavTextWidth(s) {
|
||||
var st = document.getElementById("st");
|
||||
var st = document.getElementById("st")
|
||||
if (st) {
|
||||
st.textContent = s
|
||||
var trw = st.clientWidth;
|
||||
var trw = st.clientWidth
|
||||
st.textContent = ""
|
||||
return trw;
|
||||
return trw
|
||||
}
|
||||
return 8 * s.length + 32
|
||||
}
|
Loading…
Reference in New Issue
Block a user