Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: CSS Navigation Bar

Sivun loppuun

Markka [05.12.2015 22:19:37]

#

Tässä on tekemäni navigation bar. Haluaisin Vinkkejä kuinka saada tästä parempi/hienompi.

<body>
   <div id="nav">
    <div id="nav_wrapper">
        <ul>
            <li><a href="#">Koti</a>
            </li>
            <li> <a href="#">Anna palautetta</a>
            </li>
            <li> <a href="#">Minut löydät myös</a>

			<ul>
                    <li><a href="#">Ohjelmointiputkasta</a>
                    <li><a href="#">Twitteristä</a>
                    </li>
                </ul>
            </li>
            <li> <a href="#">Tietoa</a>
            </li>
        </ul>
    </div>
    <!-- Nav wrapper end -->
</div>
<!-- Nav end -->

ja sitten CSS

body {
    padding: 0;
    margin: 0;
    font-family: Arial;
    font-size: 17px;
}
#nav {
    background-color: #222;
}
#nav_wrapper {
    width: 960px;
    margin: 0 auto;
    text-align: left;
}
#nav ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
    position: relative;
    min-width: 200px;
}
#nav ul li {
    display: inline-block;
}
#nav ul li:hover {
    background-color: #333;
}
#nav ul li a, visited {
    color: #CCC;
    display: block;
    padding: 15px;
    text-decoration: none;
}
#nav ul li:hover ul {
    display: block;
}
#nav ul ul {
    display: none;
    position: absolute;
    background-color: #333;
    border: 5px solid #222;
    border-top: 0;
    margin-left: -5px;
}
#nav ul ul li {
    display: block;
}
#nav ul ul li a:hover {
    color: #699;
}

Esikatselu: http://markka.96.lt/navbar.html

spegi [05.12.2015 22:56:20]

#

Ihan jatkoa ajatellen: laita tuollaiset koodit JSiddleen tms. On turhauttavaa pistää itse oma palvelin päälle nähdäkseni mitä tuo koodi tuottaa.

Itse navipalkki on ihan hieno. Itse kyllä lisäisin dropdownille luokan ja poistaisin siitä borderit.

Kuitenkin tuollaisen palkin tekeminen itse on turhaa. Kannattaa opetella käyttämään valmiita front-end-frameworkkeja (ihana yhdyssana) kuten Foundation tai Twitter Bootstrap.

Linkki muille JSFiddleen: http://jsfiddle.net/o3u07toz/

Edit: linkki rikki

Markka [05.12.2015 23:01:13]

#

spegi kirjoitti:

On turhauttavaa pistää itse oma palvelin päälle nähdäkseni mitä tuo koodi tuottaa.

Juu, hostaan vaikka aamulla tuon ja pistän linkin tänne

Metabolix [06.12.2015 00:43:50]

#

Mielestäni ainakin tuosta absoluuttisesta leveydestä (960px) kannattaisi hankkiutua eroon.

The Alchemist [06.12.2015 00:50:25]

#

Haiskahtaa hieman siltä, että leveys on ajattelemattomuutta laitettu navigaation määritteisiin eikä kokonaan navigaation ulkopuolelle.

spegi kirjoitti:

Ihan jatkoa ajatellen: laita tuollaiset koodit JSiddleen tms. On turhauttavaa pistää itse oma palvelin päälle nähdäkseni mitä tuo koodi tuottaa.

Html:n esikatseluun ei tarvitse palvelinta vaan selaimen.

Markka [06.12.2015 01:28:34]

#

The Alchemist kirjoitti:

Html:n esikatseluun ei tarvitse palvelinta vaan selaimen.

No se on kyllä totta :D Hostaan tän kuitenkin

Markka [06.12.2015 15:32:57]

#

Nyt on hostattu esikatselua varten :) http://markka.96.lt/navbar.html

Hansen [06.12.2015 16:00:27]

#

Riviltä 12 taitaa puuttua </li>.

Näyttäisi siistimmältä, jos alastulevan valikon leveys olisi saman verran kuin sen avaavan alueen.

Markka [06.12.2015 16:07:32]

#

Hansen kirjoitti:

Riviltä 12 taitaa puuttua </li>.

Se on tarkotuksella noin, koska noi ohjelmointiputkasta ja Twitteristä on "Lista" niin en lopeta sitä siinä kohassa koska se "Lista" ei toimi muuten.

HTML5 [06.12.2015 17:33:06]

#

Muotoilisin HTML-koodin selvemmin ja poistaisin #nav_wrapper-elementin:

<nav id="nav">
	<ul>
		<li><a href="#">Koti</a></li>
		<li><a href="#">Anna palautetta</a></li>
		<li>
			<a href="#">Minut löydät myös</a>
			<ul>
				<li><a href="#">Ohjelmointiputkasta</a></li>
				<li><a href="#">Twitteristä</a></li>
			</ul>
		</li>
		<li><a href="#">Tietoa</a></li>
	</ul>
</nav>

CSS:stä tuli ainakin tällainen:

body {
	font: 17px Arial, sans-serif;
	margin: 0;
}

#nav {
	background: #222;
}

#nav > ul {
	max-width: 960px;
	margin: 0 auto;
}

#nav ul {
	list-style: none;
	padding: 0;
}

#nav li {
	display: inline-block;
}
#nav li:hover {
	background: #333;
}

#nav a {
	color: #ccc;
	text-decoration: none;
	padding: 15px;
	display: block;
}

#nav ul ul {
	background: #333;
	border: 5px solid #222;
	border-top: 0;
	margin-left: -5px;
	position: absolute;
}
#nav li:not(:hover) ul {
	display: none;
}

#nav ul ul li {
	display: block;
}
#nav ul ul a:hover {
	color: #699;
}

Testaa: http://codepen.io/anon/pen/ZQEZBJ

Lisäys:

Markka kirjoitti:

(06.12.2015 16:07:32): ”– –” Se on tarko­tuk­sella noin, koska noi...

Ei sulkutägin </li> lisääminen 12. riville vaikuta mitenkään valikon toimivuuteen.

Lisäys:

Tekstin ”Minut löydät myös” ympäriltä voisi poistaa a-tägit, jos kyseisen tekstin ei ole tarkoitus olla linkki.

Tällöin CSS:ään kannattaa tehdä seuraavat muutokset:

Grez [06.12.2015 22:11:17]

#

Markka kirjoitti:

(06.12.2015 16:07:32): ”– –” Se on tarko­tuk­sella noin, koska noi ohjelmointiputkasta ja Twitteristä on "Lista" niin en lopeta sitä

Li ei tarkoita listaa vaan listan jäsentä (list item). Tuo ul on lista (unordered list)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta