Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [css][html] Dwa floatujące divy, jeden 200px, drugi "reszta"
varez
post
Post #1





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


Witam,
Poszukuję rozwiązania tylko w css (o ile możliwe), żebym miał sobie dwa divy:
  1. #a, #b { float: left; }
  2. #a { width: 200px; }
  3. #b { }
  4. <div id="a">
  5. ble
  6. </div>
  7. <div id="b">
  8. ble ble ble ble ble ble ble ble ble ble ble ble ble ble ble ble ble ble ble ble ble ble ble ble ble
  9. </div>

i ten drugi po prawej ma z pierwszym zawsze zajmować 100% szerokości strony, tylko ten po lewej ma mieć rozmiar na sztywno.
Mógłbym w przypadku zmiany szer. okna liczyć wszystko JS-em, ale nie chciałbym tego robić.
Jest to możliwe?
czy zostaje nieśmiertelna tabela?
Go to the top of the page
+Quote Post
agata
post
Post #2





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 4.12.2009

Ostrzeżenie: (0%)
-----


spróbuj rozłożyć to procentowo:

  1. #a {width: 20%} //to przykładowa wartość
  2. #b{width: 80%} // tutaj deklarujesz resztę szerokości


jednak i tak lepiej wrzucić to do kontenera

  1. <div id="all">
  2. <div id="a"></div>
  3. <div id="b"></div>
  4. </div>


Procenty i tak zawsze zostawią minimalny odstęp od bocznych krawędzi, wtedy rozwiązaniem "na siłę" jest :

  1. margin-left: -1%; // to musisz już sam pokombinować ile wystarczy
  2. margin-right: -1%;//jw
Go to the top of the page
+Quote Post
varez
post
Post #3





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


ale ja nie chce procentami, procentami to bym potrafil sobie zrobic..
chce div o stalej szerokosci, a nie w 1280x800 200px a juz w fullhd ponad 300px

kontener dla tych divow jest
Go to the top of the page
+Quote Post
vokiel
post
Post #4





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


@agata Ale jak procentowo, jak ma być na stałe 200px?

Oba bloki wrzucasz w kontener, który ma 100% szerokości.
  1. <style type="text/css">
  2. #container {width: 100%;}
  3. #left {float: left; width:200px;}
  4. #rigth {float: left; width: auto;} /* lub ustawić szerokość na 100% i lewy padding na 200px */
  5. <div id="container">
  6. <div id="left"></div>
  7. <div id="right"></div>
  8. </div>


Ten post edytował vokiel 18.05.2010, 22:23:28


--------------------
Go to the top of the page
+Quote Post
varez
post
Post #5





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


vokiel,
tak nie podziała.
wartość auto jest domyślna dla DIV, poza tym w3c mówi, że dla elementów z float musi być podane wartości width

dodatkowo sprawdziłem -> układa się jedno pod drugim jak tylko wypełnimy tekstem diva po prawej

druga wersja jeszcze dziwniejsza -> width 100% + padding, który wlicza się do długości? to już na pewno będzie jedno pod drugim..

ale tez sprawdziłem.. jest jedno pod drugim, a gratis suwak poprzeczny winksmiley.jpg


edit: jakby to bylo takie proste to bym nie przychodzil z tym na forum..

Ten post edytował varez 18.05.2010, 22:40:24
Go to the top of the page
+Quote Post
croc
post
Post #6





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


Ciekawe kiedy CSS pozwoli w końcu na jakieś obliczenia arytmetyczne.
Powód edycji: [thek]: gdyby w przyszłości offtopów nie robiłbyś bylibyśmy wdzięczni :)
Go to the top of the page
+Quote Post
varez
post
Post #7





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


też mi się marzy smile.gif coś podstawowego jest (albo to tylko rozszerzenie opery?) -- tj inna reguła jak szerokosc jest taka, albo taka, ale to nie to samo..
niby mozna kombinowac z display: table-cell, ale to juz i tak prawie tabela, a znowu IE tego nie załapie..

no nic, na tabeli chyba zrobie (ale pisac jak jest pomysl)

Ten post edytował varez 18.05.2010, 22:48:43
Go to the top of the page
+Quote Post
agata
post
Post #8





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 4.12.2009

Ostrzeżenie: (0%)
-----


musisz w kontenerze zdeklarować inline.

Jednak nadal musisz dać minusowe marginesy bo jak powiedziałam wcześniej 100% width nie równa się 100% okna przeglądarki, ew. musisz dać np. 101%

  1. <div id="all" style="width: 100%; background-color: #000; display: inline">
  2. <div id="left" style="width: 200px; float: left; background-color: #fff000">fdfd</div>
  3. <div id="right" style="width: auto; background-color: #eee444">fsf</div>
  4. </div>


kolory przykładowe do łatwiejszego określenia divów
Go to the top of the page
+Quote Post
pedro84
post
Post #9





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

