It's CSS Ugly Sweater season. The past two years I've made CSS projects based off of Ugly Sweaters. The inspiration came from a LEGO Star Wars Advent Calendar that had a minifig in a sweater. Since then have I made sweaters of Star Wars, Pokemon, and Halloween.
This year there is a Guardians of the Galaxy LEGO advent calendar. One of the figure is Nebula wearing an ugly sweater of Thanos. That is the inspiration for today's post.
I modified the sweater from previous builds. To make the collar and bottom of the sweater, I made a div for each and inserted 11 divs with width of 9.09%. I gave these divs a class of "stitch." I used border: 2px dashed black;
with the sections next to each other the sides were doubled and too thick, so I reduced the border-Left:
and border-Right:
to 1px.
<div class="collar">
<div class="stitch"></div>
<div class="stitch"></div>
<div class="stitch"></div>
<div class="stitch"></div>
<div class="stitch"></div>
<div class="stitch"></div>
<div class="stitch"></div>
<div class="stitch"></div>
<div class="stitch"></div>
<div class="stitch"></div>
</div>
.collar, .base {
flex-direction: row;
flex-wrap: nowrap;
width: 100%;
justify-content: center;
align-items: center;
position: relative;
}
.stitch {
background-color: var(--sweaterGold);
border: 2px dashed black;
border-right: 1px dashed black;
border-left: 1px dashed black;
height: 34px;
width: 9.09%;
padding: 2px;
display: flex;
justify-content: center;
align-items: center;
}
I added an infinity stone to each stitch div. The stones are in a pattern of five equal size stones with a larger stone in the middle. Then there's a repeat of the first five colors.
<div class="collar">
<div class="stitch"><div class="stone stoneAmber"></div></div>
<div class="stitch"><div class="stone stoneRed"></div></div>
<div class="stitch"><div class="stone stoneBlue"></div></div>
<div class="stitch"><div class="stone stonePurple"></div></div>
<div class="stitch"><div class="stone stoneGreen"></div></div>
<div class="stitch"><div class="stone stoneYellow"></div></div>
<div class="stitch"><div class="stone stoneAmber"></div></div>
<div class="stitch"><div class="stone stoneRed"></div></div>
<div class="stitch"><div class="stone stoneBlue"></div></div>
<div class="stitch"><div class="stone stonePurple"></div></div>
<div class="stitch"><div class="stone stoneGreen"></div></div>
</div>
The inner rows of the sweater are a series of black triangles. They are made by a square with three transparent borders and then the top or bottom border with a color of black.
.blackRow {
border-top: 30px solid black;
border-bottom: 30px solid transparent;
border-left: 30px solid transparent;
border-right: 30px solid transparent;
display: flex;
justify-content: center;
align-items: center;
}
.blackRow_bottom {
border-top: 30px solid transparent;
border-bottom: 30px solid black;
border-left: 30px solid transparent;
border-right: 30px solid transparent;
}
The background snow was a tip from [Carlos Escalera][snow effect]. I thought about trying to code snow myself but this background image tip was direct to the point.
That's the overall sweater now it's time to add our little friend.
I placed a character div in between the rows of triangles. Inside the character div, is a div for a specific character. For this project it has a class of Thanos.
.thanos {
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
flex-direction: column;
}
<div class="character">
<div class="thanos"></div>
</div>
And I'll from the head.
The head is a square with rectangles added to the top and bottom for the minifigure studs or posts. Then I built the face inside the head div.
<div class="character">
<div class="thanos">
<div class="top">
<div class="headStud"></div>
</div>
<div class="midrow">
<div class="head"></div>
<div class="neckRow">
<div class="neck"></div>
</div>
</div>
</div>
The neck and headstud divs are the same shape and size. They only differ in background color.
.character {
display: flex;
justify-content: center;
align-items: center;
position: absolute;
overflow: visible;
margin-top: 0px;
}
.thanos {
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
flex-direction: column;
}
.head {
background-color: var(--thanosSkin);
height:200px;
width: 200px;
display: flex;
justify-content: space-around;
align-items: center;
overflow: hidden;
flex-direction: column;
border: 6px solid black;
border-top-left-radius: 20%;
border-top-right-radius: 20%;
border-bottom-left-radius: 20%;
border-bottom-right-radius: 20%;
}
.neck{
height: 20px;
width: 60px;
background-color: var(--sweaterGold);
border: 6px solid black;
border-top: 2px solid black;
border-top-left-radius: 20%;
border-top-right-radius: 20%;
border-bottom-left-radius: 20%;
border-bottom-right-radius: 20%;
margin-top: 2px;
position: absolute;
}
Thanos's face is made of simple shapes. The brow and chin are horizontal and vertical lines respectively. The eyes are squares with a little border-radius applied to the top of each.
The mouth and teeth are modified rectangles.