Usando CSS, como posso estilizar o seguinte:
<dl>
<dt>Mercury</dt>
<dd>Mercury (0.4 AU from the Sun) is the closest planet to the Sun and the smallest planet.</dd>
<dt>Venus</dt>
<dd>Venus (0.7 AU) is close in size to Earth, (0.815 Earth masses) and like Earth, has a thick silicate mantle around an iron core.</dd>
<dt>Earth</dt>
<dd>Earth (1 AU) is the largest and densest of the inner planets, the only one known to have current geological activity.</dd>
</dl>
então o conteúdo do dt
programa em uma coluna e o conteúdo do dd
em outra coluna, com cada um dt
e o correspondente dd
na mesma linha? Ou seja, produzindo algo parecido com:
Respostas:
fonte
clear: left
ao estilo dt para garantir que eles permaneçam alinhados, mesmo que precisem quebrar.* { ... }
declaração faz com que tudo perca a margem e o preenchimento e a remoção distorce o DL. Usar uma classe também não serve. Parece que se eu quiser algo além do DL, terei que ficar sem margens e forros em todos os lugares ... Ou?Eu tenho uma solução sem usar carros alegóricos!
verifique isso no codepen
Viz.
Update - 3 rd janeiro 2017: solução baseada flex-box eu adicionei para o problema. Verifique isso no codepen vinculado e refine-o conforme as necessidades. Obrigado!
fonte
Layout da grade CSS
Para alterar os tamanhos das colunas, dê uma olhada na
grid-template-columns
propriedadefonte
Se você usa o Bootstrap 3 (ou anterior) ...
fonte
dl-horizontal
foi realmente retirado do Bootstrap 4. No BS4, você precisa usar classes de grade.Supondo que você saiba a largura da margem:
fonte
Como ainda tenho que ver um exemplo que funcione no meu caso de uso, aqui está a solução mais completa que consegui encontrar.
Curiosamente, ele não funciona
display: inline-block
. Suponho que, se você precisar definir o tamanho de qualquer um dosdt
elementos oudd
elementos, poderá definir adl
exibição comodisplay: flexbox; display: -webkit-flex; display: flex;
e aflex
abreviação dosdd
elementos edt
elementos como algo comoflex: 1 1 50%
edisplay
comodisplay: inline-block
. Mas eu não testei isso, portanto, aborde com cautela.fonte
Veja a demonstração do jsFiddle
Eu precisava de uma lista exatamente como descrita para um projeto que mostrasse funcionários de uma empresa, com sua foto à esquerda e informações à direita. Consegui realizar a limpeza usando psuedo-elements depois de cada
DD
:Além disso, eu queria que o texto fosse exibido apenas à direita da imagem, sem envolver a imagem flutuada (efeito de pseudo-coluna). Isso pode ser feito adicionando um
DIV
elemento com o CSSoverflow: hidden;
ao redor do conteúdo daDD
tag. Você pode omitir esse extraDIV
, mas o conteúdo daDD
tag será agrupado sob o flutuanteDT
.Depois de brincar um pouco, consegui suportar vários
DT
elementos porDD
, mas não váriosDD
elementos porDT
. Eu tentei adicionar outra classe opcional para limpar somente após o últimoDD
, mas subseqüentesDD
elementos enrolado sob osDT
elementos (não meu efeito desejado ... Eu queria que oDT
eDD
elementos para colunas de formulário, eo extraDD
elementos eram muito grandes).Por todos os direitos, isso deve funcionar apenas no IE8 +, mas devido a uma peculiaridade no IE7, ele também funciona lá.
fonte
Aqui está outra opção que funciona exibindo o dt e o dd inline e adicionando uma quebra de linha após o dd.
Isso é semelhante à solução de Navaneeth acima, mas usando essa abordagem, o conteúdo não será alinhado como em uma tabela, mas o dd seguirá o dt imediatamente em todas as linhas, independentemente do comprimento.
fonte
Eu preciso fazer isso e ter o
<dt>
conteúdo centralizado verticalmente, em relação ao<dd>
conteúdo. Eu useidisplay: inline-block
junto comvertical-align: middle
Veja o exemplo completo no Codepen aqui
fonte
Dependendo de como você estiliza os elementos dt e dd, você pode encontrar um problema: torná-los com a mesma altura. Por exemplo, se você quiser mas alguma borda visível na parte inferior desses elementos, provavelmente desejará exibir a borda na mesma altura, como em uma tabela.
Uma solução para isso é trapacear e tornar cada linha um elemento "dl". (isso é equivalente a usar tr em uma tabela) Perdemos o interesse original das listas de definição, mas, por outro lado, é uma maneira fácil de obter pseudo-tabelas com estilo rápido e bonito.
O CSS:
O HTML:
fonte
quatreVingtCinqPts
? :)Encontrei uma solução que me parece perfeita, mas precisa de
<div>
tags extras . Acontece que não é necessário usar<table>
tag para alinhar, como em uma tabela, basta usardisplay:table-row;
edisplay:table-cell;
estilos:fonte
dl
s só podem terdt
s edd
s quando crianças.dt
s só podem ter elementos embutidos como filhos.dd
s, por algum motivo, pode ter elementos em nível de bloco como filhos.DI
elemento, como eu . Mas com qualquer elemento desse tipo, você não precisa de nada esotérico, como tabelas CSS ... De qualquer forma, esse elemento não existe e, portanto, você não deve usá-lo.run-in
CSSdisplay
é exatamente o que eu quero (no meu caso, eu quero listas simples de metadados de valor-nome).Recentemente, precisei misturar pares dt / dd inline e não inline, especificando a classe
dl-inline
nos<dt>
elementos que devem ser seguidos pelos<dd>
elementos inline .fonte
Isso funciona no IE7 +, é compatível com os padrões e permite alturas diferentes.
Veja o JSFiddle .
fonte
isso funciona para exibi-los como tabela, com borda, e deve ser responsivo com 3em a largura da primeira coluna. A quebra de linha apenas quebra qualquer palavra mais larga que a coluna
Comparação de
<table>
com<dl>
:fonte
Geralmente começo com o seguinte ao estilizar listas de definições como tabelas:
fonte
A maior parte do que as pessoas sugeriram aqui funciona, no entanto, você só deve colocar código genérico na folha de estilos e colocar o código específico no código html, como mostrado abaixo. Caso contrário, você terminará com uma folha de estilo inchada.
Aqui está como eu faço isso:
Seu código da folha de estilo:
Seu código html:
Se parece com isso
fonte