Проблемы с минификацией HTML в AngularJS-проекте

193
26 ноября 2016, 19:42

Есть вот такой HTML:

<div class="footer">
    <div class="tools">
        <a role="button" class="material-button" href="{{item.url}}" target="_blank">
            <i class="icon fa fa-file-text"></i> Запись
        </a>
        <button type="button" class="material-button" ng-click="copyPost(item)">
            <i class="icon fa fa-clipboard"></i> Копировать
        </button> 
        <share url="{{item.url}}" title="{{item.source.name}}" description="{{item.text}}"></share>
    </div>
</div>

HTML-шаблон компонента Share:

<div class="share-block">
    <a class="material-button share vk" target="_blank" href="{{vk}}"><i class="fa fa-vk"></i></a>
    <a class="material-button share fb" target="_blank" href="{{fb}}"><i class="fa fa-facebook"></i></a>
    <a class="material-button share ok" target="_blank" href="{{ok}}"><i class="fa fa-odnoklassniki"></i></a>
    <a class="material-button share gp" target="_blank" href="{{gp}}"><i class="fa fa-google-plus"></i></a>
</div>

В браузере он выводится вот так:

После минификации HTML, он выглядит вот так:

На сколько я понял, это из за того, что при минификации были убраны пробелы. Я залез в сгенерированный минифицированный HTML, чтобы разобраться. В общем, к моему удивлению, между тегами <a> в компоненте share ЕСТЬ пробелы. Между тегом <a> и <button>, которые находятся в диве tools - НЕТ пробела.

Поясните мне, где здесь логика, как исправить ситуацию? Ведь по идее, там должен быть пробел, раз он есть в компоненте share между тегами <a>.

Grunt, grunt-angular-templates.

Answer 1

Сбросьте дефолтный margin у inline-block элементов, задайте например в CSS margin-right: 4px

.material-button {
  display: inline-block;
  margin-right: 4px;
}

Upd. Для уверенности можно ещё сбросить margin с помощью комментария

<a class="material-button"></a><!--
--><a class="material-button"></a>
Answer 2

В общем, единственным более-менее нормальным решением я нашел следующее. Задаем для всей страницы font-size: 0:

body {
  font-size: 0;
}

Далее, везде, где используем текст задаем нужный размер шрифта:

.text {
  font-size: 16px;
}

В таком случае, мы решаем проблему с пробелами в HTML-разметке и CSS. Страницы выглядят одинаково и до, и после сборки.

READ ALSO
Как применять position fixed вместе с flexbox

Как применять position fixed вместе с flexbox

Доброго времени суток, не так давно начал применять flexbox в верстке, и вот столкнулся с такой проблемой - когда устанавливаю фиксированное...

433
Модальное окно bootstrap в мобильных браузерах

Модальное окно bootstrap в мобильных браузерах

Имеется проблема отображения модального окна, созданного с использованием фрэймворка bootstrap, в мобильных браузерах

329
Какая микроразметка подойдет?

Какая микроразметка подойдет?

Помогите пожалуйста подобрать и внедрить микроразметку в таблицуЕе код:

212
Как добавить видео на сайт

Как добавить видео на сайт

Добрый деньПоявилась такая проблема - есть страница на которой должны быть уменьшенные превью к видео и есть страница где это видео должно...

309