Qualquer maneira de declarar um tamanho / borda parcial para uma caixa no CSS? Por exemplo, uma caixa com 350px
isso mostra apenas uma borda inferior em seus primeiros 60px
. Acho que isso pode ser muito útil.
Exemplos:
Na verdade não. Mas é muito fácil conseguir o efeito de uma forma que degrada elegantemente e não requer marcação supérflua:
div {
width: 350px;
height: 100px;
background: lightgray;
position: relative;
margin: 20px;
}
div:after {
content: '';
width: 60px;
height: 4px;
background: gray;
position: absolute;
bottom: -4px;
}
<div></div>
::outside
e::inside
pseudo-elementos ainda não estão disponíveis, eu odeio colocar na marcação apenas para denominar, mas eu não acho que haja qualquer outra maneira.content
em:after
um estilo embutido ou JSS, mas funciona bem com componentes estilizados.Eu sei, isso já está resolvido e os pixels foram solicitados. No entanto, eu só queria compartilhar algo ...
Elementos de texto parcialmente sublinhados podem ser facilmente obtidos usando
display:table
oudisplay:inline-block
(Eu só não uso
display:inline-block
porque, sim, você sabe, o estranho4px
-gap).Elementos Textuais
Centrar ,
display:table
torna impossível para centralizar o elemento comtext-align:center
.Vamos trabalhar com
margin:auto
...Bem , isso é bom, mas não é parcialmente .
Como estante de livros já apresentado, pseudo-elementos valem ouro.
Offset , o sublinhado é alinhado à esquerda agora. Para centralizá-lo, basta empurrar o pseudoelemento metade de seu
width
(50% / 2 = 25%
) para a direita....Como comentou davidmatas , usar
margin:auto
às vezes é mais prático do que calcular omargin
deslocamento à mão.Assim, podemos alinhar o sublinhado à esquerda, direita ou centro (sem saber a corrente
width
) usando uma destas combinações:margin-right: auto
(ou apenas deixe desligado)margin: auto
margin-left: auto
Exemplo completo
Elementos de nível de bloco
Isso pode ser facilmente adotado, para que possamos usar elementos de nível de bloco. O truque é definir a altura dos pseudoelementos para a mesma altura de seu elemento real (simplesmente
height:100%
):fonte
:after
eu gosto mais de umamargin: 0 auto
abordagem ao invés domargin-left: 25%
porque funcionará com qualquer largura que você declarar sem a necessidade de fazer contas.auto
- simplificator :)Aqui está outra solução que depende de
linear-gradient
onde você pode criar facilmente qualquer tipo de linha que desejar. Você também pode ter várias linhas (em cada lado, por exemplo) usando vários planos de fundo:Exibir trecho de código
Aqui está outra sintaxe para obter o mesmo que acima:
fonte
Usei uma grade para construir e desenhar algumas das fronteiras.
Veja aqui .
Código:
fonte
CSS não oferece suporte a bordas parciais. Você precisaria usar um elemento adjacente para simular isso.
fonte