.c-btn{
border: none;
background-color: orange;
padding: 12px 48px 12px 24px;
border-radius: 4px;
color: #fff;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7.41' height='12' viewBox='0 0 7.41 12'%3E%3Cpath d='M10,6,8.59,7.41,13.17,12,8.59,16.59,10,18l6-6Z' transform='translate(-8.59 -6)' fill='%23fff'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 24px center;
}
<button class="c-btn">View Profile</button>
Answer from Ehsan on Stack Overflow.c-btn{
border: none;
background-color: orange;
padding: 12px 48px 12px 24px;
border-radius: 4px;
color: #fff;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7.41' height='12' viewBox='0 0 7.41 12'%3E%3Cpath d='M10,6,8.59,7.41,13.17,12,8.59,16.59,10,18l6-6Z' transform='translate(-8.59 -6)' fill='%23fff'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 24px center;
}
<button class="c-btn">View Profile</button>
This is the simplest way to give right arrow to the button.
.end-btn {
margin-top: 2vw;
background-color: #DAA521;
border: none;
width: 15vw;
height: 3vw;
font-size: 1.5vw;
color: #FFFFFF;
border-radius: 0.5vw;
font-weight: bold;
cursor: pointer;
}
<button class="end-btn"> View profile > </button>
Also you can use some icons if you can add external css to your html like below.
.end-btn {
margin-top: 2vw;
background-color: #DAA521;
border: none;
width: 30vw;
height: 7vw;
font-size: 3vw;
color: #FFFFFF;
border-radius: 0.5vw;
font-weight: bold;
cursor: pointer;
padding: 10px;
}
.end-btn i {
float: right;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<button class="end-btn"> View profile <i class="fa fa-chevron-right"></i></button>
Need help adding left and right arrows to a button
css - Button with right arrow - transition - Stack Overflow
css - Create a Button with right triangle/pointer - Stack Overflow
sass - CSS Toggle arrow left and right with just css - Stack Overflow
Videos
As stated in my comment, this is kind of expected because roughly speaking what happens is that a semi-transparent white layer is being placed on top of another such layer in the areas where there is an overlap and so, that area quickly appears whiter than the rest.
Using Skew Transform:
One solution would be like in the below snippet but it makes the hover/hit area a rectangle. What I've done here is to make the pseudo-elements create the entire shape (other than the left border) and a overflow-hidden on the parent prevents the unwanted skewed portions on left side from showing up.
body {
background: gray;
font-family: sans-serif;
}
.more-skewed {
display: inline-block;
position: relative;
color: white;
text-decoration: none;
border-left: solid 2px white;
box-sizing: border-box;
padding: 15px 40px;
letter-spacing: 3px;
transition: all 1s ease-out;
overflow: hidden;
}
.more-skewed:before {
content: '';
position: absolute;
left: -2px;
top: 0px;
bottom: 50%;
border-right: solid 2px white;
border-top: solid 2px white;
transform: skewX(25deg);
transform-origin: right bottom;
width: 100%;
transition: all 1s ease-out;
z-index: -1;
}
.more-skewed:after {
content: '';
position: absolute;
left: -2px;
bottom: 0px;
top: 50%;
border-right: solid 2px white;
border-bottom: solid 2px white;
transform: skewX(-25deg);
transform-origin: right top;
width: 100%;
transition: all 1s ease-out;
z-index: -1;
}
.more-skewed:hover {
color: black;
}
.more-skewed:hover:before,
.more-skewed:hover:after {
background: white;
}
<a class="more-skewed" href="#">MORE</a>
Using Rotate with Perspective:
Another solution could be to use rotate transforms with a bit of perspective added to it. By setting the appropriate value for transform-origin we can make it produce a trapezoid which can be placed at the appropriate positions to produce an arrow. Here, the hover/hit area remains within the shape but this approach is useful only if the text is small and static. If the text becomes longer, the slope on the right side of the shape becomes more gradual instead of being steep (of-course, we can change the transforms to make it look better, but it is not very useful if we have to keep changing it often).
.more-skewed {
display: inline-block;
position: relative;
color: white;
text-decoration: none;
border: solid 2px white;
border-right: none;
box-sizing: border-box;
padding: 16px 40px;
letter-spacing: 3px;
margin: 10px;
}
.more-skewed:before,
.more-skewed:after {
position: absolute;
content: '';
height: 50%;
width: 100%;
left: 0;
border-right: 3px solid white;
transition: all 1s ease-out;
}
.more-skewed:before {
top: -2px;
border-top: 2px solid white;
transform-origin: left top;
transform: perspective(100px) rotateX(30deg);
}
.more-skewed:after {
bottom: -2px;
border-bottom: 2px solid white;
transform-origin: left bottom;
transform: perspective(100px) rotateX(-30deg);
}
.more-skewed:hover {
color: black;
}
.more-skewed:hover:before,
.more-skewed:hover:after {
background: white;
}
.more-skewed span {
position: relative;
z-index: 1;
}
body {
background: gray;
font-family: sans-serif;
}
<a class="more-skewed" href="#">
<span>MORE</span>
</a>
<br/>
<a class="more-skewed" href="#">
<span>MORE LONGER TEXT</span>
</a>
(Feedback is that the above snippet breaks in IE. I will address that when I find time.)
Here is another version that I came up with as I was playing around. It is a bit like a background slide-fill effect which keeps the hover/hit area within the shape but due to the way gradients are rendered by browsers, it isn't very clean. Thought of leaving it here just in-case you find it useful.
body {
background: gray;
font-family: sans-serif;
}
.more-skewed {
display: inline-block;
position: relative;
color: white;
text-decoration: none;
border: solid 2px white;
border-right: none;
box-sizing: border-box;
padding: 15px 40px;
letter-spacing: 3px;
transition: all 1s linear;
background: linear-gradient(245deg, transparent 9px, white 10px), linear-gradient(295deg, transparent 9px, white 10px);
background-size: 0% 50%;
background-position: top right, bottom right;
background-repeat: no-repeat;
}
.more-skewed:before {
content: '';
position: absolute;
left: 100%;
margin-left: -7px;
top: -2px;
bottom: 50%;
transform: skewX(25deg);
width: 15px;
background: linear-gradient(white, white);
background-size: 3px 100%;
background-repeat: no-repeat;
background-position: top right;
transition: all 1s 1s linear;
}
.more-skewed:after {
content: '';
position: absolute;
left: 100%;
margin-left: -7px;
bottom: -2px;
top: 50%;
transform: skewX(-25deg);
width: 15px;
background: linear-gradient(white, white);
background-size: 3px 100%;
background-repeat: no-repeat;
background-position: top right;
transition: all 1s 1s linear;
}
.more-skewed:hover {
color: black;
background-size: 100% 50%;
transition: all 1s 1s linear;
}
.more-skewed:hover:before,
.more-skewed:hover:after {
color: black;
background-size: 100% 100%;
transition: all 1s linear;
}
<a class="more-skewed" href="#">MORE</a>
Please check below arrow code with transition, hope it help.
Thanks
HTML
<a class="arrow_box">
MORE
</a>
CSS
body {
background: gray;
font-family: sans-serif;
}
.arrow_box {
position: relative;
background: gray;
border: 2px solid #ffffff;
display:inline-block;
padding: 15px 40px;
letter-spacing: 3px;
color:#FFF;
transition:0.4s;
}
.arrow_box:after, .arrow_box:before {
left: 100%;
top: 50%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
transition:0.4s;
}
.arrow_box:after {
border-color: rgba(128, 128, 128, 0);
border-left-color: gray;
border-width: 24px;
margin-top: -24px;
}
.arrow_box:before {
border-color: rgba(255, 255, 255, 0);
border-left-color: #ffffff;
border-width: 26px;
margin-top: -26px;
margin-left: 2px;
}
.arrow_box:hover{
color:#000;
background:#FFF;
}
.arrow_box:hover:after{
border-left-color: #FFF;
}
Check fiddle here
Have you tried something using html/css??
#vert_menu{ overflow: hidden; width: 100%; }
#vert_menu li{ float: left; }
#vert_menu a{
padding: 8px 20px 8px 40px;
float: left; text-align:center;
text-decoration: none; font: normal 16px Myriad Pro, Helvetica, Arial, sans-serif; text-shadow:0px 1px 0px #000;
color: #e6e2cf;
position: relative; text-shadow:1px 0 0 #000;
background: #525252; min-width:181px; width:auto
}
#vert_menu a::after,
#vert_menu a::before{
content: "";
position: absolute;
top: 50%;
margin-top: -19px;
border-top: 19px solid transparent;
border-bottom: 19px solid transparent;
border-left: 1em solid;
right: -1em;
}
#vert_menu a::after{ z-index: 2; border-left-color: #525252; }
<ul id="vert_menu">
<li><a href="#" class="current">test</a></li>
</ul>
You may this in your HTML;
<div>
<a href="#"><button>Button</button></a>
</div>
And this in your CSS
a {
background: #950006;
border: none;
display: inline-block;
height: 28px;
line-height: 28px;
position: relative;
text-decoration: none;
width: 100px
}
a:before{
background: #950006;
border: none;
content: '';
display: block;
height: 20px;
left: 90px;
position: absolute;
top: 4px;
-moz-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
width: 21px;
}
a button {
color: #fff;
background: none;
border: none;
font-weight: bold;
position: relative;
width: 120px;
height: 28px;
}
and will output a button like this:- 
Here is a working Live Demo. The complete button is CLICKABLE. You may test the button by changing the background of the parent div.
Hope this helps.
Here I made it for you jsFiddle
Edited HTML:
<span class="arrowBtn"> <span class="icon"></span></span>
You can create CSS3 arrow from borders:
.sBtn-go .arrowBtn .icon {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 0;
height: 0;
border-style: solid;
border-width: 15px 0 15px 13px;
border-color: transparent transparent transparent white;
}
may be this will help youl
.sBtn {
display: inline-block;
background: #908589;
border: 0;
color: #fff;
font-weight: 700;
font-size: 1.2em;
letter-spacing: 0.04em;
line-height: 2.5em;
padding: 0 0 0 1em;
outline: none;
text-decoration: none;
margin-top: 14px;
}
.arrowBtn {
display: inline-block;
line-height: 2.5em;
text-align: center;
background: #333;
color: white;
font-size: 1em;
width: 2.5em;
transition: margin 200ms;
margin-left: .75em;
position:relative;
left:2px;
}
.sBtn-go .arrowBtn {
background-color: #B6AFB1;
}
.sBtn-go .arrowBtn:hover {
}
.sBtn-go .arrowBtn {
background-color: desaturate(darken(#F8AD6C,5%),5%);
}
<button class="sBtn sBtn-go" name="search">Search<span class="arrowBtn">►</span></button>