I'm using transforms to make my <li>s as below

here is my codes
.tab-nav {
width: 100%;
height: 40px;
margin-top: 100px;
}
.tab-nav-li {
display: inline-block;
border: solid 1px gray;
margin: 0 5px;
min-width: 170px;
min-height: 40px;
line-height: 40px;
text-align: center;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
transform: perspective(38px) rotateX(2deg);
transform-origin: bottom;
}
<div class="tab-nav">
<ul>
<li class="tab-nav-li">
<span>The first tab</span>
</li>
<li class="tab-nav-li">
<span>The second tab</span>
</li>
<li class="tab-nav-li">
<span>The third tab</span>
</li>
</ul>
</div>
li tags is transformed as my expecting, but its content was also transformed as well and this make a blurry text (as you can see it's not clear). Is there any way to avoid this?
One more question, viewing this on FF browser, the left side border looks not smooth. Do you know why and how to solve this issue?

Regards, Ken
Updated on May 9, 2017 - 5:19PM
I want to add a class call "highlighted" to fill background color for li tag.
.tab-nav {
width: 100%;
height: 40px;
margin-top: 100px;
}
.tab-nav-li {
display: inline-block;
margin: 0 5px;
min-width: 170px;
min-height: 40px;
line-height: 40px;
perspective: 38px; /*Declaring here*/
position: relative;
}
.tab-nav-li:before {
content: "";
width: 100%;
height: 40px;
position: absolute;
border: solid 1px gray;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
transform: rotateX(2deg);/*Then rotate*/
transform-origin: bottom;
}
span {
display: block;
text-align: center;
}
.highlighted {
background-color: darkgray;
}
<div class="tab-nav">
<ul>
<li class="tab-nav-li highlighted">
<span>The first tab</span>
</li>
<li class="tab-nav-li">
<span>The second tab</span>
</li>
<li class="tab-nav-li">
<span>The third tab</span>
</li>
</ul>
</div>
As you can see the above result, the color was filled but not fit in borders.
.tab-nav {
width: 100%;
height: 40px;
margin-top: 100px;
}
.tab-nav-li {
display: inline-block;
margin: 0 5px;
min-width: 170px;
min-height: 40px;
line-height: 40px;
perspective: 38px; /*Declaring here*/
position: relative;
}
.tab-nav-li:before {
content: "";
width: 100%;
height: 40px;
position: absolute;
border: solid 1px gray;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
transform: rotateX(2deg);/*Then rotate*/
transform-origin: bottom;
}
span {
display: block;
text-align: center;
}
.highlighted:before {
background-color: darkgray;
}
<div class="tab-nav">
<ul>
<li class="tab-nav-li highlighted">
<span>The first tab</span>
</li>
<li class="tab-nav-li">
<span>The second tab</span>
</li>
<li class="tab-nav-li">
<span>The third tab</span>
</li>
</ul>
</div>
And above way. color was filled and fitted in borders but it overlay the text.
Please help me solve this issue.
Thanks, ken