Chciałbym kontrolować, o ile poziomej przestrzeni pocisk przesuwa <li>
go w prawo w <ol>
lub <ul>
.
To znaczy zamiast zawsze mieć
* Some list text goes
here.
Chciałbym móc to zmienić
* Some list text goes
here.
lub
*Some list text goes
here.
Rozejrzałem się, ale mogłem tylko znaleźć instrukcje dotyczące przesunięcia całego bloku w lewo lub w prawo, na przykład http://www.alistapart.com/articles/taminglists/
html
css
html-lists
erjiang
źródło
źródło
Odpowiedzi:
Umieść jego zawartość w pozycji,
span
która jest względnie ustawiona, wtedy możesz kontrolować przestrzeń za pomocąleft
właściwościspan
.źródło
<SPAN>
można wykorzystaćid
lubclass
tagi, spójrz na W3C . Jeśli pytanie brzmi, czy może on przekazywać znaczenie semantyczne, zobacz tę odpowiedź . Z technicznego punktu<SPAN>
widzenia tag jest sam w sobie niesemantycznym elementem wbudowanym, ale w pewien sposób zapewnia większą elastyczność w jego ponownym użyciu. W dzisiejszych czasach uważam, żeinline-block
deskryptor można wykorzystać, aby udostępnić znacznie szerszy zakres opcji formatowania.Podsumowując tutaj inne odpowiedzi - jeśli chcesz mieć lepszą kontrolę nad odstępem między punktorami a tekstem w
<li>
elemencie listy, masz następujące opcje:(1) Użyj obrazu tła:
Zalety:
background-position
aby ustawić obraz w dowolnym miejscu w stosunku do tekstu, używając pikseli, ems lub%Niedogodności:
2. Użyj wypełnienia na
<li>
taguZalety:
<li>
, możesz dodać tyle dodatkowej poziomej przestrzeni między punktorem a tekstem, ile chceszNiedogodności:
(3) Zawiń tekst w dodatkowy
<span>
elementZalety:
padding-top
do<span>
. Ktoś inny mógł mieć aczkolwiek obejście tego problemu ...)Niedogodności:
Mamy nadzieję na nowe funkcje w stylu listy w CSS4, abyśmy mogli tworzyć sprytniejsze pociski bez uciekania się do obrazów lub znaczników exta :)
źródło
outside
.display: block;
zawijający linie, stwierdziłem, że musiałem dodać do elementu span, aby zawinięty tekst również był wyrównany (skończyło się również na użyciu tagów kotwicy zamiast rozpiętości)To powinno wystarczyć. Upewnij się, że pociski są skierowane na zewnątrz. możesz także użyć pseudoelementów CSS, jeśli możesz upuścić je w IE7 w dół. Naprawdę nie polecam używania pseudoelementów do tego rodzaju rzeczy, ale działa to do kontrolowania odległości.
źródło
list-style-position: outside
i dopełnienieLI
elementów pozwala zwiększyć odległość między punktorami, ale nadal nie działa na odwrót poza przesunięcie określone w przeglądarce. Zobacz ten pojemnik JS .text-indent
na<UL>
lub<LI>
negować przeglądarka egzekwowane odległość między punktem pocisku i<LI>
treści. Oznacza to, że zwiększaj,padding-left
jak pokazano powyżej, aby zwiększyć odległość i zmniejsz,text-indent
aby zmniejszyć odległość między punktorem a treścią według potrzeb.<LI>
zawija się w drugą linię, takie kolejne wiersze kończą się ponownym wcięciem na podstawie marginesu / dopełnienia / wcięcia, które udało nam się cofnąć dla pierwszej linii za pośrednictwemtext-indent
. WestchnienieStare pytanie, ale pseudoelement: before działa tutaj dobrze.
Działa naprawdę dobrze i nie wymaga wielu dodatkowych reguł ani html.
Twoje zdrowie!
źródło
margin-left: -5px
(lub<li>
Dla typu listy: inline :
To prawie to samo, co odpowiedź DSMann8, ale mniej kodu CSS.
Po prostu musisz
Twoje zdrowie
źródło
list-style-position: inside
, co jest świetne!Możesz użyć
padding-left
atrybutu na elementach listy ( nie na samej liście!).źródło
list-style-position
jest ustawiona wartość domyślnaoutside
.<span>
elementu tylko do celów projektowych.Używanie wcięć w tekście na li działa najlepiej.
wcięcie tekstu: -x px; przesunie pocisk bliżej li i odwrotnie.
Korzystanie z wartości względnej na rozpiętości ujemnej lewej strony może nie działać poprawnie ze starszymi wersjami przeglądarki IE. PS - unikaj dawania pozycji tak bardzo, jak możesz.
źródło
Oto inne rozwiązanie wykorzystujące licznik css i pseudoelementy. Uważam, że jest bardziej elegancki, ponieważ nie wymaga stosowania dodatkowych znaczników HTML ani klas css:
Używam nierozrywalnych spacji, aby odstępy wpływały tylko na pierwszy wiersz elementów listy (jeśli element listy jest dłuższy niż jeden wiersz). Zamiast tego możesz użyć dopełnienia.
źródło
Stare pytanie, ale nadal aktualne. Polecam używanie negatywu
text-indent
.list-style-position
musi byćoutside
.Plusy:
Cons:
źródło
Lista nieuporządkowana zaczyna się od znacznika ul. Każda pozycja listy zaczyna się od Pozycje listy będą domyślnie oznaczone punktorami (małymi czarnymi kółkami):
Wynik:
Właściwość text-indent określa wcięcie pierwszego wiersza w bloku tekstu.
Uwaga: dozwolone są wartości ujemne. Jeśli wartość jest ujemna, pierwsza linia zostanie wcięta w lewo.
źródło
Wygląda na to, że możesz (w pewnym stopniu) kontrolować odstępy, używając dopełnienia w tagu <li>.
Problem polega na tym, że wydaje się, że nie pozwala ci to zgnieść tak dobrze, jak twój ostatni przykład.
W tym celu możesz spróbować wyłączyć typ listy i użyć & bull;
źródło
Wydaje się, że istnieje znacznie czystsze rozwiązanie, jeśli chcesz tylko zmniejszyć odstępy między punktorem a tekstem:
źródło
Możesz również użyć zastępowania obrazu tła jako alternatywy, co daje pełną kontrolę nad pozycjonowaniem w pionie i poziomie.
Zobacz odpowiedź na to pytanie
źródło
Definicja i użycie
Właściwość list-style-position określa, czy znaczniki elementu listy powinny pojawiać się wewnątrz, czy na zewnątrz przepływu treści.
Źródło: http://www.w3schools.com/cssref/pr_list-style-position.asp
źródło
Możesz użyć
ul li:before
i obrazu tła oraz przypisaćposition: relative
i odpowiednioposition:absolute
doli
ili:before
. W ten sposób możesz stworzyć obrazek i ustawić go w dowolnym miejscu względem li.źródło
Użyj
padding-left:1em; text-indent:-1em
jako<li>
tagu.Następnie
list-style-position: inside
dla<ul>
tagu.źródło
Poniższe rozwiązanie działa dobrze, gdy chcesz przenieść tekst bliżej punktora, nawet jeśli masz wiele wierszy tekstu.
margin-right
umożliwia przeniesienie tekstu bliżej punktoratext-indent
zapewnia, że wiele wierszy tekstu nadal jest prawidłowo ułożonychźródło
używać
<span style="display: flex;">
wewnątrz każdego<li>
.źródło