timtam
timtam

Reputation: 220

Why do I get a faint border around the border of a rotated div in CSS?

I am doing a this challenge on CSS Battle and get a very thin border around the rotated div object. Why is that? How can I get rid of it? When I submit it on the website it also scores only 98.somewhat %, so it's not just a rendering problem.

<div id="a"></div>
<div id="b"></div>
<div id="c"></div>
<style>
  body {
    background: #222730;
    margin: 0;
  }
  
  div {
    position: absolute;
    background: #4CAAB3;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
  }
  
  #a {
    width: 400px;
    height: 150px;
  }
  
  #b {
    z-index: 1;
    border: solid 50px #222730;
    width: 150px;
    height: 150px;
    transform: translate(-50%, -50%) rotate(45deg);
  }
  
  #c {
    z-index: 2;
    background: #393E46;
    border-radius: 25px;
    width: 50px;
    height: 50px;
  }
</style>

Upvotes: 0

Views: 770

Answers (2)

Temani Afif
Temani Afif

Reputation: 272816

You can simplify your code like below:

html {
  background: 
    linear-gradient(#4CAAB3 0 0)center/100% 150px repeat-x /* the bar below the rotate square */
    #222730
}

body {
  width: 150px;
  height: 150px;
  margin: 25px auto;
  border: 50px solid #222730; /* the border */
  background: 
    #4CAAB3 padding-box /* the main color */
    radial-gradient(1px, #393E46 24px, #0000 25px); /* the circle */
  transform: rotate(45deg);
}

Upvotes: 1

Obsidian Age
Obsidian Age

Reputation: 42304

It's coming from the background property of #b (inherited from div).

Simply shift this property setting to be exclusive to #a:

body {
  background: #222730;
  margin: 0;
}

div {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

#a {
  width: 400px;
  height: 150px;
  background: #4CAAB3;
}

#b {
  z-index: 1;
  border: solid 50px #222730;
  width: 150px;
  height: 150px;
  transform: translate(-50%, -50%) rotate(45deg);
}

#c {
  z-index: 2;
  background: #393E46;
  border-radius: 25px;
  width: 50px;
  height: 50px;
}
<div id="a"></div>
<div id="b"></div>
<div id="c"></div>

Upvotes: 1

Related Questions