Jak usunąć odstęp między elementami bloku wbudowanego?
Biorąc pod uwagę ten HTML i CSS:
span {
display:inline-block;
width:100px;
background-color:palevioletred;
}
<p>
<span> Foo </span>
<span> Bar </span>
</p>
W rezultacie pomiędzy elementami SPAN będzie 4-pikselowa przestrzeń.
Demo: http://jsfiddle.net/dGHFV/
Rozumiem, dlaczego tak się dzieje, i wiem również, że mógłbym pozbyć się tej przestrzeni, usuwając białą spację między elementami SPAN w kodzie źródłowym HTML, w następujący sposób:
<p>
<span> Foo </span><span> Bar </span>
</p>
Jednak liczyłem na rozwiązanie CSS, które nie wymaga HTML kod źródłowy do manipulacji.
Wiem, jak to rozwiązać za pomocą JavaScript-usuwając węzły tekstowe z elementu kontenera( akapitu), Tak:
// jQuery
$('p').contents().filter(function() { return this.nodeType === 3; }).remove();
Demo: http://jsfiddle.net/dGHFV/1/
Ale czy ten problem można rozwiązać tylko za pomocą CSS?
30 answers
Ponieważ ta odpowiedź stała się dość popularna, przepisuję ją znacznie.
Nie zapominajmy o pytaniu, które zostało zadane:
Jak usunąć spację pomiędzy inline-block elements ? Miałem nadzieję, że dla rozwiązania CSS, które nie wymaga kodu źródłowego HTML majstrowali przy nim. Czy ten problem można rozwiązać tylko za pomocą CSS?
To jest możliwe rozwiązanie tego problemu przy pomocy samego CSS, ale nie ma całkowicie solidne poprawki CSS.
Rozwiązaniem, które miałem w mojej początkowej odpowiedzi było dodanie font-size: 0
do elementu nadrzędnego, a następnie zadeklarowanie sensownego font-size
na dzieci.
Http://jsfiddle.net/thirtydot/dGHFV/1361/
Działa to w najnowszych wersjach wszystkich nowoczesnych przeglądarek. Działa w IE8. Nie działa w Safari 5, ale Działa w Safari 6. Safari 5 to prawie Martwa przeglądarka ( 0.33%, sierpień 2015 ).
Większość możliwe problemy ze względnymi rozmiarami czcionek nie są trudne do naprawienia.
Jednak, chociaż jest to rozsądne rozwiązanie, jeśli szczególnie potrzebujesz poprawki CSS, to nie jest to, co polecam, jeśli możesz zmienić swój HTML (jak większość z nas).
To właśnie robię, jako dość doświadczony web developer, aby rozwiązać ten problem:]}
<p>
<span>Foo</span><span>Bar</span>
</p>
Tak, zgadza się. Usuwam białe spacje w HTML między blokiem inline żywioły.
To proste. To proste. To działa wszędzie. To pragmatyczne rozwiązanie.
Czasami trzeba dokładnie rozważyć, skąd pochodzą białe znaki. czy dodanie kolejnego elementu z JavaScript spowoduje dodanie białych znaków?Nie, jeśli zrobisz to właściwie.
Wyruszmy w magiczną podróż na różne sposoby, aby usunąć białe znaki, używając nowego HTML:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
-
Możesz to zrobić, jak zwykle do:
<ul> <li>Item 1</li><li>Item 2</li><li>Item 3</li> </ul>
-
Lub to:
<ul> <li>Item 1</li ><li>Item 2</li ><li>Item 3</li> </ul>
-
Lub użyj komentarzy:
<ul> <li>Item 1</li><!-- --><li>Item 2</li><!-- --><li>Item 3</li> </ul>
-
Lub, możesz nawet pominąć pewne zamykanie tagów całkowicie (wszystkie przeglądarki mają to w porządku):
<ul> <li>Item 1 <li>Item 2 <li>Item 3 </ul>
Teraz, gdy poszedłem i nudził Cię na śmierć z "tysiąc różnych sposobów, aby usunąć whitespace, przez thirtydot", mam nadzieję, że zapomniałeś o wszystkim font-size: 0
.
Alternatywnie, możesz użyć flexbox , aby uzyskać wiele układów, dla których wcześniej mogłeś użyć inline-block: https://css-tricks.com/snippets/css/a-guide-to-flexbox/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-23 16:56:55
Dla przeglądarek zgodnych z CSS3 istnieje white-space-collapsing:discard
Zobacz: http://www.w3.org/TR/2010/WD-css3-text-20101005/#white-space-collapsing
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-16 16:56:23
Ok, chociaż podniosłem zarówno font-size: 0;
, jak i not implemented CSS3 feature
odpowiedzi,
po wypróbowaniu okazało się, że żadne z nich nie jest realnym rozwiązaniem .
Właściwie, nie ma nawet jednego obejścia bez silnych skutków ubocznych.
Następnie postanowiłem usunąć spacje (ta odpowiedź dotyczy tego argumentu) pomiędzy inline-block
divami z mojego HTML
source (JSP
),
turning this:
<div class="inlineBlock">
I'm an inline-block div
</div>
<div class="inlineBlock">
I'm an inline-block div
</div>
Do tego
<div class="inlineBlock">
I'm an inline-block div
</div><div class="inlineBlock">
I'm an inline-block div
</div>
To jest brzydkie, ale działa.
Ale czekaj chwileczkę... co jeśli generuję moje div wewnątrz Taglibs loops
(Struts2
, JSTL
, itd...) ?
Na przykład:
<s:iterator begin="0" end="6" status="ctrDay">
<br/>
<s:iterator begin="0" end="23" status="ctrHour">
<s:push value="%{days[#ctrDay.index].hours[#ctrHour.index]}">
<div class="inlineBlock>
I'm an inline-block div in a matrix
(Do something here with the pushed object...)
</div>
</s:push>
</s:iterator>
</s:iterator>
To jest absolutnie nie do pomyślenia, aby inline wszystkie te rzeczy, to znaczy
<s:iterator begin="0" end="6" status="ctrDay">
<br/>
<s:iterator begin="0" end="23" status="ctrHour"><s:push value="%{days[#ctrDay.index].hours[#ctrHour.index]}"><div class="inlineBlock>
I'm an inline-block div in a matrix
(Do something here with the pushed object...)
</div></s:push></s:iterator>
</s:iterator>
To nie jest czytelne, trudne do opanowania i zrozumienia itp...
Rozwiązanie, które znalazłem:
Użyj komentarzy HTML, aby połączyć koniec jednego div z początkiem następnego!
<s:iterator begin="0" end="6" status="ctrDay">
<br/>
<s:iterator begin="0" end="23" status="ctrHour"><!--
--><s:push value="%{days[#ctrDay.index].hours[#ctrHour.index]}"><!--
--><div class="inlineBlock>
I'm an inline-block div in a matrix
(Do something here with the pushed object...)
</div><!--
--></s:push><!--
--></s:iterator>
</s:iterator>
W ten sposób będziesz miał czytelny i poprawnie wcięty kod.
I, jako pozytywny efekt uboczny, HTML source
, choć porażone pustymi komentarzami,
wynik będzie poprawnie wcięty;
Weźmy pierwszy przykład, imho to:
<div class="inlineBlock">
I'm an inline-block div
</div><!--
--><div class="inlineBlock">
I'm an inline-block div
</div>
Is better than this
<div class="inlineBlock">
I'm an inline-block div
</div><div class="inlineBlock">
I'm an inline-block div
</div>
Mam nadzieję, że to pomoże...Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-12 23:05:53
Dodaj Komentarze pomiędzy elementami, aby nie miały białej spacji. Dla mnie jest to łatwiejsze niż zresetowanie rozmiaru czcionki do zera, a następnie ustawienie go z powrotem.
<div>
Element 1
</div><!--
--><div>
Element 2
</div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-13 12:02:16
To jest ta sama odpowiedź, którą udzieliłem na pokrewnym: Display: inline block-Co to za spacja?
Istnieje naprawdę prosty sposób na usunięcie białych spacji z bloku wbudowanego, który jest zarówno prosty, jak i semantyczny. Nazywa się to czcionką niestandardową ze spacjami o zerowej szerokości, która pozwala zwinąć białe znaki (dodawane przez przeglądarkę dla elementów wbudowanych, gdy znajdują się w oddzielnych wierszach) na poziomie czcionki za pomocą bardzo małej czcionki. Po zadeklarowaniu czcionki wystarczy zmienić font-family
na pojemnik i z powrotem na dzieci, i voila. Tak:
@font-face{
font-family: 'NoSpace';
src: url('../Fonts/zerowidthspaces.eot');
src: url('../Fonts/zerowidthspaces.eot?#iefix') format('embedded-opentype'),
url('../Fonts/zerowidthspaces.woff') format('woff'),
url('../Fonts/zerowidthspaces.ttf') format('truetype'),
url('../Fonts/zerowidthspaces.svg#NoSpace') format('svg');
}
body {
font-face: 'OpenSans', sans-serif;
}
.inline-container {
font-face: 'NoSpace';
}
.inline-container > * {
display: inline-block;
font-face: 'OpenSans', sans-serif;
}
Pasuje do gustu. Oto Pobierz czcionkę, którą właśnie przygotowałem w font-forge i przekonwertowałem za pomocą FontSquirrel webfont generator. Zajęło mi to całe 5 minut. W skład deklaracji css @font-face
wchodzi: zipped zero-width Space font . Jest na Dysku Google, więc musisz kliknąć plik > pobierz, aby zapisać go na komputerze. Prawdopodobnie będziesz musiał również zmienić ścieżki czcionek, jeśli skopiujesz deklarację do swojego główny plik css.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:42
Wszystkie techniki eliminacji przestrzeni dla {[0] } to paskudne hacki...
Użyj Flexbox
To niesamowite, rozwiązuje cały ten układ inline-block BS, a od 2017 ma 98% wsparcie przeglądarki (więcej, jeśli nie dbasz o stare IEs).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-27 01:49:36
Dodaj display: flex;
do elementu nadrzędnego. Oto rozwiązanie z przedrostkiem:
p {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
span {
float: left;
display: inline-block;
width: 100px;
background: blue;
font-size: 30px;
color: white;
text-align: center;
}
<p>
<span> Foo </span>
<span> Bar </span>
</p>
Update
Wersja uproszczona
p {
display: flex;
}
span {
width: 100px;
background: tomato;
font-size: 30px;
color: white;
text-align: center;
}
<p>
<span> Foo </span>
<span> Bar </span>
</p>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-02 09:08:27
Jeszcze dwie opcje oparte na moduł tekstowy CSS Poziom 3 (zamiast white-space-collapsing:discard
które zostały wycofane z projektu spec):
word-spacing: -100%;
Teoretycznie powinno robić dokładnie to, co jest potrzebne - skracać białe spacje pomiędzy wyrazami o 100% szerokości znaku spacji, czyli do zero. Ale wydaje się, że nigdzie nie działa, niestety, i to cecha jest oznaczona jako "zagrożona" (można ją usunąć ze specyfikacji, też).
word-spacing: -1ch;
Skraca przestrzenie między wyrazami o szerokość cyfry "0". W czcionce maszynowej powinna ona być dokładnie równa szerokości znaku spacji (jak i każdego innego znaku). Działa to w przeglądarce Firefox 10+, Chrome 27+ i prawie działa w przeglądarce Internet Explorer 9+.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-08 23:54:32
Niestety, jest rok 2015 i white-space-collapse
nadal nie jest zaimplementowany.
W międzyczasie, daj element nadrzędny font-size: 0;
i ustaw font-size
na dzieci. To powinno załatwić sprawę
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-02 23:40:31
Użyj flexbox i wykonaj fallback (z sugestii powyżej) dla starszych przeglądarek:
ul {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-08 23:55:18
Font-size: 0; może być nieco trudniejsze do zarządzania...
Myślę, że następujące kilka linii jest o wiele lepsze i bardziej wielokrotnego użytku, i oszczędność czasu niż jakiekolwiek inne metody. Ja osobiście używam tego:
.inline-block-wrapper>.inline-block-wrapper,
.inline-block-wrapper{letter-spacing: -4px;}
.inline-block-wrapper>*{letter-spacing: 0;display: inline-block;}
/* OR better shorter name...*/
.items>.items,
.items{letter-spacing: -4px;}
.items>*{letter-spacing: 0;display: inline-block;}
Następnie można go użyć w następujący sposób...
<ul class="items">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
O ile wiem (może się mylę), ale wszystkie przeglądarki obsługują tę metodę.
Wyjaśnienie :
To działa (może-3px może być lepsze) dokładnie tak, jak byś się spodziewał, że zadziała.
- ty skopiuj i wklej kod (raz)
- następnie w Twoim html po prostu użyj
class="items"
na rodzicu każdego bloku inline.
Nie będziesz musiał wracać do css i dodawać kolejnej reguły css dla nowych bloków wbudowanych.
Rozwiązywanie dwóch problemów na raz.Zwróć również uwagę na >
(większy niż znak) oznacza to, że * / wszystkie dzieci powinny być w bloku liniowym.
Uwaga: zmodyfikowałem, aby dziedziczyć odstępy między literami, gdy owijka ma owijkę potomną.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-28 15:23:31
Proste:
item {
display: inline-block;
margin-right: -0.25em;
}
Nie ma potrzeby dotykania elementu nadrzędnego.
Jedyny warunek: rozmiar czcionki elementu nie może być zdefiniowany (musi być równy rozmiarowi czcionki rodzica).
0.25em
jest wartością domyślną word-spacing
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-09 00:00:35
Chociaż technicznie nie jest to odpowiedź na pytanie: "Jak usunąć odstęp między elementami liniowymi?"
Możesz wypróbować rozwiązanie flexbox i zastosować poniższy kod, a spacja zostanie usunięta.
p {
display: flex;
flex-direction: row;
}
Możesz dowiedzieć się więcej na ten temat pod tym linkiem: https://css-tricks.com/snippets/css/a-guide-to-flexbox/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-10 06:49:09
Właśnie miałem ten problem i od font-size:0;
znalazłem, że w Internet Explorerze 7 problem pozostaje, ponieważ Internet Explorer myśli "rozmiar czcionki 0?!?! WTF zwariowałeś?"- Tak, w moim przypadku mam Eric Meyer CSS reset i z font-size:0.01em;
mam różnicę 1 piksel z Internet Explorer 7 do Firefox 9, więc, myślę, że to może być rozwiązanie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-08 23:52:21
Zazwyczaj używamy takich elementów w różnych liniach, ale w przypadku display:inline-block
używanie znaczników w tej samej linii usunie spację, ale w innej linii nie.
Przykład z tagami w innej linii:
p span {
display: inline-block;
background: red;
}
<p>
<span> Foo </span>
<span> Bar </span>
</p>
Przykład z tagami w tej samej linii
p span {
display: inline-block;
background: red;
}
<p>
<span> Foo </span><span> Bar </span>
</p>
Inną efektywną metodą jest zadanie CSS, które używa font-size:0
do elementu nadrzędnego i daje font-size
do elementu podrzędnego tyle, ile ty chcę.
p {
font-size: 0;
}
p span {
display: inline-block;
background: red;
font-size: 14px;
}
<p>
<span> Foo </span>
<span> Bar </span>
</p>
Powyższe metody mogą nie działać gdzieś w zależności od całej aplikacji, ale ostatnia metoda jest niezawodnym rozwiązaniem dla tej sytuacji i może być używana wszędzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-08 23:59:08
Nie jestem do końca pewien, czy chcesz zrobić dwa niebieskie przęsła bez przerwy, czy chcesz obsłużyć inne białe spacje, ale jeśli chcesz usunąć lukę:
span {
display: inline-block;
width: 100px;
background: blue;
font-size: 30px;
color: white;
text-align: center;
float: left;
}
I gotowe.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-09 00:13:05
Zajmowałem się tym ostatnio i zamiast ustawiać rodzica font-size:0
, a następnie ustawiać dziecko z powrotem na rozsądną wartość, otrzymywałem spójne wyniki, ustawiając kontener rodzica letter-spacing:-.25em
, a następnie dziecko z powrotem na letter-spacing:normal
.
W alternatywnym wątku zobaczyłem komentarz, że font-size:0
nie zawsze jest idealny, ponieważ ludzie mogą kontrolować minimalne rozmiary czcionek w swoich przeglądarkach, całkowicie negując możliwość ustawienia rozmiaru czcionki na zero.
Używanie ems wydaje się działać niezależnie od tego, czy podany rozmiar czcionki to 100%, 15pt czy 36px.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-02 14:28:54
p {
display: flex;
}
span {
float: left;
display: inline-block;
width: 100px;
background: red;
font-size: 30px;
color: white;
}
<p>
<span> hello </span>
<span> world </span>
</p>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-01 05:06:46
Myślę, że istnieje bardzo prosta / stara metoda na to, który jest obsługiwany przez wszystkie przeglądarki, nawet IE 6/7. Możemy po prostu ustawić letter-spacing
na dużą wartość ujemną w rodzicu, a następnie ustawić ją z powrotem na normal
w elementach potomnych:
body { font-size: 24px }
span { border: 1px solid #b0b0c0; } /* show borders to see spacing */
.no-spacing { letter-spacing: -1em; } /* could be a large negative value */
.no-spacing > * { letter-spacing: normal; } /* => back to normal spacing */
<p style="color:red">Wrong (default spacing):</p>
<div class="">
<span>Item-1</span>
<span>Item-2</span>
<span>Item-3</span>
</div>
<hr/>
<p style="color:green">Correct (no-spacing):</p>
<div class="no-spacing">
<span>Item-1</span>
<span>Item-2</span>
<span>Item-3</span>
</div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-27 06:01:01
Z nawiasami PHP:
ul li {
display: inline-block;
}
<ul>
<li>
<div>first</div>
</li><?
?><li>
<div>first</div>
</li><?
?><li>
<div>first</div>
</li>
</ul>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-09 00:13:56
Zamierzam nieco rozszerzyć odpowiedź user5609829, ponieważ uważam, że inne rozwiązania tutaj są zbyt skomplikowane/zbyt dużo pracy. Zastosowanie margin-right: -4px
do elementów bloku wbudowanego usunie odstępy i jest obsługiwane przez wszystkie przeglądarki. Zobacz zaktualizowane skrzypce tutaj . Dla zainteresowanych używaniem ujemnych marginesów, spróbuj dać to odczyt.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-09 12:42:40
Najprostszą odpowiedzią na to pytanie jest dodanie.
Css
float: left;
Codepen link: http://jsfiddle.net/dGHFV/3560/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-10 18:24:05
Specyfikacja CSS Text Module Level 4 Definiuje text-space-collapse
właściwość, która pozwala kontrolować sposób przetwarzania białej przestrzeni wewnątrz i wokół elementu.
Więc, jeśli chodzi o twój przykład, musisz po prostu napisać to:
p {
text-space-collapse: discard;
}
Niestety, żadna przeglądarka nie implementuje jeszcze tej właściwości (stan na Wrzesień 2016), Jak wspomniano w komentarzach do odpowiedzi HBP .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:03:09
Dodaj white-space: nowrap
do elementu kontenera:
CSS:
* {
box-sizing: border-box;
}
.row {
vertical-align: top;
white-space: nowrap;
}
.column{
float: left;
display: inline-block;
width: 50% // Or whatever in your case
}
HTML:
<div class="row">
<div class="column"> Some stuff</div>
<div class="column">Some other stuff</div>
</div>
Oto Plunker.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-09 00:02:09
Wypróbowałem font-size: 0
rozwiązanie podobnego problemu w Reaccie i Sass dla darmowego projektu Code Camp, nad którym obecnie pracuję.
Najpierw skrypt:
var ActionBox = React.createClass({
render: function() {
return(
<div id="actionBox">
</div>
);
},
});
var ApplicationGrid = React.createClass({
render: function() {
var row = [];
for(var j=0; j<30; j++){
for(var i=0; i<30; i++){
row.push(<ActionBox />);
}
}
return(
<div id="applicationGrid">
{row}
</div>
);
},
});
var ButtonsAndGrid = React.createClass({
render: function() {
return(
<div>
<div id="buttonsDiv">
</div>
<ApplicationGrid />
</div>
);
},
});
var MyApp = React.createClass({
render: function() {
return(
<div id="mainDiv">
<h1> Game of Life! </h1>
<ButtonsAndGrid />
</div>
);
},
});
ReactDOM.render(
<MyApp />,
document.getElementById('GoL')
);
Następnie Sass:
html, body
height: 100%
body
height: 100%
margin: 0
padding: 0
#mainDiv
width: 80%
height: 60%
margin: auto
padding-top: 5px
padding-bottom: 5px
background-color: DeepSkyBlue
text-align: center
border: 2px solid #381F0B
border-radius: 4px
margin-top: 20px
#buttonsDiv
width: 80%
height: 60%
margin: auto
margin-bottom: 0px
padding-top: 5px
padding-bottom: 0px
background-color: grey
text-align: center
border: 2px solid #381F0B
border-radius: 4px
margin-top: 20px
#applicationGrid
width: 65%
height: 50%
padding-top: 0px
margin: auto
font-size: 0
margin-top: 0px
padding-bottom: 5px
background-color: white
text-align: center
border: 2px solid #381F0B
border-radius: 4px
margin-top: 20px
#actionBox
width: 20px
height: 20PX
padding-top: 0px
display: inline-block
margin-top: 0px
padding-bottom: 0px
background-color: lightgrey
text-align: center
border: 2px solid grey
margin-bottom: 0px
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-09 00:11:52
Just for fun: proste rozwiązanie JavaScript.
document.querySelectorAll('.container').forEach(clear);
function clear(element) {
element.childNodes.forEach(check, element);
}
function check(item) {
if (item.nodeType === 3) this.removeChild(item);
}
span {
display: inline-block;
width: 100px;
background-color: palevioletred;
}
<p class="container">
<span> Foo </span>
<span> Bar </span>
</p>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-10 20:16:04
Istnieje wiele rozwiązań takich jak font-size:0
,word-spacing
,margin-left
,letter-spacing
i tak dalej.
Normalnie wolę używać letter-spacing
ponieważ
- wydaje się ok, gdy przypisujemy wartość większą niż szerokość dodatkowej przestrzeni(np.
-1em
). - jednak nie będzie to w porządku z
word-spacing
imargin-left
gdy ustawimy większą wartość jak-1em
. - używanie
font-size
nie jest wygodne, gdy próbujemy używaćem
jako jednostkifont-size
.
Więc, letter-spacing
wydaje się być najlepszym wybór.
Kiedy używasz letter-spacing
lepiej używaj -0.3em
lub -0.31em
nie innych.
* {
margin: 0;
padding: 0;
}
a {
text-decoration: none;
color: inherit;
cursor: auto;
}
.nav {
width: 260px;
height: 100px;
background-color: pink;
color: white;
font-size: 20px;
letter-spacing: -1em;
}
.nav__text {
width: 90px;
height: 40px;
box-sizing: border-box;
border: 1px solid black;
line-height: 40px;
background-color: yellowgreen;
text-align: center;
display: inline-block;
letter-spacing: normal;
}
<nav class="nav">
<span class="nav__text">nav1</span>
<span class="nav__text">nav2</span>
<span class="nav__text">nav3</span>
</nav>
Jeśli używasz Chrome(wersja testowa 66.0.3359.139) lub Opery (wersja testowa 53.0.2907.99), to co widzisz może być:
Jeśli używasz Firefoksa (60.0.2), IE10 lub Edge, to co widzisz może być:
Ciekawe. Więc, Ja sprawdziliśmy mdn-letter-spacing i znaleźliśmy to:Długość
Określa dodatkową przestrzeń między znakami oprócz domyślnej przestrzeni między znakami. Wartości mogą być ujemne, ale mogą istnieć ograniczenia specyficzne dla implementacji. agenci użytkownika nie mogą dalej zwiększać ani zmniejszać przestrzeni między znakami w celu uzasadnienia tekstu.
Wydaje się, że to jest powód.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-18 11:15:18
Dodaj letter-spacing:-4px;
na rodzicu p
css i dodaj letter-spacing:0px;
do swojego span
css.
span {
display:inline-block;
width:100px;
background-color:palevioletred;
vertical-align:bottom;
letter-spacing:0px;
}
p {
letter-spacing:-4px;
}
<p>
<span> Foo </span>
<span> Bar </span>
</p>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-07 22:04:37
Innym sposobem, który znalazłem jest zastosowanie margin-left jako wartości ujemne z wyjątkiem pierwszego elementu wiersza.
span {
display:inline-block;
width:100px;
background:blue;
font-size:30px;
color:white;
text-align:center;
margin-left:-5px;
}
span:first-child{
margin:0px;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-15 04:16:32
Każde pytanie, które próbuje usunąć przestrzeń między inline-block
S wydaje mi się <table>
...
Spróbuj czegoś takiego:
p {
display: table;
}
span {
width: 100px;
border: 1px solid silver; /* added for visualization only*/
display: table-cell;
}
<p>
<span> Foo </span>
<span> Bar </span>
</p>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-01 14:02:01