Header ze stała wysokością i content do końca strony

Header ze stała wysokością i content do końca strony
Max1414
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Wrocław
  • Postów:130
0

Witam!

Chcę mieć układ taki:

  • cała góra to header powiedzmy o wysokości 80px
  • potem jest pod nim po lewej menu, które ma wysokość pozostałej części strony minus powiedzmy 50px na stopkę.
  • po prawej od menu jest content z taką samą wysokością jak menu
  • na samym dole jest stopa o stałej wysokości

Jak zrobić taki układ bez javascriptu?

Bo pojawia się problem mieszania px z %. Gdybym chciał zmienną wysokość headera to powiedzmy mógłbym mu dać 10%, content 80%, footer 10%.

edytowany 1x, ostatnio: Max1414
Spine
  • Rejestracja:prawie 22 lata
  • Ostatnio:27 minut
  • Postów:6627
1
Kopiuj
<style type="text/css">
div {
  width: 200;
  height: auto;
  border:1px solid #ff9900;
  position: absolute;
  top:10px;
  bottom: 20px;
  }
</style>

Ustawiasz odpowiedni top, bottom i height jako auto. http://www.quackit.com/css/properties/css_bottom.cfm - tu możesz potestować w polu "Try it yourself!". Jak takiego diva zamkniesz w divie pokrywającym całą powierzchnię strony bez scrolla, to powinieneś uzyskać zamierzony efekt ;)


🕹️⌨️🖥️🖱️🎮
edytowany 4x, ostatnio: Spine
Max1414
o kurcze, dzięki! Już trochę czasu się bawie w php, css, a nie wiedziałem o właściwości bottom :)
Max1414
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Wrocław
  • Postów:130
0

Jednak coś nie do końca to rozwiązuje mój problem. Otóż mam głównego diva tóż po body. Na nim ustawiłem bottom: 40px; height: auto; position: absolute;
Wewnątrz mam content z height: auto; i cały main się dopasowuje do niego, mimo, że chcę, aby minimum zostawało 40px od dołu.

Najprościej rzecz ujmując chodzi mi, żeby nigdy mój div główny - "main" nie był niższy niż wysokość okna - 40px (ani wyższy o ile content tego nie wymaga), a w środku żeby menu i content miał taką samą wysokość.

Tutaj szkic: http://img208.imageshack.us/i/szkico.png/

edytowany 2x, ostatnio: Max1414
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Rzeszów
1

proste: http://jsbin.com/ucetiz/edit#javascript,html,live

zamiast tabel mozesz sobie porobic ladne htmlowe, sematyczne itd elementy - tylko musisz sie pobawic z display i wartosciami table-*

edit: content sobie uzupelnij sam, to juz zadna sztuka

edit2: jakby sie cos sypalo - sprawdz table-layout


edytowany 2x, ostatnio: dzek69
Max1414
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Wrocław
  • Postów:130
0

@dzek69 wreszcie miałem czas się z tym pobawić i faktycznie działa, tyle że... mam taki układ jak na tym linku co podesłałeś (zrobiłem za pomocą cssa) i jest problem bo wewnątrz content mam menu i taki content wewnetrzny jednak ani jedno ani drugie nie chce się rozciągnąć na wysokość komórki, mimo że jest ustawiony height: 100%, nie ma żadnych paddingów, marginów itd. Podglądałem firebugiem i po prostu oblicza jakoś dziwnie wysokość. Dodam, że na chromie działa wszystko OK, natomiast IE i FF źle wyświetla. Z tego co widzę to taki efekt uzyskuje na chromie jak wyłączę height: 100%.

EDIT: z tego co wyczytałem to nie można ustawić wewnątrz komórki height: 100% dla div. No to lipa, problem dalej nie rozwiązany. Czyli zostaje chyba tylko JS.

edytowany 4x, ostatnio: Max1414
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Rzeszów
0

daj linka do "live" przykładu - takiego, którego mogę sobie sam przeklikać firebugiem.


Max1414
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Wrocław
  • Postów:130
0

Na JS Bin to działa, ale spróbuj zapisać jako *.html i odpalić w ff czy chromie wtedy już nie działa.
http://jsbin.com/ucetiz/2/edit#javascript,html,live

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Rzeszów
0

