Czy istnieje sposób na ustawienie obrazu tła o pewną liczbę pikseli z prawej strony jego elementu?
Na przykład, aby ustawić coś o określonej liczbie pikseli (powiedzmy 10) od lewej , tak to zrobiłbym:
#myElement {
background-position: 10px 0;
}
background-position: -10px 0;
? Tylko sprawdzam :)Odpowiedzi:
Uważam, że ta funkcja CSS3 jest pomocna:
O ile wiem, nie jest to obsługiwane w IE8. W najnowszym Chrome / Firefox działa dobrze.
Zobacz: Mogę użyć aby uzyskać szczegółowe informacje na temat obsługiwanych przeglądarek.
Wykorzystane źródło: http://tanalin.com/en/blog/2011/09/css3-background-position/
Aktualizacja :
Ta funkcja jest teraz obsługiwana we wszystkich głównych przeglądarkach, w tym także w przeglądarkach mobilnych.
źródło
right
left
top
bottom
. Na przykład następujące elementy nie będą renderowane:background-position: right 10px 10px
należy je zapisać jakobackground-position: right 10px top 10px
Czy istnieje sposób na ustawienie obrazu tła o pewną liczbę pikseli z prawej strony jego elementu?
Nie.
Popularne obejścia obejmują
margin-right
zamiast tego elementutop right
źródło
Najłatwiejszym rozwiązaniem jest użycie wartości procentowych. Nie jest to dokładnie odpowiedź, której szukałeś, ponieważ poprosiłeś o precyzję pikseli, ale jeśli potrzebujesz czegoś, co ma trochę wypełnienia między prawą krawędzią a obrazem, ustawienie 99% zwykle działa wystarczająco dobrze.
Kod:
źródło
CSS3 zmodyfikował specyfikację,
background-position
aby działał z innym punktem początkowym. Niestety nie mogę znaleźć żadnego dowodu na to, że jest on zaimplementowany w głównych przeglądarkach.http://www.w3.org/TR/css3-background/#the-background-position Patrz przykład 12.
źródło
Version 21.0.1180.89
Jak zaproponowano tutaj , jest to całkiem rozwiązanie dla wielu przeglądarek, które działa idealnie:
Użyłem go, ponieważ funkcja CSS3 polegająca na określaniu przesunięć zaproponowanych w odpowiedzi oznaczonej jako rozwiązanie pytania nie jest jeszcze obsługiwana w przeglądarkach. Na przykład
źródło
Najwłaściwszą odpowiedzią jest nowa składnia cztery wartości dla background-position, ale aż wszystkie przeglądarki obsługują go najlepszym rozwiązaniem jest połączenie wcześniejszych odpowiedzi w następującej kolejności:
źródło
Prostą, ale brudną sztuczką jest po prostu dodanie przesunięcia, którego chcesz do obrazu, którego używasz jako tła. nie da się go utrzymać, ale wykonuje zadanie.
źródło
Działa to w większości nowoczesnych przeglądarek ... oprócz IE (obsługa przeglądarki) . Mimo że strona zawiera listę> = IE9 jako obsługiwane, moje testy się z tym nie zgadzały.
Możesz użyć właściwości calc () css3 w ten sposób;
Dla mnie jest to najczystszy i najbardziej logiczny sposób uzyskania marginesu po prawej stronie. Korzystam również z rezerwowego korzystania
border-right: 10px solid transparent;
z IE.źródło
background-position: 92% 8px; background-position: calc(100% - 12px) 8px;
right 10px center
Składnia ma bardziej rozszerzoną obsługę w przeglądarkach._
przez-
Ok, jeśli rozumiem, o co prosisz, zrobiłbyś to;
Wywołano twój kontener DIV
#main-container
i.my-element
to jest w nim. Użyj tego, aby zacząć;Nawiasem mówiąc, lepiej ćwiczyć korzystanie z klas, jeśli odwołujesz się do elementu niższego poziomu na stronie (zakładam, że stąd moja nazwa się zmienia powyżej.
źródło
Specyfikacja CSS3 zezwalająca na różne pochodzenie pozycji tła jest teraz obsługiwana w Firefox 14, ale wciąż nie w Chrome 21 (podobno IE9 częściowo je obsługuje, ale nie przetestowałem go osobiście)
Oprócz problemu z Chrome, do którego nawiązał @MattyF, znajduje się bardziej zwięzłe streszczenie tutaj: http://code.google.com/p/chromium/issues/detail?id=95085
źródło
Jeśli masz proporcjonalne elementy, możesz użyć:
W tym przykładzie
.valid
byłaby klasa ze zdjęciem i.half
byłaby rzędem o połowie wielkości standardowego.Brudny, ale działa jak urok i można go łatwo opanować.
źródło
Jeśli chcesz na przykład użyć tego do dodawania strzałek / innych ikon do przycisku, możesz użyć pseudoelementów css?
Jeśli naprawdę jest to tło dla całego przycisku, zwykle włączam odstępy do obrazu i po prostu go używam
Ale jeśli muszę dodać na przykład zaprojektowaną strzałkę do przycisku, zwykle mam ten HTML:
I zwykle wykonuj następujące czynności z CSS:
Korzystając z selektora: po, dodaję element za pomocą CSS, aby zawierał tę małą ikonę. Możesz zrobić to samo, dodając rozpiętość lub
<i>
element wewnątrz elementu a. Ale myślę, że jest to czystszy sposób dodawania ikon do przycisków i jest obsługiwany w różnych przeglądarkach.możesz sprawdzić skrzypce tutaj: http://codepen.io/anon/pen/PNzYzZ
źródło
content: '';
,content:0;
ale było to dla mnie przydatne rozwiązanieźródło
użyć środkowej prawej jako pozycji, a następnie dodać przezroczystą ramkę, aby ją przesunąć?
źródło
Jeśli masz element o stałej szerokości i znasz szerokość obrazu tła, możesz po prostu ustawić pozycję tła na: szerokość elementu - szerokość obrazu - odstęp, który chcesz po prawej stronie.
Na przykład: w przypadku elementu o szerokości 100 pikseli i obrazu o szerokości 300 pikseli, aby uzyskać odstęp 10 pikseli po prawej stronie, ustaw go na 100-300-10 = -210px:
Otrzymujesz skrajnie prawe 80 pikseli obrazu po lewej stronie elementu i odstęp 20 pikseli po prawej stronie.
Wiem, że to może zabrzmieć głupio, ale czasem oszczędza czas ... Używam tego tak dużo w pionie (przerwa u dołu) do linków nawigacyjnych z tekstem pod obrazem.
Nie jestem jednak pewien, czy dotyczy to twojej sprawy.
źródło
mój problem polegał na tym, że potrzebowałem obrazu tła, aby pozostawał w tej samej odległości od prawej ramki, gdy okno jest przeskalowane, tj. na tablecie / telefonie komórkowym itp. Moim rozwiązaniem jest użycie percenatge takiego:
i przykleja się
źródło
tak! dobrze ustawić obraz tła tak, jakby 0px z prawej strony przeglądarki zamiast z lewej - używam:
źródło