Respostas:
Espero que isto ajude:
#mainDiv {
height: 100px;
width: 80px;
position: relative;
border-bottom: 2px solid #f51c40;
background: #3beadc;
}
#borderLeft {
border-left: 2px solid #f51c40;
position: absolute;
top: 50%;
bottom: 0;
}
<div id="mainDiv">
<div id="borderLeft"></div>
</div>
O conteúdo gerado por CSS pode resolver isso para você:
div {
position: relative;
}
/* Main div for border to extend to 50% from bottom left corner */
div:after {
content: "";
background: black;
position: absolute;
bottom: 0;
left: 0;
height: 50%;
width: 1px;
}
<div>Lorem Ipsum</div>
(nota - a content: "";
declaração é necessária para que o pseudoelemento seja renderizado)
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:
#menu > ul > li {
position: relative;
float: left;
padding: 0 10px;
}
#menu > ul > li + li:after {
content:"";
background: #ccc;
position: absolute;
bottom: 25%;
left: 0;
height: 50%;
width: 1px;
}
Com propriedades CSS, podemos controlar apenas a espessura da borda; não comprimento.
No entanto, podemos imitar o efeito de borda e controlar seu width
e height
como queremos de outras maneiras.
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).
<div class="box"></div>
Passos:
linear-gradient()
.background-size
para ajustar as width
/ height
das imagens criadas acima para que pareçam uma borda.background-position
para ajustar a posição (como left
, right
, left bottom
etc.) dos acima fronteira criado (s).CSS necessário:
.box {
background-image: linear-gradient(purple, purple),
// Above css will create background image that looks like a border.
linear-gradient(steelblue, steelblue);
// This will create background image for the container.
background-repeat: no-repeat;
/* First sizing pair (4px 50%) will define the size of the border i.e border
will be of having 4px width and 50% height. */
/* 2nd pair will define the size of stretched background image. */
background-size: 4px 50%, calc(100% - 4px) 100%;
/* Similar to size, first pair will define the position of the border
and 2nd one for the container background */
background-position: left bottom, 4px 0;
}
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:
Exemplo com borda aplicada nos dois lados:
Exemplo com borda aplicada em todos os lados:
Captura de tela:
para linhas horizontais, você pode usar a tag hr:
hr { width: 90%; }
mas não é possível limitar a altura da borda. apenas altura do elemento.
height
. Para substituir a borda da célula em uma tag TD, use <td>your content<hr/></td>
.
Outra maneira de fazer isso é usar imagem de borda em combinação com um gradiente linear.
div {
width: 100px;
height: 75px;
background-color: green;
background-clip: content-box; /* so that the background color is not below the border */
border-left: 5px solid black;
border-image: linear-gradient(to top, #000 50%, rgba(0,0,0,0) 50%); /* to top - at 50% transparent */
border-image-slice: 1;
}
<div></div>
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.
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á.
div.yourdivname:after {
content: ".";
border-bottom:1px solid grey;
width:60%;
display:block;
margin:0 auto;
}
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.