nav slide border

Guten tag

ich habe mir eine Navigation gebaut mit denn dazugehörigen Buttons, bei diesen Buttons wird ein border eingefahren wen man darüber fährt, das klappt so weit auch aber ich kriege es nicht hin das der border immer schön unter Button erscheint wen man die Fenster-gösse verändert.

hier mein code

HTML:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>DeskBuilder</title>
        <link rel="stylesheet" href="css/style.css">
        <link rel="stylesheet" href="css/nav-style.css">
    </head>
<body>
    <div id="nav">
        <div id="logo">
        </div>
        <div class="nav">
            <ul>
                <li class="n1"><a href="#">Shop</a></li>
                <li class="n2"><a href="#">Team</a></li>
                <li class="n3"><a href="#">Service</a></li>
                <li class="quebec">&nbsp;</li>
            </ul>  
        </div>
    </div>
</body>

CSS:
#nav {
position:                   absolute;
top:                        0px;
height:                     3.75em;
left:                       0px;
right:                      0px;
background:                 rgba(255,255,255,0.8);
-webkit-box-shadow:         0px 0px 6px -1px rgba(0, 0, 0, 0.5);
-moz-box-shadow:            0px 0px 6px -1px rgba(0, 0, 0, 0.5);
box-shadow:                 0px 0px 6px -1px rgba(0, 0, 0, 0.5);
z-index:                    10000;
}
.nav {
    position: absolute;
    top: 0px;
    bottom: 0px;
    right: 0px;
    left: 0%;
    padding: 18px;
}

.nav-button {
    margin-right: 25px;
    font-family: "Segoe UI", "微軟正黑體", "Microsoft JhengHei", "Arial";
    font-size: 16px;
    padding-left: 15px;
    padding-right: 15px;
    padding-bottom: 21px;
    cursor: pointer;
}

.nav-button:hover {
    border-bottom: 3px solid black;
}

#logo {
    position: absolute;
    top: 0px;
    bottom: 0px;
    right: 85%;
    left: 0px;
}



ul {
    position: absolute;
    overflow: hidden;
    top: -8px;
    left: -5px;
    right: 0;
}
li {
    list-style: none outside;
    position: relative;
    z-index: 1;
    float: left;
    border-bottom: 2px solid transparent;
    padding: 0 20px 0 0;
    left: 9%;
}
li a {
    position: relative;
    top: 5px;
    display: block;
    margin: -5px 0 0;
    border-bottom: 16px solid transparent;
    padding: 10px 0;
    text-align: center;
    text-decoration: none;
    text-transform: uppercase;
    font-family: "Segoe UI", "微軟正黑體", "Microsoft JhengHei", "Arial";
    color: black;
}

.n1 { width: 80px; }
.n2 { width: 57px; }
.n3 {
    width: 69px;
    padding-right: 0 !important;
}

.quebec {
    position: absolute;
    bottom: 0;
    left: 0;
    z-index: 3;
    margin: 0;
    border: 0;
    width: 5px;
    height: 2px;
    padding: 0;
    overflow: hidden;
    text-indent: -9999em;
    background: rgba(0, 0, 0, 0.5);
   
    -webkit-transition-property: left, width;
    -moz-transition-property: left, width;
    -ms-transition-property: left, width;
    -o-transition-property: left, width;
    transition-property: left, width;
   
    -webkit-transition-duration: .5s;
    -moz-transition-duration: .5s;
    -ms-transition-duration: .5s;
    -o-transition-duration: .5s;
    transition-duration: .5s;
   
    pointer-events: none;
}


.n1:hover ~ li.quebec { left: 12.5%; width: 80px; }
.n2:hover ~ li.quebec { left: 21.8%; width: 80px; }
.n3:hover ~ li.quebec { left: 31%; width: 80px; }




ich hoffe ihr könnt mir helfen liebe grüsse
 
Der CSS-Reset der voreingestellten Randabstände margin-left u. padding-left für <ul> (Achtung: der left-Wert für <ul> und .quebec hat sich dadurch geändert) erleichtert es, mit calc() eine simple Addition der einzelnen Summanden width (.n1, .n2, .n3) u. padding-right (<li>) durchzuführen, um die relative/variable linke Position der letzten beiden Buttons zu definieren :cool:

