CliffCloud / Leaflet.EasyButton

leaflet control buttons with icons and callbacks
http://cliffcloud.github.io/Leaflet.EasyButton/v1/
MIT License
524 stars 123 forks source link

Icon not centered on mobile #97

Open delimmy opened 4 years ago

delimmy commented 4 years ago

Icon looks centered on desktop but is pushed to the right on mobile (iPhone X)

Screen Shot 2020-03-29 at 12 25 33 AM

const ezButton = L.easyButton('<span style="font-size:2em; line-height:26px; color:#FF3D2D;">&hearts;</span>', function (btn, map) {
})

Any ideas how to fix?

atstp commented 4 years ago

My hunch is that this is more of general styling issue than an EasyButton issue. I'm happy to help with what I can though.

I'd guess that this stems from putting a large/wide character into a smaller, square box.

If you set font-size:26px (to match your line-height), how is centering affected?

kitchensjn commented 4 years ago

I'm probably late to this thread but just had to work through this myself:

const ezButton = L.easyButton(
    '<span style="font-size:2em; line-height:26px; color:#FF3D2D;">&hearts;</span>', 
    function (btn, map) {}
)
ezButton.button.style.padding = '0px';

This will remove the padding and allow your icon to be centered within the button. There may be a more elegant way of changing the button style when you initially create it. Hope this helps get you on the right track!

sonfire186 commented 4 years ago

I found the same problem on desktop computers

sonfire186 commented 4 years ago

https://github.com/CliffCloud/Leaflet.EasyButton/issues/48

function _fixEasyButtonSize(button) {
    var buttonElement = button.button;
    buttonElement.style.padding = '0px';
    buttonElement.style.width = "26px";
    buttonElement.style.height = "26px";
    buttonElement.style.minWidth = "26px";
    buttonElement.style.minHeight = "26px";
}
_fixEasyButtonSize(button);
dgva commented 3 years ago

For me, adding padding: 0; directly to the CSS file, in the initial property, solves the issue:

.leaflet-bar button,
.leaflet-bar button:hover {
...
padding: 0;
}

In my case, i use a trick to place icons everywhere, using an extra CSS file and a function. But in the end, it results in the same problem as posted here, so even though they are slightly different situations, this solution should work for both.

F4FXL commented 8 months ago

I am using leaflet embeded into a Wordpress site. Had a similar issue. It turned out to be the Wordpress CSS setting some styles to the button. Adding this as an inline css solved the issue for me.

button.easy-button-button   {
    padding: unset !important;
    font-size: unset !important;
    font-weight: unset !important;
    text-transform: unset !important;
    -webkit-transition: unset !important;;
    transition: unset !important;
}