我想将三角形添加到块的两侧以将其塑造成箭头like so。但它需要灵活并适应不同长度的文本。我在想,传统的css-triangles-made-from-borders技术是行不通的,但这就是我到目前为止(demo)。其他人是否有更强大的解决方案?灵活的CSS三角形?
尖端的CSS是好的,只要它很好地降解。
我想将三角形添加到块的两侧以将其塑造成箭头like so。但它需要灵活并适应不同长度的文本。我在想,传统的css-triangles-made-from-borders技术是行不通的,但这就是我到目前为止(demo)。其他人是否有更强大的解决方案?灵活的CSS三角形?
尖端的CSS是好的,只要它很好地降解。
我认为最好的兼容性的解决办法是http://dabblet.com/gist/3184227
它仅使用伪元素和CSS transform
s(因此它可以在IE9中,它可以适用于IE8,其中伪元素可以使用被扭曲matrix filter
- 我从来没有检查过这是否真的有效......我只知道渐变过滤器不适用于伪元素)。
的想法是非常简单的:使用两个伪元素,每一个都具有height
,绝对position
它们,一个采取半起来以相反的方向的上半部分,而另一个下半部最后skew
它们。
HTML:
相关CSS:
.t {
position: relative;
}
.t:before,
.t:after {
left: 0;
right: 0;
position: absolute;
z-index: -1;
content: '';
}
.t:before {
top: 0;
bottom: 50%;
transform: skewX(10deg);
}
.t:after {
top: 50%;
bottom: 0;
transform: skewX(-10deg);
}
它可以在不伪元素来完成,只用CSS gradients
。不幸的是,IE9 does not support them。
这真的很性感,非常感谢!我还没有考虑过css渐变来解决这个问题,但是你的主要解决方案对于我的软弱大脑更有意义。 – user1555283 2012-07-26 23:56:31
变换在chrome中不起作用? – froderik 2013-05-06 05:55:16
@froderik它可以在Chrome中工作,但尚未前缀 - 请参阅http://caniuse.com/#feat=transforms2d您需要在前缀***之前添加'-webkit-transform'版本***。我的演示不包含任何前缀,因为它使用**'-prefix-free' ** http://leaverou.github.io/prefixfree/,根据需要添加前缀。 – Ana 2013-05-06 19:37:03
如果CSS3没问题,难道你不能把整个事情做成一个背景图像,并相应地使用'background-size'属性来让它伸展吗? – 2012-07-26 16:16:59
嗯,这是一个好主意。如果可能的话,我宁愿避免使用图像,我担心拉伸太多会使其模糊,但这可能是最好的解决方案。谢谢! – user1555283 2012-07-26 20:05:28