• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

display: inline-block zamiast float: left

42 Warsaw Coding Academy
0 głosów
1,311 wizyt
pytanie zadane 29 kwietnia 2016 w HTML i CSS przez Marecki Obywatel (1,690 p.)

witam

Otóż mam pytanie: W filmiku Kurs CSS odc. 3 Pana Mirosława gdzie tworzymy rozwijane menu, Pan Mirosław używa float: left w ol > li. Otóż czy można zamiast tego użyć display: inline-block?? A z ol usunąć ten zapis??

Czyli zamiat:
ol
{
	padding: 0;
	margin: 0;
	list-style-type: none;
	font-size: 18px;
	height: 55px;
	line-height: 300%;
	display: inline-block;
	
}



ol > li
{
	
	float: left;
	width: 150px;
	height: 55px;
	border-right: 1px dashed #751b1b;
	
	
} 

zrobić: 

ol
{
	padding: 0;
	margin: 0;
	list-style-type: none;
	font-size: 18px;
	height: 55px;
	line-height: 300%;
	
	
}


ol > li
{
	
	display: inline-block;
	width: 150px;
	height: 55px;
	border-right: 1px dashed #751b1b;
		
}

Dziękuję i pozdrawiam.

1 odpowiedź

0 głosów
odpowiedź 29 kwietnia 2016 przez HaKIM Szeryf (87,590 p.)
komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
Problem polega na tym, że po najechaniu (hover) na ol > li te li zjeżdżają niżej aż do poziomu ol > li > ul > li
komentarz 29 kwietnia 2016 przez HaKIM Szeryf (87,590 p.)
edycja 29 kwietnia 2016 przez HaKIM
Podeślij kod HTML i CSS, abym mógł wkleić na przykładową stronę:

 ~ https://jsfiddle.net/

~ http://codepen.io/
komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
Zrób jeszcze jeden poziom :)
komentarz 29 kwietnia 2016 przez HaKIM Szeryf (87,590 p.)
Daj chwilkę, postaram się rozwiązać problem, choć nie wykluczone iż w takich przypadkach jesteśmy skazani na float, w co wątpię. : )
komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
Ok :)
komentarz 29 kwietnia 2016 przez HaKIM Szeryf (87,590 p.)

Cóż, spróbuj użyć czegoś takiego:

[...]

ol > li
{
	display: inline-block;
	width: 150px;
	height: 35px;
	border-right: 1px dashed #751b1b;
}

ol > li:first-child
{
	border-left: 1px dashed #751b1b;
}

ol > li:hover
{
	background-color: #cf6969;
} 

ol > li:hover > a
{
	color: #451717;
}

ol > li > ul
{
	list-style-type: none;
	padding: 0;
	margin: 0;
	height: 40px;
	display: none;
}

ol > li:hover > ul
{
	display: block;
}

ol > li > ul > li
{
  float: left;
  width: 100%;
	background-color:#cf6969;
	position: relative;
	z-index: 100;
	border-top: 1px dashed #751b1b;
}

[...]

 

Mam nadzieję że taki miał być efekt:

~ https://zapodaj.net/16ddc2d0ad24e.png.html

komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
W ten sposób działa, a wytłumaczysz dlaczego tak?
komentarz 29 kwietnia 2016 przez HaKIM Szeryf (87,590 p.)

Cóż, sądzę iż to dlatego że:

 display: inline-block; układa wszystko w linii, gdy rozwijamy menu, on musi być w wraz z innymi elementami na jednym poziomie, przystosowuje się do ostatniego <li></li>, w ol > li > ul > li, gdy dajesz float: left; chyba display: inline-block; reaguje w ten sposób: O, jest to przyklejone to lewej, nie powinienem robić tego, co mam w naturze, czyli przystosowywać się do ostatniego bloku, jako iż float: left; układa wszystko w jednej linii, pionowo.

Serio, to jest magia css'a, nie potrafię tego wytłumaczyć, jak to powiedział Einstein:

Jeżeli nie potrafisz czegoś prosto wyjaśnić - to znaczy, że niewystarczająco to rozumiesz

W tym przypadku jest tako samo.

Musiałbym sięgnąć po spoory artykuł o display: inline-block i float: left, abym mógł Ci to w prosty i przyjazny sposób wytłumaczyć. Jak na razie, można się domyślać. :) 

komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)

 jako iż float: left; układa wszystko w jednej linii, pionowo.

A nie poziomo? Float: left czyli: ułóż w jednej poziomej linii jeden obok drugiego 

komentarz 29 kwietnia 2016 przez HaKIM Szeryf (87,590 p.)

Mówiłem, ciężko mi to opisać.

Może tak:

 [...] O, jest to przyklejone do lewej, nie powinienem robić tego, co mam w naturze, czyli przystosowywać się do ostatniego bloku, jako iż float: left; układa wszystko w jednej linii, ale zaczynając od góry, więc to góra jest elementem, do którego mam się przystosować.

Przydałby się Comandeer, on dałby radę Ci to wyjaśnić w paru linijkach. :)

komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
Ale bez float: left; nie obejdzie się w tym przykładzie , prawda? :)
komentarz 29 kwietnia 2016 przez HaKIM Szeryf (87,590 p.)
Przyznam, iż bez float: left; miałbym niemały problem z wystylizowaniem tego, ale nie jest to niemożliwe. Anyway, czasami lepiej użyć czegoś, czego nie chcemy, niżeli robić magię w kodzie. Z magią jest mały problem, nie idzie jej zrozumieć.
komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
Nie wiem tylko dlaczego float: left nie układa tych ostatnich li jeden obok drugiego tylko pod spodem
komentarz 29 kwietnia 2016 przez HaKIM Szeryf (87,590 p.)
Pewnie dlatego iż <li></li> posiada display: list-item;

http://www.w3schools.com/cssref/playit.asp?filename=playcss_display&preval=list-item
komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
Tak tylko przy pierwszych ol > li elementy układają się obok siebie , a tylko przy następnych ol > li > ul > li układają się pod sobą :)
komentarz 29 kwietnia 2016 przez HaKIM Szeryf (87,590 p.)
Nie jestem pewien czy skumałem.

Otóż, w ol > li masz display: inline-block;

Natomiast w ol > li > ul > li float: left;

- Proste. ;D
komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
tak ale gdy zrobisz w ol > li float: left; też będzie działać i też będą elementy się układać obok siebie, a w ol > li > ul > li pod sobą...
komentarz 29 kwietnia 2016 przez HaKIM Szeryf (87,590 p.)

Jak już pisałem:

Pewnie dlatego iż <li></li> posiada display: list-item;

http://www.w3schools.com/cssref/playit.asp?filename=playcss_display&preval=list-item

 

komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
No ale pierwsze li wyświetla się w linii jeden obok drugiego a drugie pod spodem
komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
Skoro <li></li> posiada list-item to dlaczego to pierwsze li czyli ol > li wyświetla się jeden obok drugiego?
komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
https://jsfiddle.net/s2kgfoz3/ tak powinno działać
komentarz 29 kwietnia 2016 przez Marecki Obywatel (1,690 p.)
Już wiem -> chodzi o szerokość dlatego przechodzi do nowej linii :)

Podobne pytania

0 głosów
3 odpowiedzi 1,146 wizyt
0 głosów
2 odpowiedzi 255 wizyt
0 głosów
3 odpowiedzi 564 wizyt
pytanie zadane 2 sierpnia 2020 w HTML i CSS przez niezalogowany

93,382 zapytań

142,382 odpowiedzi

322,540 komentarzy

62,738 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...