Eu gostaria de controlar quanto espaço horizontal uma bala empurra <li>
para a direita em um <ol>
ou <ul>
.
Ou seja, em vez de sempre ter
* Some list text goes
here.
Eu gostaria de poder mudar isso para ser
* Some list text goes
here.
ou
*Some list text goes
here.
Olhei em volta, mas só consegui encontrar instruções para mudar todo o bloco para a esquerda ou direita, por exemplo, http://www.alistapart.com/articles/taminglists/
html
css
html-lists
erjiang
fonte
fonte
Respostas:
Coloque seu conteúdo em um local
span
relativamente posicionado, para que você possa controlar o espaço pelaleft
propriedade despan
.fonte
<SPAN>
pode utilizarid
ouclass
marcar, dê uma olhada no W3C . Se a pergunta é se ela pode transmitir significado semântico, veja esta resposta . Tecnicamente, a<SPAN>
tag é um elemento inline não-semântico por si só, mas de alguma forma que oferece mais flexibilidade em sua reutilização. Atualmente, acredito que se possa usar oinline-block
descritor para permitir uma variedade muito maior de opções de formatação.Para resumir as outras respostas aqui - se você deseja um controle mais refinado do espaço entre os marcadores e o texto em um
<li>
item da lista, suas opções são:(1) Use uma imagem de plano de fundo:
Vantagens:
background-position
para posicionar a imagem praticamente em qualquer lugar que desejar em relação ao texto, usando pixels, ems ou%Desvantagens:
2. Use preenchimento na
<li>
etiquetaVantagens:
<li>
, você pode adicionar o espaço horizontal extra entre o marcador e o texto que desejarDesvantagens:
(3) Coloque o texto em um
<span>
elemento extraVantagens:
padding-top
ao<span>
. uma solução alternativa para isso, no entanto ...)Desvantagens:
Esperamos por alguns novos recursos no estilo de lista no CSS4, para que possamos criar marcadores mais inteligentes sem recorrer a imagens ou marcação exta :)
fonte
outside
.display: block;
ao elemento span para que o texto envolto iria alinhar bem (eu também acabei usando tags de âncora em vez de vãos)Isso deve servir. Certifique-se de definir suas balas para o exterior. você também pode usar pseudo-elementos CSS se puder descartá-los no IE7 para baixo. Eu realmente não recomendo usar pseudo-elementos para esse tipo de coisa, mas funciona para controlar a distância.
fonte
list-style-position: outside
e preenchimento dosLI
elementos permitem aumentar a distância entre os pontos de marcador, mas ainda assim não funciona ao contrário de um deslocamento especificado pelo navegador. Veja este JS Bin .text-indent
no<UL>
ou<LI>
para negar a distância imposta pelo navegador entre o marcador e o<LI>
conteúdo. Ou seja, aumentepadding-left
conforme mostrado acima para aumentar a distância e reduzatext-indent
para reduzir a distância entre o marcador e o conteúdo, conforme desejado.<LI>
agrupar em uma segunda linha, essas linhas subsequentes acabam sendo recuadas com base na margem / preenchimento / recuo que conseguimos desfazer para a primeira linha viatext-indent
. SighPergunta antiga, mas o pseudo-elemento: before funciona bem aqui.
Funciona muito bem e não requer muitas regras extras ou html.
Felicidades!
fonte
margin-left: -5px
(ou qualquer outro valor) irá diminuir o espaço entre o marcador eo<li>
elementoPara o estilo de lista: inline :
É quase o mesmo que a resposta do DSMann8, mas com menos código css.
Você só precisa
Felicidades
fonte
list-style-position: inside
também, o que é ótimo!Você pode usar o
padding-left
atributo nos itens da lista ( não na própria lista!).fonte
list-style-position
estiver definido como padrãooutside
.<span>
elemento apenas para fins de design.Usar indentação de texto em li funciona melhor.
recuo do texto: -x px; aproximará a bala de li e vice-versa.
Usando o relativo no intervalo, a esquerda negativa pode não funcionar corretamente com versões mais antigas do IE. PS - evite dar posições o máximo que puder.
fonte
Aqui está outra solução usando o contador css e os pseudo elementos. Acho mais elegante, pois não requer o uso de marcação html extra nem classes css:
Uso espaços não quebráveis para que o espaçamento afete apenas a primeira linha dos elementos da minha lista (se o elemento da lista tiver mais de uma linha). Você pode usar o preenchimento aqui.
fonte
Pergunta antiga, mas ainda relevante. Eu recomendo usar negativo
text-indent
.list-style-position
devemos seroutside
.Prós:
Contras:
fonte
Uma lista não ordenada começa com a tag ul. Cada item da lista começa com o item Os itens da lista serão marcados com marcadores (pequenos círculos pretos) por padrão:
Resultado:
A propriedade recuo do texto especifica o recuo da primeira linha em um bloco de texto.
Nota: Valores negativos são permitidos. A primeira linha será recuada para a esquerda se o valor for negativo.
fonte
Parece que você pode (um pouco) controlar o espaçamento usando preenchimento na tag <li>.
O problema é que ele não parece permitir que você se apresse, como no exemplo final.
Para isso, você pode tentar desativar o estilo de lista e usar o & bull;
fonte
Parece haver uma solução muito mais limpa se você deseja reduzir apenas o espaçamento entre o marcador e o texto:
fonte
Você também pode usar uma substituição de imagem de plano de fundo como alternativa, oferecendo controle total sobre o posicionamento vertical e horizontal.
Veja a resposta a esta pergunta
fonte
Definição e Uso
A propriedade list-style-position especifica se os marcadores de item de lista devem aparecer dentro ou fora do fluxo de conteúdo.
Fonte: http://www.w3schools.com/cssref/pr_list-style-position.asp
fonte
Você pode usar
ul li:before
e uma imagem de fundo, e atribuirposition: relative
eposition:absolute
aoli
eli:before
, respectivamente. Dessa forma, você pode criar uma imagem e posicioná-la onde quiser em relação ao li.fonte
Use
padding-left:1em; text-indent:-1em
para a<li>
tag.Então,
list-style-position: inside
para a<ul>
tag.fonte
A solução a seguir funciona bem quando você deseja mover o texto para mais perto do marcador e mesmo se você tiver várias linhas de texto.
margin-right
permite que você mova o texto para mais perto do marcadortext-indent
garante que várias linhas de texto ainda estejam alinhadas corretamentefonte
use
<span style="display: flex;">
dentro de cada um<li>
.fonte