![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) ![]() ![]() |
Witam. Mam pewien problem z ustawieniem elementu (zaznaczony czerwonym kolorem na obrazku poniżej) dla którego jest przypisana wartość fixed. Zrobiłem stronę w rozdzielczości 920px i cała zawartość jest na środku. Problem w tym że po prawej stronie na samym końcu ma być element, który ma wartość fixed i problem w tym że ucieka aż do samego końca, do paska przewijania. Jak zrobić aby element był na samym końcu prawej strony, ale trzymał się rozdzielczości 920px, która jest ustawiona w section? Oczywiście element fixed znajduje się w section i nie wiem dlaczego ignoruje podaną szerokość przypisaną dla section.
Pomarańczową przerywaną linią zaznaczyłem granice strony. (IMG:http://i.imgur.com/7gP8yBL.jpg) Ten post edytował Generic 27.07.2015, 22:33:37 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) ![]() ![]() |
Bo fixed ma to do siebie, że się niczego "nie trzyma". Spróbuj nadać section position:relative;
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) ![]() ![]() |
Wrzucisz na jsfiddle?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Jeśli się clear oraz float robi to chyba najpierw wypada wiedzieć jak to działa (IMG:style_emoticons/default/smile.gif) Jeśli tam ma po prostu być i przewijać się z całym section, to masz już rozwiązane.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) ![]() ![]() |
Jeśli się clear oraz float robi to chyba najpierw wypada wiedzieć jak to działa (IMG:style_emoticons/default/smile.gif) Jeśli tam ma po prostu być i przewijać się z całym section, to masz już rozwiązane. Nie mam rozwiązanego bo chce aby element któremu jest przypisana wartość fixed znajdował sie na zielonym tle czyli w section, a póki co ucieka do prawej az do konca prawej strony przeglądarki i jest przy pasku przewijania. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) ![]() ![]() |
czerwony panel musi być na zielonym tle natomiast ma on sie znajdować po prawej stronie, a ty wyrzuciłeś go z zielonego tła. |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
To o czym wspomniałem to fakt, byś przemyślał, czy jest tam sens fixed robić. Wywal position, right i clear a wstaw float: right (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Z Twojego opisu to nie wynika. Ja zrozumiałem, że ma lewą krawędzią być styczny z obszarem (na rysunku pomarańczową kreską).
Ale skoro ma być wewnątrz, to wystarczy przesunąć go o jego szerokość, tu 50px, czyli margin-left na 200-50. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) ![]() ![]() |
To o czym wspomniałem to fakt, byś przemyślał, czy jest tam sens fixed robić. Wywal position, right i clear a wstaw float: right (IMG:style_emoticons/default/wink.gif) Niestety fixed to priorytet gdyż musi on być cały czas widoczny przy przewijaniu strony i nie przewijać sie. Zrobiłem to jeszcze w ten sposób: http://jsfiddle.net/hgf1rxac/6/ lecz zapewe to nie jest dobre rozwiązanie. |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Fixed samo w sobie pozycjonuje się względem okna/viewportu, a nie rodzica i tego nie zmienisz :/ Można hacki pewne stosować, ale jednym z tych pewniejszych jest to,co zaprezentował @trueblue. Centrujesz z użyciem left: 50% element i marginesem ustawiasz tam, gdzie chcesz. W większości przypadków ten margines to połowa szerokości rodzica pomniejszona o szerokość samego elementu. I tu jest właśnie problem, bo trzeba z góry tę szerokość znać albo na bieżąco z użyciem JS obliczać. Musisz jednak jedną rzecz pamiętać... Taki element wrzucony jako pierwszy jest wyłączony z hierarchii elementów i zakryje elementy będące za nim. Z kolei wstawiony jako dalszy ustawia się poniżej elementów blokowych przed nim.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) ![]() ![]() |
Fixed samo w sobie pozycjonuje się względem okna/viewportu, a nie rodzica i tego nie zmienisz :/ Można hacki pewne stosować, ale jednym z tych pewniejszych jest to,co zaprezentował @trueblue. Centrujesz z użyciem left: 50% element i marginesem ustawiasz tam, gdzie chcesz. W większości przypadków ten margines to połowa szerokości rodzica pomniejszona o szerokość samego elementu. I tu jest właśnie problem, bo trzeba z góry tę szerokość znać albo na bieżąco z użyciem JS obliczać. Musisz jednak jedną rzecz pamiętać... Taki element wrzucony jako pierwszy jest wyłączony z hierarchii elementów i zakryje elementy będące za nim. Z kolei wstawiony jako dalszy ustawia się poniżej elementów blokowych przed nim. na pewno istnieje jakieś logiczne rozwiązanie. zobacz że sam facebook podczas scroolowania trzyma zawsze dwie reklamy które się nie przewjają. |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Logiczne rozwiązania:
Na zewnątrz obszaru "920": http://jsfiddle.net/hgf1rxac/7/ Wewnątrz obszaru "920": http://jsfiddle.net/hgf1rxac/8/ + to, o czym pisał thek, tj. użycie JS. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) ![]() ![]() |
Logiczne rozwiązania: Na zewnątrz obszaru "920": http://jsfiddle.net/hgf1rxac/7/ Wewnątrz obszaru "920": http://jsfiddle.net/hgf1rxac/8/ + to, o czym pisał thek, tj. użycie JS. nie rozumiem jaki wy tu błąd widzicie. skoro szerokość rodzica jest niezmienna oraz szerokość samego elementu to po co obliczać to za każdym razem w js? Nie wiem czy wiecie ale ta strona na każdej rozdzielczości wygląda tak samo i nic się nie powiększa i nie zmniejsza. @edit dodatkowo nie rozumiem jaki cel ma centrowanie tego skoro i tak dodatkowo dopisaliście margin-left. Nie można po prostu dać same margin left z większą wartością? Być może pisząc ten kod mieliście na myśli że szerokość będzie sie dopasowywać do rozmiaru okna jednak nie to będzie strona o ustalonym rozmiarze i element nie musi się znajdować kiedy użytkownik postanowi sobie zmniejszyć okno bo to spowodowałoby zakrycie innych elementów na stronie. Ten post edytował Generic 29.07.2015, 23:49:46 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
nie rozumiem jaki wy tu błąd widzicie. skoro szerokość rodzica jest niezmienna oraz szerokość samego elementu to po co obliczać to za każdym razem w js? Nie wiem czy wiecie ale ta strona na każdej rozdzielczości wygląda tak samo i nic się nie powiększa i nie zmniejsza. Jaki błąd? JS? Bo można odnieść wrażenie, że rozwiązania, które dostajesz nie satysfakcjonują Cię, dodatkowo wspominasz o FB. @edit dodatkowo nie rozumiem jaki cel ma centrowanie tego skoro i tak dodatkowo dopisaliście margin-left. Nie można po prostu dać same margin left z większą wartością? Zrobiłem stronę w rozdzielczości 920px i cała zawartość jest na środku. Problem w tym że po prawej stronie na samym końcu ma być element Być może pisząc ten kod mieliście na myśli że szerokość będzie sie dopasowywać do rozmiaru okna jednak nie to będzie strona o ustalonym rozmiarze i element nie musi się znajdować kiedy użytkownik postanowi sobie zmniejszyć okno bo to spowodowałoby zakrycie innych elementów na stronie. Nie miałem tego na myśli. Kod w JSFiddle, jeśli dobrze rozumiem spełnia Twoje wymagania, choć druga część powyższej wypowiedzi brzmi mgliście. Szerokość kontentu nie dopasowuje się do okna, ale okno może zmieniać szerokość, a co za tym idzie nie możesz na sztywno dać margin-left, bo element będzie w stałej odległości od lewej krawędzi (przy zmianie szerokości raz będzie przykrywał kontent, innym razem będzie poza). Ten post edytował trueblue 30.07.2015, 07:29:52 |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 0 Dołączył: 31.10.2012 Ostrzeżenie: (10%) ![]() ![]() |
Jaki błąd? JS? Bo można odnieść wrażenie, że rozwiązania, które dostajesz nie satysfakcjonują Cię, dodatkowo wspominasz o FB. Nie miałem tego na myśli. Kod w JSFiddle, jeśli dobrze rozumiem spełnia Twoje wymagania, choć druga część powyższej wypowiedzi brzmi mgliście. Szerokość kontentu nie dopasowuje się do okna, ale okno może zmieniać szerokość, a co za tym idzie nie możesz na sztywno dać margin-left, bo element będzie w stałej odległości od lewej krawędzi (przy zmianie szerokości raz będzie przykrywał kontent, innym razem będzie poza). nie że niesatysfakcjonują mnie po prostu nie są takie jakie powinny. w twoich kodach problemem jest to że gdy zmniejsza sie okno przeglądarki element zaczyna zasłaniać inne części a jak się jeszcze bardziej zmniejszy okno przeglądarki to element znika i nigdzie go nie ma. a żeby było w porządku powinno być tak że element trzyma stałą odległość od innych elementów i podczas zmniejszania okna trzeba przesunac pasek przewijania żeby go zobaczyć. zoobrazowałem problem poniżej w obrazku. (IMG:http://i.imgur.com/3R1Ae6u.jpg) Czy istnieje jakiś sposób żeby wyłączyć przesuwanie się elementu kiedy okno przeglądarki zmniejsza sie tak aby cały czas był na swojej pozycji? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 18:46 |