Ramka ma wycięty doctype i bez tego na ff działa ok,
Tak czy tak, robimy z doctype i zgodnie ze standardami, które mówią, że aby elementowi ustawiać procentową wysokość musimy określić wysokość jego rodzica. Tak więc małe zmiany w css:

Kopiuj
body, html { width: 100%; height: 100%; }
.row_max { height: 100%; }

oraz html

Kopiuj
      <div class="row row_max">
        <div id="content">
          <div id="menu">asdasd</div>
          <div id="inner_content">sadads</div>
        </div>
      </div>

Max1414
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Wrocław
  • Postów:130
0

Tak, pamiętałem o tym, ogólnie to zabrakło w moim kodzie tylko ", html" po body w CSS :).

Max1414
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Wrocław
  • Postów:130
0

Kurcze, myślałem, że problem z głowy, ale jednak nie. Okazuje się, że na IE najnowszym nadal to nie działa. FF i Chrome OK.

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Rzeszów
0

a dodałeś jak pisałem klasę max_row ?


Max1414
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Wrocław
  • Postów:130
0

Tak, na FF i Chrome działa, a na IE ogólny szablon jest ok, ale w środkowym wierszu nie rozciąga inner_content i menu na całą wysokość, a tylko dopasowuje do treści wewnątrz

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Rzeszów
1

Jeżeli nic poza rzeczami opisanymi w kodzie się nie zmieniło - to brakuje Ci height: 100%; dla #content.
Możesz zapodać aktualny kod, żebym to "widział", bo coś się mogło pozmieniać i nie mam jak w to zajrzeć.


Max1414
PS. Dzięki za zaangażowanie, bo już spory czas się tutaj udzielasz sam.
Max1414
  • Rejestracja:około 19 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Wrocław
  • Postów:130
0

Próbowałem już height: 100% dla contentu, ale to psuje to po co cała ta zabawa jest - daje 100% (czyli wysokość całej strony), a chcę żeby footer był na dole w oknie.

Kopiuj
 
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
  body, html { width: 100%; height: 100%; }
  .row_max { height: 100%; }

  #main { display: table; width: 100%; height: 100%; }
  .row { display: table-row; }
  #header { 
    display: table-cell; 
    background-color: red;
    width: 100%;
    height: 50px;
  }
  #content {
    display: table-cell;
    background-color: black;
	bottom: 50px;
  }
  
  #inner_content { 
    height: 100%;
    background-color: yellow;
    right: 0;
  }
  
  #menu {
    background-color: gray;
    float: left;
    height: 100%;
    width: 120px;
  }
  
  #footer { 
    display: table-cell;
    background-color: green;
    height: 50px;
  }
</style>
</head>
<body>
  <div id="main">
    <div class="row">
      <div id="header">aaa</div>
    </div>
    
    <div class="row row_max">
      <div id="content">
        <div id="menu">asdasd</div>
        <div id="inner_content">sadads</div>
      </div>
    </div>
    
    <div class="row">
      <div id="footer">sadasdsa</div>
    </div>

  </div>
</body>
</html>
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Rzeszów
1

Fakt, zachowuje się to inaczej niż myślałem.. #menu oraz #inner_content są już w "komórce" i coś to pogłupiało.

Musiałbyś to zrobić na czystych tabelach, bo potrzebowalibyśmy colspan.

Albo opcja2 mówi: zrób na position: absolute oraz użyj box-sizing. Opcja działa od IE8 w górę. Za dużo tłumaczenia, więc wklejam gotowca, ale sądzę, że poświęcisz chwilę na jego zrozumienie. Swoją drogą - nie rozumiem po co u Ciebie były style typu bottom - nie mają one zastosowania jeżeli position nie jest absolute bądź relative ;) Poczytaj sobie o box-sizing oraz o position właśnie, bo one tworzą tu całą tą "sztuczkę". ---> http://pastebin.com/E1YhQYzD

Uprzejmie prosi się o niezjadanie mnie żywcem za budowę layoutu na absolutach. Jak ktoś ma inne propozycje to czekam. Ja tego inaczej nie widzę (ew tabelki, choć dla mnie są mniej "bezpieczne" niż absoluty).


Max1414
myślę, że zrobię po prostu dla IE ten content na 100% i tam layout będzie wyższy niż okno, a na innych przeglądarkach działa dobrze. A przykładzik i tak przejrzę.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)