Proszę rozważyć mamy prosty plik SVG, zawierający kod zaokrąglonego prostokąta którego promień naroża równy 10:SVG jako granicy obrazu na ekranach Retina
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
<rect fill="#FACE8D" x="0" y="0" width="100" height="100" rx="10" ry="10" />
</svg>
Oto jak to wygląda w Chrome:
teraz możemy używać tego obrazu jako wartość dla border-image
własności w CSS:
.box {
@include border-image(url('rounded-rectangle.svg') 10);
border-width: 10px;
background: #FFF;
width: 50px;
height: 50px;
}
Zobaczmy teraz, jak to wygląda w różnych przeglądarkach i na różnych urządzeniach: genialny, obraz rozciągnięty zgodnie z oczekiwaniami na granicach elementu.
Jednakże, kiedy zobaczymy te na urządzeniach z ekranami siatkówki, mamy trochę totalnej bzdury: SVG wydaje się być uprawiane dwa razy. Wszystko, co widzimy, to jeden ogromny kąt.
Jeśli zastąpimy SVG podobnym PNG, wszystko jest w porządku. Spójrz (iOS 5.1 malowane części wewnętrznych elementów z kolorem obrazu z jakiegoś powodu, to jednak nie jest przedmiotem tego pytania):
Pytanie brzmi : czy można to załatwić? Może, mam złe SVG? Lub muszę ustawić meta-znacznik rzutni z kilkoma trudnymi rzeczami, aby zatrzymać skalowanie od border-image
?
Problem jest dość ważny. Przede wszystkim SVG jest popularny głównie z powodu siatkówek. Jest to narzędzie do dekorowania rzeczy bez obawy, że będą wyglądać jak bzdury na podwójnych pikselach.
drugie, mechanika i składnia właściwości border-image
jest dość podobna do własności zastrzeżonej w -webkit-mask-box-image
, za pomocą którego jest jedynym sposobem, aby zaokrąglić narożniki bloków, które zawierają absolutnie pozycjonowane dzieci (na przykład Google Maps v3 mogą być zaokrąglone w Chromes i Safaries tylko przez niego). Ta własność jest bardzo cenna w rozwoju mobilnym dzięki komponentom sieciowym, gdy musimy ustawić jakiś skomplikowany kontur na elemencie interfejsu użytkownika. Niestety, przez tę właściwość podwaja się jej wymiary SVG, podobnie jak border-image
.
AKTUALIZACJA. Wygląda na to, że ten problem może być spowodowany przez updated SVG processor wprowadzony w iOS 6.0: na siatkówce Wymiary SVG są obliczane w pikselach CSS, a współrzędne są obliczane na siatkówce. Są śledzone somebugs, które mają coś podobnego do mojego problemu.
Just a strzał w ciemności, spróbuj zastępując wymiary z atrybutem 'viewBox':'
Mam ten sam problem, a to nie rozwiązać problem dla mnie. – luksak
Z teraz viewBox wartość "100" oznacza w teorii "100px". Powinno więc być naprawdę mniejsze. Wygląda jednak na to, że w rzeczywistości jest dwukrotnie większy. Czy próbowałeś konwertowania na jednostki fizyczne? Przy standardowej rozdzielczości SVG/CSS wynoszącej 96, 100 pikseli będzie wynosić około 1,04 cala. Spróbuj ustawić szerokość i wysokość SVG i rect na "1.04in" i zobacz, co się stanie. Promienie będą wynosić "0,1 cala". Prawdopodobnie długie ujęcie. –