This question already has an answer here:
- Transparent arrow/triangle indented 3 answers
I need to create an arrow inside a div. I have created the arrow but need to get the visul effect with border as shown as below
Demo of the tried sample http://jsfiddle.net/rLZkf/4/
div {
margin: 20px;
height: 200px;
width: 200px;
background-color: #c1c1c1;
border: #000 solid 2px;
background-image: -webkit-linear-gradient(135deg, transparent 75%, #fff 75%), -webkit-linear-gradient(45deg, transparent 75%, #fff 75%);
background-image: -moz-linear-gradient(135deg, transparent 75%, #fff 75%), -moz-linear-gradient(45deg, transparent 75%, #fff 75%);
background-image: -ms-linear-gradient(135deg, transparent 75%, #fff 75%), -ms-linear-gradient(45deg, transparent 75%, #fff 75%);
background-image: -o-linear-gradient(135deg, transparent 75%, #fff 75%), -o-linear-gradient(45deg, transparent 75%, #fff 75%);
background-image: linear-gradient(135deg, transparent 75%, #fff 75%), linear-gradient(45deg, transparent 75%, #fff 75%);
background-position: 30px 0, 0 0;
background-repeat: no-repeat;
background-size: 30px 30px;
}
<div></div>
You can use CSS3 rotate property for this. Write like this:
Check this http://jsfiddle.net/rLZkf/6/
UPDATED
Check this http://jsfiddle.net/rLZkf/9/
Personally, I quite like to use a different approach to the chosen answer here.
Using the principle explained on https://css-tricks.com/snippets/css/css-triangle/ for example, you can use two pseudo elements to create the effect you're after.
You will basically create two triangles using this border trick: one will be the same colour as your page background and the other will be the same as your container border and will act as a 'border' to the first triangle.
You then just offset the position of the two triangles so they're on top of your container border and that's it.
Of course you can just wrap the whole thing in a mixin if you use Sass or similar and pass it the colours / arrow size.
See http://codepen.io/arnaudvalle/pen/EjgYrp for a quick example