CSS实现梯形标签页的方法
程序员文章站
2022-04-01 20:55:57
...
在web设计中,梯形标签页是很常见的一种形式,但是梯形又是一种很难实现的样式,很多开发者会直接用梯形背景图片来生成效果,但是采用背景图片的方式产生了额外的http请求,并不是一种非常理想的方式,这里笔者为大家带来一种直接用css来实现梯形效果的方法。
以一个简单的p为例:
<p class="p">这是一个梯形</p>
.p{ position: relative; display: inline-block; padding: .5em 1em .35em; color: white; } .p::before{ content: ''; /*用伪元素来生成一个矩形*/ position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: -1; background: #58a; transform: scaleY(1.3) perspective(.5em) rotateX(5deg); transform-origin: bottom; }
如果我们直接对元素结点进行3D变形,那么元素内的内容也会产生变形,这是一种不理想的效果,所以这里利用伪元素,将变形效果作用到伪元素上,就可以实现理想的效果。在这里,变形的时候,我们固定住了底部,它的高度是会发生变化的,所以通过scaleY(1.3)
来补足它在高度上的缩水。读者可以去掉scaleY(1.3)和transform-origin
来对比查看效果,这里笔者将两种结果都展示出来:
这是没有scaleY和transform-origin产生的结果
这是上述代码产生的样式结果
既然一个梯形标签产生了,那我们就可以进一步生成多个标签页,这里笔者为大家带来一个简单的示例。
<nav> <a href="#">Home</a> <a href="#">Projects</a> <a href="#">About</a> </nav>
nav>a{ position: relative; display: inline-block; padding: .3em 1em 0; } nav>a::before{ content: ''; position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: -1; background: #ccc; background-image: linear-gradient(hsla(0,0%,100%,.6),hsla(0,0%,100%,0)); border: 1px solid rgba(0,0,0,.4); border-bottom: none; border-radius: .5em .5em 0 0; transform: perspective(.5em) rotateX(5deg); transform-origin: bottom; }
产生的效果图是这样的:
读者可以改变transform-origin的属性为:left,right,bottom left, left right等查看不同的效果,这里笔者为大家展示几种效果:
以上内容就是CSS实现梯形标签页的方法,希望对大家有帮助。
相关推荐:
以上就是CSS实现梯形标签页的方法的详细内容,更多请关注其它相关文章!
上一篇: PHP自动发送邮件功能的实现代码分享
下一篇: CSS3中添加的新特性
推荐阅读
-
[js高手之路]HTML标签解释成DOM节点的实现方法
-
有两个input标签放到一行,如何实现左边的Input自适应宽度,右边的固定宽度。_html/css_WEB-ITnose
-
php实现过滤表单提交中html标签的方法,表单标签
-
Yii实现显示静态页的方法,yii实现静态
-
IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法_html/css_WEB-ITnose
-
谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法
-
JS+CSS实现可以凹陷显示选中单元格的方法_javascript技巧
-
通过table标签,PHP输出EXCEL的实现方法_PHP教程
-
利用CSS3 animation动画属性实现轮播图效果的方法详解
-
Yii实现单用户博客系统文章详情页插入评论表单的方法,yii表单