这是我的代码
.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>
&#13;
li标签被转换为我的期望,但它的内容也被转换,这使得文本模糊(你可以看到它并不清楚)。有什么方法可以避免这种情况吗?
还有一个问题,在FF浏览器上查看,左侧边框看起来不顺畅。你知道为什么以及如何解决这个问题吗?
此致 肯
2017年5月9日下午5:19更新
我想添加一个课程调用&#34;突出显示&#34;填写li标签的背景颜色。
.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;
}
&#13;
<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>
&#13;
正如您可以看到上面的结果,颜色已填充但不适合边框。
.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;
}
&#13;
<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>
&#13;
以上方式。颜色被填充并装在边框中,但它覆盖了文本。
请帮我解决这个问题。
谢谢, 肯
答案 0 :(得分:2)
首先在perspective
元素上声明parent
以在多个元素上创建3d transform
,我们在此处所做的工作使用li
作为perspective
甚至{{ 1}},因此它在span标记文本上创建了rotated
。而是使用blur
选择器在pseudo
处轮换,并在X-axis
元素上声明perspective
,如下所示,
透视CSS属性确定z = 0之间的距离 平面和用户为了给3D定位元素一些 透视图。
li
.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;
}
答案 1 :(得分:1)
如果将这些跨度设置为display:inline-block
,则可以通过基本上应用相反的效果来“重置”它们的变换。这将清除内容的倾斜:
.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(5deg);
transform-origin: 50%;
}
.tab-nav-li span {
display: inline-block;
transform: perspective(38px) rotateX(-5deg);
}
<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>
对于FF中的锯齿状边框渲染,它实际上在我的MacBook上看起来很好。最简单的解决方案可能是使用图像作为背景,而不是使用变换作为标签轮廓。
希望它有所帮助!