HTML/CSS - dodanie wlasciwosci do li li li li

0

Czesc! Od kilku dni zmagam sie z zilustrownaiem pewnej struktury w HMTL/CSS. Dana struktura powinna zawierac 4 poziomy. Powiedzmy, ze z sukcesem udalo mi sie zrobic 3 poziomy natomiast czwarty, niestety mimo wielu prob nie moge go utworzyc. Zajmuje sie od kilku miesiecy HTML i CSS wiec nie ma duzo doswiadczenia. prosze o wsparcie bardziej doswiadczonch osob. Z gory dziekuje!

<style>

  


/* ------------------------------------------------------------
	NUMBER OF COLUMNS: Adjust #primaryNav li to set the number
	of columns required in your site map. The default is 
	4 columns (25%). 5 columns would be 20%, 6 columns would 
	be 16.6%, etc. 
------------------------------------------------------------ */

#primaryNav li {
	width:16.6%;
}

#primaryNav li ul li {
	width:100% !important;
}

#primaryNav.col1 li { width:99.9%; }
#primaryNav.col2 li { width:50.0%; }
#primaryNav.col3 li { width:33.3%; }
#primaryNav.col4 li { width:25.0%; }
#primaryNav.col5 li { width:20.0%; }
#primaryNav.col6 li { width:16.6%; }
#primaryNav.col7 li { width:14.2%; }
#primaryNav.col8 li { width:12.5%; }
#primaryNav.col9 li { width:11.1%; }
#primaryNav.col10 li { width:10.0%; }

/* ------------------------------------------------------------
	General Styles
------------------------------------------------------------ */

h1 {
    font-size: 30px;
    text-transform: uppercase;
    display: inline-block;
    border-bottom: 4px solid;
    padding-bottom: 10px;
	text-align:center;
}

ol, ul {
	list-style: none;
}


/* ------------------------------------------------------------
	Site Map Styles
------------------------------------------------------------ */

/* --------	Top Level --------- */

#primaryNav {
	margin: 0;
	float: left;
	width: 100%;
}
#primaryNav #home {
	display: block;
	float: none;
	background: #ffffff url('/images/slickmap/L1-left.png') center bottom no-repeat;
	position: relative;
	z-index: 2;
	padding: 0 0 30px 0;
}
#primaryNav li {
	float: left;
	background: url('/images/slickmap/L1-center.png') center top no-repeat;
	padding: 30px 0;
	margin-top: -30px;
}
#primaryNav li a {
	margin: 0 20px 0 0;
	padding: 10px 0;
	display: block;
	font-size: 14px;
	font-weight: bold;
	text-align: center;
	color: white;	
	background: #112D4E url('/images/slickmap/white-highlight.png') top left repeat-x;
	border: 2px solid #3282B8;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	-webkit-box-shadow: rgba(0,0,0,0.5) 2px 2px 2px; 
	-moz-box-shadow: rgba(0,0,0,0.5) 2px 2px 2px; /* FF 3.5+ */	
}
#primaryNav li a:hover {
	background-color: #0F4C75;
	border-color: #3F72AF;
}
#primaryNav li:last-child {
	background: url('/images/slickmap/L1-right.png') center top no-repeat;
}
a:link:before,
a:visited:before {
	display: block;
	text-transform: uppercase;
	font-size: 10px;
	margin-bottom: 5px;
	word-wrap: break-word;
}
#primaryNav li a:link:before,
#primaryNav li a:visited:before {
	color: #78a9c0;
}

/* --------	Second Level --------- */

#primaryNav li li {
	width: 100%;
	clear: left;
	margin-top: 0;
	padding: 10px 0 0 0;
	background: url('/images/slickmap/vertical-line.png') center bottom repeat-y;
}
#primaryNav li li a {
	background-color: #3F72AF;
	border-color: #112D4E;
}
#primaryNav li li a:hover {
	background-color: #0F4C75;
	border-color: #3F72AF;
}
#primaryNav li li:first-child {
	padding-top: 30px;
}
#primaryNav li li:last-child {
	background: url('/images/slickmap/vertical-line.png') center bottom repeat-y;
}
#primaryNav li li a:link:before,
#primaryNav li li a:visited:before {
	color: #8faf5c;
}

/* --------	Third Level --------- */

