33

I have a triangle

<div class="triangle-left"></div>


.triangle-left {
    width: 0; 
    height: 0; 
    border-top: 22px solid transparent;
    border-bottom: 22px solid transparent;
    border-right: 22px solid white;
}

How do I draw the outline of a CSS triangle, considering border itself is used to make the triangle? External divs?

2
  • Make another triangle that's red and one pixel wider and then put the white triangle over it and you have a white triangle with a red border. Commented Mar 12, 2015 at 4:07
  • Use the triangle technique described in this answer here. Commented Mar 12, 2015 at 4:40

2 Answers 2

38

One way to do it is the create an inner triangle which is smaller.

.triangle-left {
    width: 0;
    height: 0;
    border-top: 23px solid transparent;
    border-bottom: 23px solid transparent;
    border-right: 23px solid red;
}

.inner-triangle {
    position: relative;
    top: -20px;
    left: 2px;
    width: 0;
    height: 0;
    border-top: 20px solid transparent;
    border-bottom: 20px solid transparent;
    border-right: 20px solid blue;
}
<div class="triangle-left">
    <div class="inner-triangle"></div>
</div>

Sign up to request clarification or add additional context in comments.

1 Comment

how would you do this if the triangle was in an li:after element?
36

This is how I would do it.

.triangle-left {
  width: 0;
  height: 0;
  border-top: 22px solid transparent;
  border-bottom: 22px solid transparent;
  border-right: 22px solid black;
  position: relative;
}

.triangle-left:after {
  content: '';
  width: 0;
  height: 0;
  border-top: 21px solid transparent;
  border-bottom: 21px solid transparent;
  border-right: 21px solid #dddddd;
  position: absolute;
  top: -21px;
  left: 1px;
}
<div class="triangle-left"></div>

Here it is on JSFiddle.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.