• 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

Object Storage Arubacloud
0 głosów
1,105 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 681 wizyt
0 głosów
2 odpowiedzi 192 wizyt
0 głosów
3 odpowiedzi 409 wizyt
pytanie zadane 2 sierpnia 2020 w HTML i CSS przez niezalogowany

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

61,997 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...