Prednedávnom som písal blog ako na responzívnu mapu do dizajnu vašej webstránky. Snáď sa vám páčilo a dnes vám ukážem jeden malý „hack“ ako spraviť „inteligentné“ prekrytie tejto Google mapy.
Prečo by som to robil?
Určite poznáte ten pocit, že scroll-ujete po stránke a prídete k mape, a tam aj skončíte, pretože vám mapa začne scroll-ovať. O to horšie je to na mobiloch.
V prípade, že už parameter scrollwheel, draggable atď… nestačia, pretože napríklad chcete, aby sa na tej mapke dalo scrollovať a hýbať, avšak nie od začiatku, ale až po nejakej akcii užívateľa, tak viete spraviť jeden malý milý fix.
Logika
Po kliknutí chcem aby som mohol v mape scrollovať, hýbať sa, avšak keď opustím myšou priestor mapy, chcem aby som opäť mohol bez problémov scrollovať, bez toho, aby ma zasekla mapa.
Realizácia
Zostáva nám teda popísať si ako tento skvelý „hack“ aplikujeme.
Takže tu máme HTML
<!-- Zaciatok alebo nejaky wrapper pre mapu, nemusi to byt section --> <section id="google-map"> <!-- Do tohto divu si naloadujeme mapu navod najdete v predchadzajucom blogu, link pod clankom --> <div id='location-canvas' style='width:100%;height:300px;'> </div> <!-- A toto je nas MAGIC DIV --> <div class="over-map"> </div> <!-- Koniec sekcie s mapou --> </section>
Do CSS pridáme
#google-map { position: relative; } .over-map { position: absolute; width: 100%; height: 100%; background-color: transparent; top: 10px; right: 10px; z-index: 99; }
A nakoniec si pridáme takúto malú srandičku do JavaScriptu:
$(document).ready(function(){ initialize(); // vytvoríme si objekt nášho magického divu var magicDiv = $('.over-map'); // vytvorime si objekt mapy var magicMap = $('#location-canvas'); /* nabindujeme si klik, tj... ak klikneme na tento magicky div ktory prekryje mapu, tak sa skryje */ magicDiv.click(function(){ $(this).hide(); }); /* nabindujeme si odchod mysky z mapy, tj... ak mys opusti mapu , div ktory prekryje mapu sa znova zobrazi */ magicMap.mouseout(function(){ magicDiv.show(); }); /* Fix pre dotykové obrazovky */ magicMap.bind('touchend', function(){ $('.over-map').show(); }) });
(potrebujeme samozrejme jQuery, vieme to spraviť aj bez jQuery, keby niekto chcel, nech napíše do komentára, doplníme. Teraz sa mi nechce).
A hotovo.
Ešte video, ako to celé funguje, prípadne si skúste na http://www.detroit.sk
A ešte JSFiddle ukážka.