Клуб API Карт

Внутренний отступ в control.Button

KDV
20 марта 2013, 17:16

Никак нельзя без переписывания макета control.Button уменьшить внутренний отступ (padding) у control.Button ?

Я хочу к примеру, чтобы изображение размером 32*32 занимало ВСЮ область кнопки без отступов(ибо 16*16 с дефолтным отступом смотри убожески).

PS Пробовал кроме left, top указать еще padding при размещении на карте - не сработало. Как быть?

8 комментариев
Подписаться на комментарии к посту

А в чем состоит трудность в переписывании макета?

т.е. по каждому чиху макет переписывать? тем самым добавляя потенциальный сбой при переходе на более новую версию API например.

Иконки с padding = 0 достаточно распространенное явление, в часности хотел кнопку ВК добавить в едином стиле со стандартными кнопками инструментов Яндекса. Напиши 100500 строк кода и только тогда простейшая задача будет решена.

ИТОГО: Добавьте плиз кроме left и top атрибут padding еще ибо очевидно по дефолту он >> 0px.

Переписать макет займет сильно меньше букв чем весь ваш пост. ))

Потенциальный сбой это не аргумент. Он может произойти где угодно и когда угодно, лучше фиксировать версию АПИ, если есть опасения.

Если завтра я захочу через опции менять бэкграунд кнопке или еще чтото,

мне нужно просить поддержать все CSS стили в опциях?

 

Можете перекрыть только метод build (без построения своего шаблона) и получить дом-ноду и делать с ней все что угодно.

 

MyButtonLayout = ymaps.templateLayoutFactory.createClass('', {

   build: function () {

       this.constructor.superclass.build.apply(this, arguments);

       this.getParentElement().firstChild.style.padding = '100px';

   }

});

пост не приходится переписывать при смене даж минорных версий API, а вот сайт (а то и не 1) переписывать частично приходится, неприятно когда чтото перестает работать и нельзя сделать и забыть) фиксировать версию api не предлагать ибо некоторые фичи теряются и порой даж качество отрисовки тайлов отличается...от API 1х достаточно заметно. CSS и прочие навороты НЕ нужно, тупо картинка и все, в этом все и дело - не надо усложнять, только картинка на всю кнопку и клик по ней - ВСЕ.

PS За пример пасиб, но padding = '100px' - это по дефолту такой?)))

PPS  - еще короче конструкция так-то... но хотелось бы уж в едином стиле...

 

PS За пример пасиб, но padding = '100px' - это по дефолту такой?)))

нет это пример как можно поменять

 

PPS  - еще короче конструкция так-то... но хотелось бы уж в едином стиле...

Это вполне хорошая конструкция, и правильный подход, позволяющий отделить данные от представления.

Вас не устраивает верстка по-умолчанию (представление) - пишете свою.

Если завязать АПИ с конкретной версткой через опции, повысится связанность компонент, и поддерживать это будет очень не просто.

 

Я в свое время написал пример использования своих макетов в контролах (на примере Твиттер Бутстрап).

И они все там очень простые и понятные.

 

Неужто вывод свойства padding "наружу" стока боли и страдания причиняет разработчикам?)

Ладно бы там супер-пупер сложный алгоритм поведения, но простой отступ внутри кнопки и так сложно... мда.. no comments

Это не сложно, это не логично.

Опции, передаваемые в контрол, отвечают за его поведение, а не за внешний вид.

За внешний вид отвечают макеты.

Если все валить в одну кучу, будет тяжело поддерживаемый интерфейс, лишь это я и пытаюсь Вам объяснить.

При таком раскладе логичнее вывести в опции внешнего вида рядом с атрибутами image, content и title в конструкторе.