2015-07-08 4 views
0

Мы все знаем проблему старых возрастов с пробелами между элементами встроенного блока. Например:Работа с встроенными блочными пространствами с javascript

.wrapper div {width:100px; height:30px; display:inline-block; border:1px solid #333;}
<div class="wrapper"> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
</div>

Лучшее решение на мой взгляд, чтобы удалить все пробелы между элементами:

.wrapper div {width:100px; height:30px; display:inline-block; border:1px solid #333;}
<div class="wrapper"> 
 
    <div> 
 
    </div><div> 
 
    </div><div> 
 
    </div><div> 
 
    </div> 
 
</div>

Можем ли мы сделать это на готовый HTML с javascript/jQuery, например добавление скрипта к первому фрагменту ave, как второй? Какая-то функция $('.wrapper').minify();.

EDIT

Кто-то предложил возможный дубликат с How to minify HTML with CSS and Javascript?. Этот вопрос связан с уменьшением размера страницы путем редактирования файлов на стороне сервера. Здесь я ищу решение, которое минимизирует определенный элемент после передачи содержимого без редактирования html-файлов. Проблема заключается не в размере страницы, а в пробеле пробелов.

+0

В этот момент HTML уже разобранной в DOM, так что вы будете иметь чтобы перестать думать об этом как о HTML. Что бы вы сделали, это удалить пробелы из DOM, а не из HTML (как показывает ответ Аруна). – JJJ

+0

Почему бы не сделать это с использованием чистого CSS? –

+0

В этом случае вам нужно сделать что-то вроде '.wrapper div {margin: 0 -.125em}', что не всегда является хорошим решением. – Skatch

ответ

4

Использование JQuery вы можете удалить все textnodes, которые являются потомками wrapper элемента как

$('.wrapper').contents().filter(function() { 
 
    return this.nodeType == Node.TEXT_NODE; 
 
}).remove();
.wrapper div { 
 
    width: 100px; 
 
    height: 30px; 
 
    display: inline-block; 
 
    border: 1px solid #333; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="wrapper"> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
</div>

+0

Отлично! Примут через 11 минут. :) – Skatch

1

Чистый CSS способ сделать это, чтобы установить font-size родительского элемента 0

.wrapper div 
 
{ 
 
    width:100px; 
 
    height:30px; 
 
    display:inline-block; 
 
    border:1px solid #333; 
 
} 
 

 
.wrapper { 
 
    font-size: 0; 
 
}
<div class="wrapper"> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
</div>

+0

Вы правы, но таким образом я не контролирую размер шрифта внутри div с глобальной настройкой размера шрифта. Например, если для элементов внутри установлено значение 1.5em из родительского параметра, это будет плохое решение. Тем не менее, я уверен, что он справляется с текущей проблемой, я уверен, что кто-то найдет этот ответ полезным. :) – Skatch

0

Если вы беспокоитесь о глобальном font-size, то вы можете попробовать использовать комментарии

.wrapper div 
 
{ 
 
    width:100px; 
 
    height:30px; 
 
    display:inline-block; 
 
    border:1px solid #333; 
 
}
<div class="wrapper"> 
 
     <div></div><!-- 
 
    --><div></div><!-- 
 
    --><div></div><!-- 
 
    --><div></div> 
 
</div>

+0

Да, но оригинальный вопрос искал решение без редактирования HTML.:) Это тот же подход, что и удаление пробелов. – Skatch

+0

Ах! Извини, я виноват! –

+0

Nevermind, дополнительный вариант никогда не бывает слишком большим. :) – Skatch

Смежные вопросы