CSS Ugly Sweater: Thanos

Chris Jarvis - Dec 21 '22 - - Dev Community

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.

LEGO Blue alien woman wearing a Christmas sweater

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>


Enter fullscreen mode Exit fullscreen mode

.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; 
}


Enter fullscreen mode Exit fullscreen mode

graphic to simulate a sweater. The background is blue, at top and bottom are rows of gold boxes. each box has a colored oval.There are row of black triangles.

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>

Enter fullscreen mode Exit fullscreen mode

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;

}

Enter fullscreen mode Exit fullscreen mode

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;
}

Enter fullscreen mode Exit fullscreen mode
       <div class="character">
        <div class="thanos"></div>
       </div>

Enter fullscreen mode Exit fullscreen mode

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.

Blue background with gold rows. in the center is a purple square.

       <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>
Enter fullscreen mode Exit fullscreen mode

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;
}
Enter fullscreen mode Exit fullscreen mode

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.

purple Thanos head.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .