Existe alguma maneira de limitar o comprimento de uma borda. Eu tenho um <div>
que tem uma borda inferior, mas quero adicionar uma borda à esquerda da <div>
que se estenda apenas na metade do caminho.
Existe alguma maneira de fazer isso sem adicionar elementos extras na página?
O conteúdo gerado por CSS pode resolver isso para você:
(nota - a
content: "";
declaração é necessária para que o pseudoelemento seja renderizado)fonte
The
:after
rocks :)Se você tocar um pouco, poderá definir o elemento de borda redimensionada para aparecer centralizado ou para aparecer apenas se houver outro elemento próximo a ele (como nos menus). Aqui está um exemplo com um menu:
Mostrar snippet de código
fonte
No entanto, podemos imitar o efeito de borda e controlar seu
width
eheight
como queremos de outras maneiras.Com CSS (gradiente linear):
Podemos usar
linear-gradient()
para criar uma imagem de fundo e controlar seu tamanho e posição com CSS para que pareça uma borda. Como podemos aplicar várias imagens de plano de fundo a um elemento, podemos usar esse recurso para criar várias bordas como imagens e aplicar em diferentes lados do elemento. Também podemos cobrir a área restante disponível com algumas cores sólidas, gradientes ou imagens de fundo.HTML necessário:
Tudo o que precisamos é de apenas um elemento (possivelmente tendo alguma classe).
Passos:
linear-gradient()
.background-size
para ajustar aswidth
/height
das imagens criadas acima para que pareçam uma borda.background-position
para ajustar a posição (comoleft
,right
,left bottom
etc.) dos acima fronteira criado (s).CSS necessário:
Exemplos:
Com
linear-gradient()
isso, podemos criar bordas de cores sólidas e também ter gradientes. Abaixo estão alguns exemplos de bordas criadas com este método.Exemplo com borda aplicada apenas em um lado:
Mostrar snippet de código
Exemplo com borda aplicada nos dois lados:
Mostrar snippet de código
Exemplo com borda aplicada em todos os lados:
Mostrar snippet de código
Captura de tela:
fonte
para linhas horizontais, você pode usar a tag hr:
mas não é possível limitar a altura da borda. apenas altura do elemento.
fonte
height
. Para substituir a borda da célula em uma tag TD, use<td>your content<hr/></td>
.As bordas são definidas apenas por lado, não em frações de um lado. Então, não, você não pode fazer isso.
Além disso, um novo elemento também não seria uma fronteira, simularia apenas o comportamento que você deseja - mas ainda assim seria um elemento.
fonte
Outra maneira de fazer isso é usar imagem de borda em combinação com um gradiente linear.
jsfiddle: https://jsfiddle.net/u7zq0amc/1/
Suporte para Navegador: IE: 11+
Chrome: todos
Firefox: 15+
Para um melhor suporte, adicione também prefixos de fornecedores.
caniuse border-image
fonte
Este é um truque de CSS, não uma solução formal. Deixo o código com o período em preto porque me ajuda a posicionar o elemento. Posteriormente, pinte seu conteúdo (cor: branco) e (margem superior: -5px ou mais) para torná-lo como se o período não estivesse lá.
fonte
Outra solução é usar uma imagem de plano de fundo para imitar a aparência de uma borda esquerda
Você pode precisar ajustar o IE (como de costume), mas vale a pena tentar se esse é o design que você deseja.
fonte
Você pode definir apenas uma borda por lado. Você teria que adicionar um elemento extra para isso!
fonte