Retângulo SVG
Nesta página, você encontra informações sobre o elemento SVG <rect>, aprende a criar retângulos e vê exemplos com CSS.
O elemento SVG <rect> desenha um retângulo. É uma das formas básicas do SVG (ao lado de <circle>, <ellipse>, <line> e <polygon>) e é colocado diretamente dentro de um elemento <svg>. Esta página explica como posicionar e dimensionar um retângulo, como arredondar seus cantos e como controlar o preenchimento e o contorno usando atributos de apresentação ou CSS.
Se SVG é novidade para você, comece com a introdução ao SVG. Para uma lista completa de atributos e elementos, consulte a referência SVG.
Descrição do elemento <rect>
O elemento SVG <rect> cria um retângulo, bem como variações de formas retangulares. É possível desenhar retângulos de diversas alturas e larguras, com diferentes cores de contorno e preenchimento, etc. Vamos experimentar alguns exemplos.
O sistema de coordenadas SVG
Um retângulo é posicionado com os atributos x e y, medidos a partir do canto superior esquerdo do canvas SVG. O eixo x cresce para a direita e o eixo y cresce para baixo (portanto, um valor maior de y move a forma para mais abaixo na tela). Essas coordenadas são expressas em unidades de usuário, que por padrão correspondem a pixels, mas podem ser remapeadas com o atributo viewBox. Os atributos principais de <rect> são:
x— a posição horizontal da borda esquerda do retângulo. Padrão:0se omitido.y— a posição vertical da borda superior do retângulo. Padrão:0se omitido.width— a largura do retângulo. Padrão:0, o que torna o retângulo invisível, portanto você quase sempre precisa defini-la.height— a altura do retângulo. Também tem padrão0(invisível).rx— o raio horizontal usado para arredondar os cantos (opcional).ry— o raio vertical usado para arredondar os cantos (opcional).
Exemplo do elemento SVG <rect>:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<svg width="350" height="120">
<rect width="250" height="110" style="fill:rgb(53, 153, 0);stroke-width:1;stroke:rgb(32, 33, 49)" />
</svg>
</body>
</html>Agora vamos explicar este código:
- Os atributos width e height especificam a largura e a altura do retângulo.
- O atributo style especifica algumas propriedades CSS para o retângulo.
- A propriedade CSS fill especifica a cor de preenchimento do retângulo.
- A propriedade CSS stroke-width é usada para especificar a largura da borda do retângulo.
- A propriedade CSS stroke especifica a cor da borda do retângulo.
Atributos de apresentação vs. CSS
Os estilos fill, stroke e stroke-width acima também podem ser escritos como atributos de apresentação diretamente no elemento, em vez de dentro de um atributo style. Os dois trechos abaixo são equivalentes:
<!-- Using a CSS style attribute -->
<rect width="250" height="110"
style="fill:green;stroke:darkgray;stroke-width:5" />
<!-- Using presentation attributes -->
<rect width="250" height="110"
fill="green" stroke="darkgray" stroke-width="5" />Os atributos de apresentação são convenientes e legíveis, mas têm a menor prioridade: qualquer regra CSS correspondente (em uma folha de estilos ou em um atributo style) os sobrescreve. Use atributos de apresentação para formas simples e estáticas, e CSS quando quiser reutilizar estilos ou alterá-los ao passar o mouse. Para saber mais sobre bordas, consulte SVG stroking.
Exemplo do elemento SVG <rect> com os atributos x e y:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<svg width="400" height="250">
<rect x="80" y="50" width="180" height="180" style="fill:lightcoral;stroke:purple;stroke-width:5;fill-opacity:0.1;stroke-opacity:0.9" />
Sorry, inline SVG isn't supported by your browser.
</svg>
</body>
</html>Vamos explicar o código acima:
- O atributo x especifica a posição da borda esquerda do retângulo.
- O atributo y especifica a posição da borda superior do retângulo.
- Por padrão, se x e y forem omitidos, eles são definidos como 0.
- A propriedade CSS fill-opacity especifica a opacidade da cor de preenchimento.
- A propriedade CSS stroke-opacity especifica a opacidade da cor do contorno.
Exemplo do elemento SVG <rect> com a propriedade CSS opacity:
<!DOCTYPE html>
<html>
<body>
<svg width="400" height="180">
<rect x="50" y="20" width="150" height="150" style="fill:blue;stroke:pink;stroke-width:5;opacity:0.5" />
Sorry, inline SVG is not supported by your browser.
</svg>
</body>
</html>Vamos explicar o código acima:
- A propriedade CSS
opacitydefine a transparência do retângulo inteiro — tanto o preenchimento quanto o contorno juntos — onde1é completamente opaco e0é completamente transparente. - Isso difere do exemplo anterior:
fill-opacityestroke-opacitytornam o preenchimento e a borda transparentes de forma independente, enquantoopacityse aplica ao elemento como uma unidade única (portanto, um contorno e preenchimento sobrepostos se mesclam com o que estiver atrás da forma, e não entre si).
Exemplo do elemento SVG <rect> com os atributos rx e ry:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<svg width="350" height="240">
<rect x="70" y="50" rx="30" ry="30" width="170" height="170" style="fill:green;stroke:darkgray;stroke-width:5;opacity:0.7" />
Sorry, inline SVG isn't supported by your browser.
</svg>
</body>
</html>Vamos explicar o código acima:
- O atributo
rxespecifica o raio horizontal dos cantos arredondados do retângulo. - O atributo
ryespecifica o raio vertical dos cantos arredondados do retângulo.
A regra de cópia de rx/ry (atenção): se você definir apenas um desses atributos, o navegador usa o mesmo valor para o outro. Portanto, rx="30" sem ry produz cantos arredondados por 30 nas duas direções — exatamente como se você tivesse escrito rx="30" ry="30". Para obter cantos genuinamente elípticos (assimétricos), você deve fornecer valores diferentes para rx e ry. Se nenhum for definido, os cantos permanecem retos. Cada raio também é limitado a no máximo metade da largura (rx) ou da altura (ry) do retângulo.
Capítulos SVG relacionados
- Introdução ao SVG — o elemento
<svg>, o sistema de coordenadas eviewBox. - SVG stroking — controle bordas com
stroke,stroke-widthe traços. - SVG polygon — desenhe formas com múltiplos lados a partir de uma lista de pontos.
- Referência SVG — todos os elementos e atributos SVG em um único lugar.