澳门博彩官网

  发布时间:2018-10-10 15:00:20   作者:w3cbest   我要评论

这篇文章主要介绍了css利用transform skewX制作平行四边形导航菜单的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

平行四边形其实是矩形的超集:它的各条边是两两平行的,但各个角则不一定都是直角。在视觉设计中,平行四边形往往可以传达出一种动感。

让我们试着用 CSS 创建一个按钮状的平行四边形链接。我们的起点就是一个普通的块状按钮,辅以一些简单的样式,然后,我们可以通过 skew() 的变形属性来对这个矩形进行斜向拉伸:

transform: skewX(-45deg);

但是,这导致它的内容也发生了斜向变形,这很不好看,而且难读。有没有办法只让容器的形状倾斜,而保持其内容不变呢?

很多人会想到嵌套元素方案,那么我们可以对内容再应用一次反向的 skew() 变形,从而抵消容器的变形效果,最终产生我们所期望的结果。不幸的是,这意味着我们将不得不使用一层额外的 HTML 元素来包裹内容,比如用一个 span:

<a href="www.jb51.net" class="button">
 <span>www.jb51.net</span>
</a>
.button { transform: skewX(-45deg); }
.button > span { transform: skewX(45deg); }

我们可以看到,这个方法的表现很不错,但它也意味着我们不得不添加额外的 HTML 元素。如果结构层的变更是不允许的,或者你希望严格保持结构层的纯净度,别担心,我们还有一个纯 CSS 的解决方案。

伪元素方案

另一种思路是把所有样式(背景、边框等)应用到伪元素上,然后再对伪元素进行变形。因为我们的内容并不是包含在伪元素里的,所以内容并不会受到变形的影响。下面来看看这个技巧能否得到与前面相同的链接样式。

我们希望伪元素保持良好的灵活性,可以自动继承其宿主元素的尺寸,甚至当宿主元素的尺寸是由其内容来决定时仍然如此。一个简单的办法是给宿主元素应用 position: relative 样式,并为伪元素设置 position:absolute,然后再把所有偏移量设置为零,以便让它在水平和垂直方向上都被拉伸至宿主元素的尺寸。代码看起来是这样的:

.button {
 position: relative;
 /* 其他的文字颜色、内边距等样式…… */
}
.button::before {
 content: '';
 position: absolute;
 top: 0; right: 0; bottom: 0; left: 0;
}

此时,用伪元素生成的方块是重叠在内容之上的,一旦给它设置背景,就会遮住内容。为了修复这个问题,我们可以给伪元素设置z-index: -1 样式,这样它的堆叠层次就会被推到宿主元素之后。现在我们要做的最后一步,就是尽情地对它设置变形样式,并享受美好的结果。最终版的代码如下所示,它产生的视觉效果跟前文所述技巧是完全一致的:

.button {
 position: relative;
 /* 其他的文字颜色、内边距等样式…… */
}
.button::before {
 content: ''; /* 用伪元素来生成一个矩形 */
 position: absolute;
 top: 0; right: 0; bottom: 0; left: 0;
 z-index: -1;
 background: #58a;
 transform: skew(45deg);
}

这个技巧不仅对 skew() 变形来说很有用,还适用于其他任何变形样式,当我们想变形一个元素而不想变形它的内容时就可以用到它。举个例子,我们把这个技巧针对 rotate() 变形样式稍稍调整一下,再用到一个正方形元素上,就可以很容易地得到一个菱形。

这个技巧的关键在于,我们利用伪元素以及定位属性产生了一个方块,然后对伪元素设置样式,并将其放置在其宿主元素的下层。这种思路同样可以运用在其他场景中,从而得到各种各样的效果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • css利用transform skewX制作平行四边形导航菜单

    这篇文章主要介绍了css利用transform skewX制作平行四边形导航菜单的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • calc()实现满屏背景定宽内容

    这篇文章主要介绍了calc()实现满屏背景定宽内容的相关资料,页面中包含多个大区块,每个区块都占据了整个视口的宽度,区块的背景也各不相同,非常具有实用价值,需要的朋友可
    2018-10-09
  • box-shadow和drop-shadow实现不规则投影实例代码

    这篇文章主要介绍了box-shadow和drop-shadow实现不规则投影实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-09
  • 使用css实现三角符号效果

    这篇文章主要介绍了使用css实现三角符号效果,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-09
  • css两端对齐之div+css布局实现2端对齐的4种方法总结

    div+css布局实现2端对齐是我们网页排版中经常会使用到的,这篇文章主要介绍了css两端对齐之div+css布局实现2端对齐的4种方法总结的相关资料,小编觉得挺不错的,现在分享给
    2018-09-29
  • css不常见属性之pointer-events的使用方法

    这篇文章主要介绍了css不常见属性之pointer-events的使用方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-27
  • 详解CSS文件的三种引入方式

    这篇文章主要介绍了详解CSS文件的三种引入方式的相关资料,CSS的引入方式共有三种:行内样式、内部样式表、外部样式表。具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-27
  • 使用css3制作齿轮loading动画效果

    这是一款基于css3齿轮loading动画特效,使用font-awesome字体图标的齿轮图标作为图案,通过CSS3 animation来制作三个齿轮的运动效果。感兴趣的朋友跟随小编一起看看吧
    2018-09-27
  • css中的position属性值的探究(小结)

    这篇文章主要介绍了css中的position属性值的探究(小结)的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-25
  • CSS 实现滚动的图片栏 实例代码

    这篇文章主要介绍了CSS 实现滚动的图片栏 实例代码,需要的朋友可以参考下
    2018-09-25

最新评论