Warum Du beim ersten Button mit 12.5% beginnst, obwohl er 9% vom linken Rand entfernt positioniert ist, bleibt Dein Geheimnis :D

Obwohl... wenn bei der Liste nicht, dann vermutlich auch bei den übrigen Elementen, die Randabstände mitbringen, und so den Abstand hochschrauben :D

Demo: https://jsfiddle.net/spicelab/v56s4er3/

Quellen:
  1. https://developer.mozilla.org/de/docs/Web/CSS/calc
  2. https://blog.kulturbanause.de/2013/11/berechnungen-mit-css-calc/
  3. http://caniuse.com/#search=calc
[edit]Tipp-Ex[/edit]
 
Zuletzt bearbeitet:
Hay danke für die schnelle hilfe.

Ich fange mit den button erst qeiter rechts an weil ganz links noch das logo hin kommen sollte wen du das gemeint hast.

Ich werde heute abend mal deine änderungen übernehmen danke noch mals.

Zu dem hätte ich noch eine erweiterungs frage wie könnte ich jetz den quebec unter einem button fixiren wen ich den button betäzige und er erst weiter fährt wen ich wider pber winen anderen button komme ( :hover)? Ist dies so überhaupt realisir bar?
 
Zu dem hätte ich noch eine erweiterungs frage wie könnte ich jetz den quebec unter einem button fixiren wen ich den button betäzige und er erst weiter fährt wen ich wider pber winen anderen button komme ( :hover)? Ist dies so überhaupt realisir bar?
Selbstverständlich, Sammeloberbegriff "highlighting the active/current menu item".

Such Dir einfach die passende Methode / Technik für Dein Seitenkonzept heraus:
  1. CSS: https://www.tutorials.de/threads/cs...seite-im-navigationsmenue-hervorheben.361875/
  2. JS: http://www.websitecodetutorials.com/code/javascript/highlight-current-page-with-js.php
  3. jQuery: https://www.kevinleary.net/highlighting-the-current-page-with-php-jquery/
[edit]Tipp-Ex[/edit]
 
Zuletzt bearbeitet:
Hay kannst du mir echt mit dem helfen ich schaffe das nicht :(
Ich mag nicht glauben, dass Du bei keiner der drei empfohlenen Seiten imstande bist, die (übersichtlichen u. größtenteils erläuterten) Quellcode-Schnipsel in den eigenen Code zu portieren - zumal hier im Webmaster-FAQ-Thread eine ZIP-Datei mit Komplettbeispielen der beiden vorgestellten Techniken anhängt, und die anderen beiden Quellen mit einem Live-Demo aufwarten, dessen vollständiger Quellcode einzusehen ist :(

Für welche Methode hast Du Dich überhaupt entschieden?

Warum zeigst Du nicht direkt Deinen aktuellen Code?

[edit]Tipp-Ex[/edit]
 
Zuletzt bearbeitet:
ich habe mich für die css version endschiden weil ich mich mit css besser als mit js und jquery auskenne aber da ich das nur als hobby mache langen auch dise künste nicht aus.
das 2 problem ist ich weiss nicht wie ich es an wenden muss das der "quebec" unter dem richtgen stehen bleibt und erst beim :hover über ein anderen button wider weitet bewegt
 
Mal grundsätzlich nachgefragt, weil beides denkbar ist, aber technisch einen großen Unterschied ausmacht: rufen die Links neue Seiten im Browserfenster auf, oder tauschen sie dynamisch den Inhalt der Seite?
 
also es ist gedacht das wen ich über einen button:hover soll wie wir es jetzt bereits haben der "quebec" unten angefahren kommen wen ich nun den Button drücke behält der "quebec" seine aktuelle Position bei diesem Button (durch das klicken wird der seiten Inhalt gewechselt also es wird keine andere Seite geladen nur der Inhalt verändert) nun soll wen ich jetzt über einen anderen Button komme der "quebec" weiter fahren zum nun :hover Button und dann wider das selbe wen ich ihn klicke bleibt "quebec" am Ort usw.


ich hoffe du verstehst es wie ich es mir vorstelle
 
Zurück