Obsługa starszych przeglądarek
Jeśli obsługa starszych przeglądarek jest koniecznością, więc nie możesz przejść z wieloma tłami lub gradientami, prawdopodobnie będziesz chciał zrobić coś takiego na wolnym div
elemencie:
#background {
position: fixed;
top: 0;
left: 0;
width: 50%;
height: 100%;
background-color: pink;
}
Przykład: http://jsfiddle.net/PLfLW/1704/
Rozwiązanie wykorzystuje dodatkowy stały element div, który wypełnia połowę ekranu. Ponieważ jest naprawiony, pozostanie na miejscu nawet podczas przewijania przez użytkowników. Być może będziesz musiał później majstrować przy niektórych indeksach Z, aby upewnić się, że inne elementy znajdują się powyżej elementu div tła, ale nie powinno to być zbyt skomplikowane.
Jeśli masz problemy, po prostu upewnij się, że reszta treści ma indeks Z wyższy niż element tła i powinieneś być gotowy.
Nowoczesne przeglądarki
Jeśli zależy Ci tylko na nowszych przeglądarkach, możesz skorzystać z kilku innych metod:
Gradient liniowy:
To zdecydowanie najłatwiejsze rozwiązanie. Możesz użyć gradientu liniowego we właściwości background ciała, aby uzyskać różne efekty.
body {
height: 100%;
background: linear-gradient(90deg, #FFC0CB 50%, #00FFFF 50%);
}
Powoduje to twarde odcięcie na poziomie 50% dla każdego koloru, więc nie ma „gradientu”, jak sugeruje nazwa. Spróbuj poeksperymentować z „50%” elementem stylu, aby zobaczyć różne efekty, które możesz osiągnąć.
Przykład: http://jsfiddle.net/v14m59pq/2/
Wiele tła z rozmiarem tła:
Możesz zastosować kolor tła do html
elementu, a następnie zastosować obraz tła do body
elementu i użyć background-size
właściwości, aby ustawić go na 50% szerokości strony. Daje to podobny efekt, chociaż tak naprawdę będzie używany tylko w przypadku gradientów, jeśli używasz jednego lub dwóch obrazów.
html {
height: 100%;
background-color: cyan;
}
body {
height: 100%;
background-image: url('http://i.imgur.com/9HMnxKs.png');
background-repeat: repeat-y;
background-size: 50% auto;
}
Przykład: http://jsfiddle.net/6vhshyxg/2/
DODATKOWA UWAGA: Zauważ, że oba elementy html
i body
są ustawione na height: 100%
w ostatnich przykładach. Ma to na celu upewnienie się, że nawet jeśli treść jest mniejsza niż strona, tło będzie miało co najmniej wysokość obszaru roboczego użytkownika. Bez wyraźnej wysokości efekt tła spadnie tylko do zawartości strony. To także ogólnie dobra praktyka.
linear-gradient
Ciężko odcięcia działa również dla pikseli:background: linear-gradient(90deg, #FFC0CB 225px, #00FFFF 0, #00FFFF 100%);
background: linear-gradient(90deg, #FFC0CB 25%, #00FFFF 0);
.Proste rozwiązanie pozwalające uzyskać tło „podzielone na dwa”:
Możesz również użyć stopni jako kierunku
źródło
Możesz dokonać trudnego rozróżnienia zamiast liniowego gradientu, ustawiając drugi kolor na 0%
Na przykład,
Gradient -
background: linear-gradient(80deg, #ff0000 20%, #0000ff 80%);
Trudne wyróżnienie -
background: linear-gradient(80deg, #ff0000 20%, #0000ff 0%);
źródło
Jest to więc okropnie stare pytanie, na które już została zaakceptowana odpowiedź, ale uważam, że ta odpowiedź zostałaby wybrana, gdyby została opublikowana cztery lata temu.
Rozwiązałem to wyłącznie za pomocą CSS i BEZ DODATKOWYCH ELEMENTÓW DOM! Oznacza to, że te dwa kolory to po prostu kolory tła JEDNEGO ELEMENTU, a nie kolor tła dwóch.
Użyłem gradientu i ponieważ ustawiłem stopnie kolorów tak blisko siebie, wygląda na to, że kolory są wyraźne i nie mieszają się.
Oto gradient w natywnej składni:
Kolor
#74ABDD
zaczyna się0%
i jest nadal#74ABDD
na49.9%
.Następnie wymuszam przesunięcie gradientu na mój następny kolor w
0.2%
obrębie wysokości elementów, tworząc coś, co wydaje się być bardzo ciągłą linią między dwoma kolorami.Oto wynik:
A oto mój JSFiddle!
Baw się dobrze!
źródło
background: repeating-linear-gradient(var(--grayLight), var(--grayLight) 430px, rgba(0,0,0,0) 201px, rgba(0,0,0,0) 100%);
powinno to działać z czystym CSS.
testowane tylko w Chrome.
źródło
W poprzednim projekcie, który musiał obsługiwać IE8 + i osiągnąłem to za pomocą obrazu zakodowanego w formacie adresu URL danych.
Obraz miał rozmiar 2800x1px, połowa obrazu była biała, a połowa przezroczysta. Działało całkiem dobrze.
Możesz zobaczyć, jak działa tutaj JsFiddle . Mam nadzieję, że to może komuś pomóc;)
źródło
Używałem
:after
i działa we wszystkich głównych przeglądarkach. proszę sprawdzić link. po prostu trzeba uważać na indeks z, ponieważ po ma pozycję bezwzględną.link skrzypcowy
źródło
Możesz użyć
:after
pseudo-selektora, aby to osiągnąć, chociaż nie jestem pewien, czy ten selektor jest kompatybilny wstecz.Użyłem tego, aby mieć dwa różne gradienty na tle strony.
źródło
Użyj na swoim obrazie bg
Podział pionowy
Podział poziomy
Przykład
źródło
background-position: center center
Jednym ze sposobów zaimplementowania problemu, aby wprowadzić jeden wiersz w swoim div:
Oto kod demonstracyjny i więcej opcji (pozioma, ukośna itp.). Możesz kliknąć „Uruchom fragment kodu”, aby zobaczyć go na żywo.
źródło
Najbardziej kuloodporną i poprawną semantycznie opcją byłoby użycie pseudoelementu o stałej pozycji (
::after
lub::before
). Korzystając z tej techniki nie zapomnij ustawićz-index
elementów wewnątrz kontenera. Pamiętaj też, że tacontent:""
reguła dla pseudoelementu jest potrzebna, w przeciwnym razie nie zostanie renderowana.Przykład na żywo: https://jsfiddle.net/xraymutation/pwz7t6we/16/
źródło
źródło
To jest przykład, który będzie działał na większości przeglądarek.
Zasadniczo używasz dwóch kolorów tła, pierwszy zaczyna się od 0% i kończy na 50%, a drugi zaczyna się od 51% i kończy na 100%
Używam orientacji poziomej:
Do różnych ustawień możesz użyć http://www.colorzilla.com/gradient-editor/
źródło
jeśli chcesz używać
linear-gradient
z 50% wysokości:źródło