2012-04-09 11 views
30

Mam dziwne pytanie. Na mojej stronie mam główny obraz planety w jakiejś ciężkiej mgławicy. Mam to skonfigurowane, więc minimalna szerokość to 1000 pikseli, a maksymalna to 1500 pikseli. Mam boki zanikające i to wygląda świetnie na większych ekranach. Chciałbym spróbować, kiedy na przykład patrzysz na urządzenie mobilne i obcinasz szerokość 1000 pikseli, chciałbym, żeby obraz miał 1300 pikseli szerokości, wyśrodkowany i 150 pikseli jest wycięty z każdej strony, więc nie widać w ogóle zaniku, ale nadal można go powiększyć, szerokość okna staje się większa, tak jak duży iMac, a następnie zniknięcie staje się widoczne po przekroczeniu 1300 pikseli szerokości.rozmiar działki oparty na szerokości okna

Początkowo myślałem o zrobieniu czegoś z ujemnymi marginesami po obu stronach, ale nie mogłem zmusić tego do pracy, zachowując maksymalną i mieszaną szerokość.

To jest ta konkretna sekcja kodu ze strony, chociaż html i css są tam, aby każdy mógł ją zobaczyć, wystarczy użyć polecenia "fine", aby znaleźć identyfikator div dla dalszego wyglądu.

<div style="position:relative;width:100%;"> 
    <div id="help" style=" 
     position:relative; 
     z-index:1; 
     height:100%; 
     min-width: 1000px; 
     max-width: 1500px; 
     margin: 0 auto; 
    "> 
     <img src="http://i.stack.imgur.com/tFshX.jpg" border="0" style="width:100%;"> 
    </div> 
</div> 

Wszelkie przemyślenia na ten temat są bardzo bliskie pracy w taki sposób, w jaki chciałbym, wystarczy drobna korekta.

+0

co jeśli umieścić obraz jako tło div i uczynić jego background-position do centrum? – szajmon

+1

+1 - ładna strona i podchwytliwe pytanie – Alain

+0

haha ​​dziękuje, cieszę się, że podoba Ci się strona, po tym jest tylko kwestia wdrażania treści. O tym, że robię to jako tło, nie jestem pewien, jak to by to zmieniło, ponieważ wciąż jest to div, który się zmienia. Chyba pytanie brzmi: czy możesz poprosić o zmianę w css na podstawie szerokości okna? – loriensleafs

Odpowiedz

9

Brzmi jak trzeba responsive web design:

http://www.alistapart.com/articles/responsive-web-design/

Korzystanie z tych technik można tworzyć własne reguły CSS, które zwalczają wielkości ekranów tylko mobilnych.

+0

To jest dobra droga. Warto przejrzeć kod źródłowy szkieletu css, nawet jeśli nie trzeba go dotykać; w pliku base.css lub skeleton.css znajdują się przykłady, jak sprawić, aby określone style miały wpływ tylko wtedy, gdy ekran jest mały: http://www.getskeleton.com/ – AlexMA

+0

hmm, więc ten konkretny problem nie ogranicza się do urządzeń mobilnych , jest to problem dotyczący szerokości, który występuje również w oknie przeglądarki tego wymiaru. – loriensleafs

+0

... Prawdopodobnie powinienem przeczytać dalej w tym artykule, zanim to napisałem, pozwól mi zobaczyć, czy to ma to, czego potrzebuje, wygląda na to, że może – loriensleafs

4

Spróbuj pozycjonowanie bezwzględne:

<div style="position:relative;width:100%;"> 
    <div id="help" style=" 
    position:absolute; 
    top: 0; 
    right: 0; 
    bottom: 0; 
    left: 0; 
    z-index:1;"> 
     <img src="/portfolio/space_1_header.png" border="0" style="width:100%;"> 
    </div> 
</div> 
+0

hmm, więc działa pod kątem dopasowania do ekranu o szerokości 1000 pikseli. Ale czy możliwe jest, aby obraz, który ma okno o wielkości 1000 pikseli lub mniej, miałby być ukryty, ale nie tylko po jednej stronie, po obu stronach jednakowo, ale nadal zachować zdolność do maksymalnej szerokości 1500 pikseli? – loriensleafs

5

Dobra sztuczka polega na użyciu wewnętrznego pudła-cienia, i niech zrobi to wszystko dla ciebie, zamiast nałożyć je na obraz.

+0

działa to z maską webkit-mask? Dobry pomysł na maskowanie, może dobrze współpracować z pomysłem Kingjeffreya powyżej dla div reseizing część. – loriensleafs

5

Live Demo

Oto faktyczna realizacja tego, co opisane. Przepisałem trochę twój kod przy użyciu najnowszych najlepszych praktyk, aby zaktualizować. Jeśli zmienisz rozmiar okien przeglądarki pod 1000px, prawa i lewa strona obrazu zostaną obcięte przy użyciu ujemnych marginesów i będą węższe od 300px. Jednostki

<style> 
    .container { 
     position: relative; 
     width: 100%; 
    } 

    .bg { 
     position:relative; 
     z-index: 1; 
     height: 100%; 
     min-width: 1000px; 
     max-width: 1500px; 
     margin: 0 auto; 
    } 

    .nebula { 
     width: 100%; 
    } 

    @media screen and (max-width: 1000px) { 
     .nebula { 
     width: 100%; 
     overflow: hidden; 
     margin: 0 -150px 0 -150px; 
     } 
    } 
</style> 

<div class="container"> 
    <div class="bg"> 
     <img src="http://i.stack.imgur.com/tFshX.jpg" class="nebula"> 
    </div> 
</div> 
54

rzutni dla CSS

vw, vh 1vw = 1% of viewport width 1vh = 1% of viewport height

ten sposób, nie trzeba pisać wiele różnych zapytań mediów lub JavaScript. Po prostu uwaga dla nowo przybyłych.

Jeśli wolisz JS

window.innerWidth; window.innerHeight;

+0

FYI, 'vw',' vh' nie są obsługiwane Kunal

+0

@Kunalne dzięki. Nie jest również obsługiwany w kompasie. – atilkan

+2

(przynajmniej w Chrome) nie jest to procent * szerokości *, ale * szerokości * ekranu. Rozmiar systemu Windows jest zmieniany. Rozmiar ekranu pozostaje stały ... –

Powiązane problemy