CSS学习笔记(六)形状(二)
十、平行四边形
提出问题
- 平行四边形其实是矩形的超集:它的各条边是两两平行的,但各个角则不一定都是直角。
- 有没有办法只让容器的形状倾斜,而保持其内容不变呢?
解决方案
嵌套元素方案
- 以对内容再应用一次反向的 skew() 变形,从而抵消容器的变形效果。
1 | <a href="#yolo" class="button"> |
1 | .button { transform: skewX(-45deg); } |
伪元素方案
- 把所有样式(背景、边框等)应用到伪元素上,然后再对伪元素进行变形。
- 一个简单的办法是给宿主元素应用 position: relative 样式,并为伪元素设置 position: absolute,然后再把所有偏移量设置为零,以便让它在水平和垂直方向上都被拉伸至宿主元素的尺寸。
- 同时设置z-index:-1样式来调整堆叠层次。
1 | .button { |
十一、菱形图片
基于变形的方案
- 需要把图片用一个 div 包裹起来,然后对其应用相反的 rotate()变形样式:
1 | <div class="picture"> |
1 | .picture { |
- 以上代码并未实现最终效果:主要问题在于 max-width: 100% 这条声明。100% 会被解析为容器(.picture)的边长。
- 我们想让图片的宽度与容器的对角线相等,而不是与边长相等。
- 通过scale()来缩放图片。
1 | .picture { |
裁切路径方案
- 使用clip-path属性和polygon()函数来指定一个菱形。
1 | .picture { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 姚永坤的小窝!
评论