---
id: 587d78a6367417b2b2512ade
title: Create a More Complex Shape Using CSS and HTML
localeTitle: Crea una forma más compleja usando CSS y HTML
challengeType: 0
videoUrl: ''
---
## Description
Una de las formas más populares del mundo es la forma de corazón, y en este desafío creará una utilizando CSS puro. Pero primero, debe comprender los elementos pseudoelementos ::before
y ::after
. Estos pseudo-elementos se usan para agregar algo antes o después de un elemento seleccionado. En el siguiente ejemplo, un ::before
pseudo-elemento se usa para agregar un rectángulo a un elemento con el heart
la clase:
.heart::before {
content: "";
background-color: yellow;
border-radius: 25%;
position: absolute;
height: 50px;
width: 70px;
top: -50px;
left: 5px;
}
Para que los elementos de pseudo-elementos ::before
y ::after
funcionen correctamente, deben tener una propiedad de content
definida. Esta propiedad se usa generalmente para agregar elementos como una foto o texto al elemento seleccionado. Cuando los pseudo-elementos ::before
y ::after
se usan para hacer formas, la propiedad de content
sigue siendo necesaria, pero se establece en una cadena vacía.
En el ejemplo anterior, el elemento con la clase de heart
tiene un pseudoelemento ::before
del que produce un rectángulo amarillo con height
y width
de 50 px y 70 px, respectivamente. Este rectángulo tiene esquinas redondeadas debido a su radio de borde del 25% y está posicionado absolutamente a 5px desde la left
y 50px por encima de la top
del elemento.
## Instructions
Transforma el elemento en la pantalla a un corazón. En el heart::after
selector, cambie el background-color
a rosa y el border-radius
del border-radius
a 50%.
A continuación, apunte el elemento con el heart
la clase (solo el heart
) y complete la propiedad de transform
. Utilice la función rotate()
con -45 grados. ( rotate()
funciona de la misma manera que skewX()
y skewY()
hacen).
Finalmente, en el heart::before
selector, establece su propiedad de content
en una cadena vacía.
## Tests
```yml
tests:
- text: 'La propiedad de background-color
de fondo del heart::after
selector debe ser rosa.'
testString: 'assert(code.match(/\.heart::after\s*?{\s*?background-color\s*?:\s*?pink\s*?;/gi), "The background-color
property of the heart::after
selector should be pink.");'
- text: 'El border-radius
del border-radius
del heart::after
selector debe ser del 50%.'
testString: 'assert(code.match(/border-radius\s*?:\s*?50%/gi).length == 2, "The border-radius
of the heart::after
selector should be 50%.");'
- text: La propiedad de transform
para la clase de heart
debe usar una función rotate()
establecida en -45 grados.
testString: 'assert(code.match(/transform\s*?:\s*?rotate\(\s*?-45deg\s*?\)/gi), "The transform
property for the heart
class should use a rotate()
function set to -45 degrees.");'
- text: 'El content
del heart::before
selector debe ser una cadena vacía.'
testString: 'assert(code.match(/\.heart::before\s*?{\s*?content\s*?:\s*?("|")\1\s*?;/gi), "The content
of the heart::before
selector should be an empty string.");'
```
## Challenge Seed
## Solution
```js
var code = ".heart {transform: rotate(-45deg);} .heart::after {background-color: pink; border-radius: 50%;} .heart::before {content: \"\"; border-radius: 50%;}"
```