#primaryNav li li ul {
	margin: 10px 0 0 0;
	width: 100%;
	float: right;
	padding: 9px 0 10px 0;
	background: #ffffff url('/images/slickmap/L3-ul-top.png') center top no-repeat;
}
#primaryNav li li li {
	background: url('/images/slickmap/L3-center.png') left center no-repeat;
	padding: 5px 0;
}
#primaryNav li li li a {
	background-color: #818FB4;
	border-color: #818FB4;
	font-size: 12px;
	padding: 5px 0;
	width: 80%;
	float: right;
}
#primaryNav li li li a:hover {
	background-color: #526D82;
	border-color: #3F72AF;
}
#primaryNav li li li:first-child {
	padding: 15px 0 5px 0;
	background: url('/images/slickmap/L3-li-top.png') left center no-repeat;
}
#primaryNav li li li:last-child {
	background: url('/images/slickmap/L3-bottom.png') left center no-repeat;
}
#primaryNav li li li a:link:before,
#primaryNav li li li a:visited:before {
	color: #ccae14;
	font-size: 9px;
}
/* --------	Fourth Level --------- */
#primaryNav li li li ul {
	margin: 10px 0 0 0;
	width: 100%;
	float: right;
	padding: 10px 0 12px 0;
	background: #ffffff url('/images/slickmap/L3-ul-top.png') center top no-repeat;
}
#primaryNav li li li li {
	background: url('/images/slickmap/L3-center.png') left center no-repeat;
	padding: 8px 0;
}
#primaryNav li li li li a {
	background-color: #818FB4;
	border-color: #818FB4;
	font-size: 10px;
	padding: 8px 0;
	width: 60%;
	float: right;
}
#primaryNav li li li li a:hover {
	background-color: #818FB4;
	border-color: #818FB4;
}
#primaryNav li li li li:first-child {
	padding: 8px 0 3px 0;
	background: url('/images/slickmap/L3-li-top.png') left center no-repeat;
}
#primaryNav li li li li:last-child {
	background: url('/images/slickmap/L3-bottom.png') left center no-repeat;
}
#primaryNav li li li li a:link:before,
#primaryNav li li li li a:visited:before {
	color: #818FB4;
	font-size:121px;
}
/* ------------------------------------------------------------
	Utility Navigation
------------------------------------------------------------ */

#utilityNav {
	float: right;
	max-width: 50%;
	margin-right: 10px;
}
#utilityNav li {
	float: left;
	margin-bottom: 10px;
}
#utilityNav li a {
	margin: 0 10px 0 0;
	padding: 5px 10px;
	display: block;	
	border: 2px solid #e3ca4b;
	font-size: 12px;
	font-weight: bold;
	text-align: center;
	color: black;
	background: #fff7aa url('/images/slickmap/white-highlight.png') top left repeat-x;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	-webkit-box-shadow: rgba(0,0,0,0.5) 2px 2px 2px; 
	-moz-box-shadow: rgba(0,0,0,0.5) 2px 2px 2px; /* FF 3.5+ */	
}
#utilityNav li a:hover {
	background-color: #fffce5;
	border-color: #d1b62c;
}
#utilityNav li a:link:before,
#utilityNav li a:visited:before {
	color: #ccae14;
	font-size: 9px;
	margin-bottom: 3px;
}
.notes p {
	font-family: Georgia, Times, serif;
	font-size: 13px;
}
.notes p a  {
	text-decoration: underline;
}
.notes p a:link:before,
.notes p a:visited:before {
	content: "  ";
	display: none;
	text-transform: uppercase;
	font-size: 10px;
	margin-bottom: 5px;
	word-wrap: break-word;
}
</style>




<body>


</div>
	<div class="sitemap" style="
    text-align: center;">
		<ul id="primaryNav">
		<h1 style="margin:40px;">Management</h1>
		<h2></h2>
	
		<li><a href="">Poziom 1</a>
				<ul>
					
					<li><a href="">Poziom 2</a>
						<ul>
						<li><a href="">Poziom 3</a><li><a href="">Poziom 4<br>Mniejszy</a></li></li>
						
						
						</ul>
					</li>
					
				</ul>
		</li>




<body>


</div>
	<div class="sitemap" style="
    text-align: center;">
		<ul id="primaryNav">
		<h1 style="margin:40px;">Management</h1>
		<h2></h2>
	
		<li><a href="">Poziom 1</a>
				<ul>
					
					<li><a href="">Poziom 2</a>
						<ul>
						<li><a href="">Poziom 3</a><li><a href="">Poziom 4<br>Mniejszy</a></li></li>
						
						
						</ul>
					</li>
					
				</ul>
		</li>
		
		
		
		
			
		</ul>
			</div>