Ostrzeżenie: (0%)
-----


Masz gdzieś namieszane w stylu, bo sposób vokiel'a musi działać. Co Ci nie działa, jak robisz tym sposobem?


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
vokiel
post
Post #10





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


@pedro84 jednak nie musi winksmiley.jpg

To powinno działać (u mnie na ff 3.6.3 działa)
  1. <style type="text/css">
  2. div {height: 200px; margin: 0px; padding: 0px;}
  3. #container {width: 100%;}
  4. #left {float: left; width: 200px; background: red;}
  5. #right {display: table-cell; margin-left: -200px; padding-left: 200px; background: green;}
  6. <div id="container">
  7. <div id="left">Test 1</div>
  8. <div id="right">test 2 test 2 test 2 test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2</div>
  9. </div>


--------------------
Go to the top of the page
+Quote Post
croc
post
Post #11





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


Cytat(agata @ 18.05.2010, 23:49:37 ) *
musisz w kontenerze zdeklarować inline.

Wątpię by to cokolwiek dało, ale chcę napisać coś innego. Twoje rozwiązanie jest maksymalnie nieeleganckie. Jak można dawać div-ovi właściwość inline?? Słyszałaś kiedyś o czymś takim jak <span> ?
Go to the top of the page
+Quote Post
agata
post
Post #12





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 4.12.2009

Ostrzeżenie: (0%)
-----


Cytat(croc @ 19.05.2010, 10:08:36 ) *
Twoje rozwiązanie jest maksymalnie nieeleganckie. Jak można dawać div-ovi właściwość inline?? Słyszałaś kiedyś o czymś takim jak <span> ?


eleganckie nie eleganckie działa...

co do span nie nie słyszałam w szkole byłam tongue.gif - chodziło o przykładowe przedstawienie rozwiązania więc nie czepiaj się szczegółów.
Go to the top of the page
+Quote Post
varez
post
Post #13





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


vokiel, byloby fajne, ale dziura się robi na IE (każdym)..
i dziwne że to w ogole dziala na table-cell pod ie6.

ale generalnie bardziej paskudne od inline dla diva jest dodawanie ujemnych marginesow moim zdaniem.. no kurcze, pomyslcie, co to jest "margines"..

wiec nie wiem, cudowna poprawka dla ie plus ujemny margines, czy po prostu zwykla tabela ktora przynajmniej zadziała jak chce?
Go to the top of the page
+Quote Post
tehaha
post
Post #14





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


użyj tabelki, ja rozumiem, że w dzisiejszych czasach użytkownicy stali się na nie uczuleni i unikają ich jak ognia, ale w takich przypadkach jak ten jest to bardzo dobre rozwiązanie i przynajmniej nie musisz się bać, że pod jakąś przeglądarką się rozwali
Go to the top of the page
+Quote Post
vokiel
post
Post #15





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Tabelki? Do dwóch div'ów? chyba żartujesz sobie...

IE jest kapryśne, irytujące. Tak działa też w IE v8 nawet v6, poza tym w Operze, FF, Chrome winksmiley.jpg
  1. <style type="text/css">
  2. html, body {margin: 0px; padding: 0px;}
  3. div {height: 200px; margin: 0px; padding: 0px;}
  4. #container {width: 100%;}
  5. #left {float: left; width: 200px; background: red;;}
  6. #right {margin-left: -200px; padding-left: 200px; background: green;}
  7. <!--[if IE]>
  8. <style type="text/css" media="all">
  9. #right {margin-left: 0px; padding-left: 0px;}
  10. </style>
  11. <![endif]-->
  12. <div id="container">
  13. <div id="left">Test 1</div>
  14. <div id="right">test 2 test 2 test 2 test 2test 2test 2test 2test
  15. 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test
  16. 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test
  17. 2test 2test 2test 2test 2test 2test 2</div>
  18. </div>
  19. </body>


Ale to wyżej to jakby hack na IE, myślę, że lepiej z pozycjonowaniem absolutnym. Też działa w każdej z w/w przeglądarek, a wygląda ciut lepiej, w dodatku bez tych ujemnych marginesów;)
  1. <style type="text/css">
  2. html, body {margin: 0px; padding: 0px;}
  3. div {height: 200px; margin: 0px; padding: 0px;}
  4. #container {width: 100%; position:relative;}
  5. #left {float: left; width: 200px; background: red;}
  6. #right {position: absolute; left: 200px; background: green;}
  7. <div id="container">
  8. <div id="left">Test 1</div>
  9. <div id="right">test 2 test 2 test 2 test 2test 2test 2test 2test
  10. 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test
  11. 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test 2test
  12. 2test 2test 2test 2test 2test 2test 2</div>
  13. </div></body>


Ten post edytował vokiel 20.05.2010, 06:57:32


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 11:34