Twitter Bootstrap CSS wpływa na Mapy Google


147

Używam Twitter Bootstrap i mam mapę Google.

Obrazy na mapie, takie jak znacznik, są wypaczane przez CSS w Bootstrap.

W Bootstrap CSS jest:

img {
    border: 0 none;
    height: auto;
    max-width: 100%;
}

Kiedy wyłączam max-widthwłaściwość za pomocą Firebuga, obraz znacznika pojawia się normalnie. Jak mogę zapobiec wpływowi kodu CSS Bootstrap na obrazy map Google?


Odpowiedzi:


187

W przypadku Bootstrap 2.0 wydawało się, że to działa:

#mapCanvas img {
  max-width: none;
}

6
Pamiętaj, aby dodać, #mapCanvas img { width: auto; display:inline; }jak wspomniano poniżej przez @nodrog
jlb

Z informacji o wydaniu Bootstrap 2.0.3: „Naprawiono regresję w obsłudze responsywnych obrazów od wersji 2.0.1. Ponownie dodaliśmy max-width: 100%; do obrazów domyślnie. Usunęliśmy ją w naszej ostatniej wersji, odkąd mieliśmy ludzi narzekamy na integrację z Mapami Google i innymi projektami, ale zajmujemy teraz inne stanowisko w tej sprawie i będziemy wymagać od programistów wprowadzenia tych poprawek po ich stronie ”.
kevinwmerritt

FYI: Bootstrap 2.0.4 Release Notes: „Dodano specjalny CSS, aby zapobiec max-width: 100%; na ​​obrazach przed zepsuciem renderowania Map Google.”
kevinwmerritt

To dziwne, że w końcu zdecydowali się na hardcode id, zamiast używać class
zerkms,

1
#mapCanvas nie działa dla mnie. Właśnie użyłem mojej klasy .map, której użyłem jako kontenera map Google i to załatwiło sprawę. DZIĘKI!
Fydo

80

Występuje również problem z rozwijanymi selektorami terenu i nakładek, dodanie obu tych elementów rozwiąże problemy ...

#mapCanvas img { 
  max-width: none;
}

#mapCanvas label { 
  width: auto; display:inline; 
} 

Drugi styl będzie dotyczył innych problemów z terenem i polem nakładki w niektórych przeglądarkach.


Tak ! wszystko wydaje się naprawione w połączeniu z odpowiedzią oznaczoną powyżej jako „zaakceptowano”. Dzięki.
Mat

działa jak urok w firefox 17, ale nie w chrome 23. nie wiem dlaczego, ale znalazłem rozwiązanie, po prostu dodaj to:$('.map').on('shown',function(){ google.maps.event.trigger(map, 'resize'); });
yosafatade

Jesteś geniuszem. Dziękuję bardzo. To doprowadzało mnie do szaleństwa :-)
Bear

20

Podaj identyfikator div kanwy mapy map_canvas.

To zatwierdzenie bootstrap zawiera max-width: nonepoprawkę dla id map_canvas(ale to nie zadziała mapCanvas).


Myślę, że tylko zmiana identyfikatora jest konieczna w wersji 2.2.2
jacktrades

nie mogę znaleźć takiego identyfikatora w pliku css
Muhaimin

@robd: Tylko dla ciekawskich, dlaczego to nie zadziała z wyjątkiem map_canvas.
ArunRaj

@ArunRaj, ponieważ poprawka w bootstrapie jest zakodowana na stałe w id #map_canvas (zobacz powiązane zatwierdzenie). W każdym razie ta odpowiedź jest prawdopodobnie nieaktualna, biorąc pod uwagę, że ma prawie 2 lata.
robd

11

Żadna z tych odpowiedzi nie działała dla mnie, więc poszedłem do mojego div i spojrzałem na jego elementy podrzędne. Zobaczyłem nowy div z klasą „gm-style”, więc umieściłem to w moim CSS:

.gm-style img {
    max-width: none;
  }

  .gm-style label {
    width: auto; display:inline;
  }

.. i to rozwiązało problem za mnie.


+1 to jedyna odpowiedź, która pomogła mi naprawić dziwne elementy sterujące „powiększaniem”. (Bootstrap 2)
philfreo,

Dla mnie też zadziałało. Dobre spostrzeganie :)
jeje

Dzięki, dla mnie też pracował. Jedyna odpowiedź, która działała w moim przypadku, aby naprawić dziwne elementy sterujące „zoomem”. (z Foundation 5)
Steffi

3

Chcesz zastąpić regułę max-width w sekcji CSS, używając max-width: none; Wydaje się, że jest to sposób na obejście tego problemu


2

Zmiana #MapCanvas nie działała dla nas przy użyciu klejnotu gmap4rails, ale działała, gdy przeszliśmy na

.map_container img {
    max-width: none;
}

.map_container label {
    width: auto; display:inline;
}

2

Używam gmaps4rails, ta poprawka zrobiła to za mnie:

.gmaps4rails_map img {
    max-width: none;
}
.gmaps4rails_map label {
    width: auto; display:inline;
}

1

Najnowszy program bootstrap 2.0.4 na Twitterze zawiera tę poprawkę bezpośrednio.

Jeśli pakujesz zawartość w a (div class = "container"), jak na stronie demonstracyjnej programu twitter bootstrap, powinieneś dodać style = "height: 100%"


1

Występuje również problem z drukowaniem map za pomocą funkcji Drukuj w dowolnej przeglądarce. Nie img { max-width: 100% !important; }zostanie to naprawione przez powyższy kod: musisz dodać !importantdeklarację w następujący sposób:

@media print {
  img {
    max-width: auto !important;
  }
}

0

Musiałem też wyłączyć box-shadow, a ze względu na kolejność moich włączeń dodałem flagę! Important.

#mapCanvas img {
    max-width: none !important;
    box-shadow: none !important;
}

1
To zadziałało dla mnie. Jeśli masz zamiar głosować na odrzucenie, powinieneś przynajmniej powiedzieć dlaczego.
Redtopia

0

Wszystkie odpowiedzi były maksymalne: brak

dla mnie max-height: dziedziczenie działało .....

Ludzie używają #map, #map_canvas itp. Spójrz na swój nadrzędny div. Jeśli jest niebieski, to będzie #blue img {}

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.