</body>

screenshot-20240212112127.png

3

Ten kod nadaje się do śmietnika. Łatwiej go będzie zaorać i napisać wszystko od nowa.

#primaryNav li ul li {
	width:100% !important;
}

#primaryNav.col1 li { width:99.9%; }
#primaryNav.col2 li { width:50.0%; }
/* ...  */
#primaryNav li li li li:first-child {
	padding: 8px 0 3px 0;

Nie wiem, co chcesz osiągnąć, ale to nie jest dobry pomysł.

Najlepiej będzie napisać to od nowa, ale:

  1. struktura HTML powinna odzwierciedlać to, co faktycznie chcesz osiągnąć, bo tutaj widzę, że tworzysz jakieś listy, a potem sobie sam to wszystko jakoś w dziwny sposób wyrównujesz (jaki jest twój cel w ogóle?)

  2. elementy li same się wyrównują przez przeglądarkę, jeśli chcesz to zmodyfikować, to jeśli piszesz #primaryNav li li li li:first-child to w zasadzie po co robisz te listy? Jeszcze taki selektor #primaryNav li:first-child mógłby mieć sens, ale jak robisz li li li li (laj) to brzmi to jak jak kolęda, a nie sensowny kod. Pomyśl, jak napisać to, co chcesz uniwersalnie, jaka jest uniwersalna zasada tych wyrównań, żeby taką zasadę podpiąć pod np. wszystkie li w drzewie

  3. <li><a href="">Poziom 3</a><li><a href="">Poziom 4<br>Mniejszy</a></li></li
    

    tu jest prawdopodobnie problem, że następuje niejawne zamknięcie pierwszego <li> i to nie jest poziom 4, tylko dalej poziom 3 (weź sobie sprawdź w Dev Tools/narzędziach dla programistów w przeglądarce). Ponieważ w HTML jest "ułatwienie" i zamykający element </li> może być czasem pominięty:
    https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li

    The end tag can be omitted if the list item is immediately followed by another <li> element, or if there is no more content in its parent element.

0
LukeJL napisał(a):

Ten kod nadaje się do śmietnika. Łatwiej go będzie zaorać i napisać wszystko od nowa.

#primaryNav li ul li {
	width:100% !important;
}

#primaryNav.col1 li { width:99.9%; }
#primaryNav.col2 li { width:50.0%; }
/* ...  */
#primaryNav li li li li:first-child {
	padding: 8px 0 3px 0;

Nie wiem, co chcesz osiągnąć, ale to nie jest dobry pomysł.

Najlepiej będzie napisać to od nowa, ale:

  1. struktura HTML powinna odzwierciedlać to, co faktycznie chcesz osiągnąć, bo tutaj widzę, że tworzysz jakieś listy, a potem sobie sam to wszystko jakoś w dziwny sposób wyrównujesz (jaki jest twój cel w ogóle?)

  2. elementy li same się wyrównują przez przeglądarkę, jeśli chcesz to zmodyfikować, to jeśli piszesz #primaryNav li li li li:first-child to w zasadzie po co robisz te listy? Jeszcze taki selektor #primaryNav li:first-child mógłby mieć sens, ale jak robisz li li li li (laj) to brzmi to jak jak kolęda, a nie sensowny kod. Pomyśl, jak napisać to, co chcesz uniwersalnie, jaka jest uniwersalna zasada tych wyrównań, żeby taką zasadę podpiąć pod np. wszystkie li w drzewie

   <li><a href="">Poziom 3</a><li><a href="">Poziom 4<br>Mniejszy</a></li></li

tu jest prawdopodobnie problem, że następuje niejawne zamknięcie pierwszego <li> i to nie jest poziom 4, tylko dalej poziom 3 (weź sobie sprawdź w Dev Tools/narzędziach dla programistów w przeglądarce). Ponieważ w HTML jest "ułatwienie" i zamykający element </li> może być czasem pominięty:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li
The end tag can be omitted if the list item is immediately followed by another <li> element, or if there is no more content in its parent element.

Dzieki Luke! Mimo moje znikomej wiedzy jeszcze raz przejrzalem kod po tym co napisales i znalazlem rozwiazanie! A to sie dla mnie liczy! Dzieki wielkie!

1

Tu masz przykład poprawnego wykorzystywania oraz ostylowania zagnieżdżonych znaczników OL, LI itp.:

1 użytkowników online, w tym zalogowanych: 0, gości: 1