我一直工作在与锯齿边缘的标题。 这样做的一个方法是使用图像,使锯齿效果。
(1)有什么办法来创建CSS实用的跨浏览器的锯齿边缘,而无需使用图像的?
我也试图把一个纹理背景上这头延伸到曲折。 然而,头的垂直尺寸可能会改变,我无法实现的标题作为一个单一的形象。
如果我尝试纹理既添加到锯齿边缘和头元素,有机会,纹理将关闭同步。
(2)上实施,其延伸到所述Z字形而不关闭同步一个纹理背景任何想法?
我的[老]代码(与纹理一起)是这里的jsfiddle 。
body { padding: 20px; } header { width: 240px; background-color: #BCED91; } header:after { content: " "; display: block; position: relative; width: 240px; bottom: -15px; height: 15px; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAPCAYAAACWV43jAAAAw0lEQVRIx83RsQ3CMBCF4T83AZKLVOmyBa1HSIlXwKySGaDOBClZAToWQIpETQONyxAS+2J4pe9knd5X9EP7QicPYAsUwBnYaHwqSsd1QGmNv1rjL0AZ3pJTKDTorPGnsUE/tDvg+KsG70D96TiAMKvDbtYDO6Cyxt++LYadKpY8hthNtTaVGHLRJJ3R5mJy0SbVJp9D7FJaSyWXNUk1yGVt0lTyMWK3ZmtLySUnaQy55CZdSi7AHmis8U/+JOGWBji8AaYPVy6VELZvAAAAAElFTkSuQmCC) repeat-x; } img { margin-top: 50px; }
<header> <br /> <br /> <br /> <br /> </header> <img src="http://i.imgur.com/qKsVr.png" />
编辑#1:
谢谢你安娜的代码。 我把它和在其上的提高。
http://dabblet.com/gist/3401493
我不认为一个一致的背景将是可能的。
如果你要使用border-image
,那么它是不是一个跨浏览器的解决方案,因为IE不支持它。
此外,即使除了IE9每目前的浏览器版本同时支持CSS渐变(这将让你得到一个Z字形图案 )和border-image
,我最后一次检查(这是好几个月前,所以更好的测试这又),使用渐变色border-image
仅在WebKit的工作。 另外,我不认为,即使是在WebKit的工作原理与一个以上的梯度(你可以只设置一个边界图像和一个梯度一个图像),你需要两个梯度的Z字形图案。
对于CSS Z字形图案的代码是:
background: linear-gradient(#BCED91 49%, transparent 49%),
linear-gradient(-45deg, white 33%, transparent 33%) 0 50%,
white linear-gradient(45deg, white 33%, #BCED91 33%) 0 50%;
background-repeat: repeat-x;
background-size: 1px 100%, 40px 40px, 40px 40px;
如果你想这下面是在这一个同步的纹理,那么你必须确保它在重复同样的时间间隔( 40px
,但你也可以去20px
)。
编辑 :关于polyfills,你可以尝试列出的其中一个位置 : CSS3 PIE或cssSandpaper
(在现代的浏览器),可以使用SVGs创建简单的图画,并把它们作为嵌入式的CSS背景图像数据URI 。
这里是什么SVGs样子:
body { background: #888; }
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="8px" height="4px"> <polygon points="0,4 4,0 8,4" fill="#CC0000" /> </svg> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="8px" height="4px"> <polygon points="0,0 4,4 8,0" fill="#CC0000" /> </svg> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="8px" height="4px"> <polygon points="0,0 4,4 8,0" fill="#FFFFFF" /> </svg> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="8px" height="4px"> <polygon points="0,4 4,0 8,4" fill="#FFFFFF" /> </svg>
实施例1:
.zigzag-outside { position: relative; margin-top: 4px; margin-bottom: 4px; background-color: #CC0000; /* example content */ padding: 1em; font: bold medium sans-serif; color: #FFFFFF; } .zigzag-outside:before { content: ""; position: absolute; top: -4px; left: 0; right: 0; height: 4px; /* red up pointing triangle */ background-image: url("data:image/svg+xml,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%228px%22%20height%3D%224px%22%3E%3Cpolygon%20points%3D%220%2C4%204%2C0%208%2C4%22%20fill%3D%22%23CC0000%22%2F%3E%3C%2Fsvg%3E"); } .zigzag-outside:after { content: ""; position: absolute; bottom: -4px; left: 0; right: 0; height: 4px; /* red down pointing triangle */ background-image: url("data:image/svg+xml,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%228px%22%20height%3D%224px%22%3E%3Cpolygon%20points%3D%220%2C0%204%2C4%208%2C0%22%20fill%3D%22%23CC0000%22%2F%3E%3C%2Fsvg%3E"); }
<div class="zigzag-outside">Example 1</div>
实施例2:
.zigzag-inside { position: relative; /* example content */ width: 600px; height: 100px; background-image: url(http://i.stack.imgur.com/uOVfl.jpg); } .zigzag-inside:before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; /* white down pointing triangle */ background-image: url("data:image/svg+xml,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%228px%22%20height%3D%224px%22%3E%3Cpolygon%20points%3D%220%2C0%204%2C4%208%2C0%22%20fill%3D%22%23FFFFFF%22%2F%3E%3C%2Fsvg%3E"); } .zigzag-inside:after { content: ""; position: absolute; bottom: 0; left: 0; right: 0; height: 4px; /* white up pointing triangle */ background-image: url("data:image/svg+xml,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%228px%22%20height%3D%224px%22%3E%3Cpolygon%20points%3D%220%2C4%204%2C0%208%2C4%22%20fill%3D%22%23FFFFFF%22%2F%3E%3C%2Fsvg%3E"); }
<div class="zigzag-inside"></div>
改良的最小CSS:
div { background: #1ba1e2; position: relative; } div:after { content: ""; display: block; position: absolute; width: 100%; height: 30px; background: linear-gradient(-45deg, transparent 75%, #1ba1e2 0) 0 50%, linear-gradient(45deg, transparent 75%, #1ba1e2 0) 0 50%; background-size: 30px 30px; } /* Styles just for demo */ h1 { color: #fff; text-align: center; margin: 0; padding: 0.5em; }
<div> <h1>Zig Zag Borders</h1> </div>
如果你想删除重复值,您可以使用CSS变量AKA自定义属性 。 他们除了IE以外的工作无处不在。
:root { --background-color: #1ba1e2; --zigzag-item-size: 30px; } div { background: var(--background-color); position: relative; } div:after { content: ""; display: block; position: absolute; width: 100%; height: var(--zigzag-item-size); background: linear-gradient(-45deg, transparent 75%, var(--background-color) 0) 0 50%, linear-gradient(45deg, transparent 75%, var(--background-color) 0) 0 50%; background-size: var(--zigzag-item-size) var(--zigzag-item-size); } /* Styles just for demo */ h1 { color: #fff; text-align: center; margin: 0; padding: 0.5em; }
<div> <h1>Zig Zag Borders</h1> </div>
小记:
我用零0
梯度颜色停止,以避免重复以前的值,因为根据CSS3图像规格颜色停止位置不能小于前一个。
如果颜色停止拥有职位小于之前的任何颜色,停在列表中的指定位置,设置它的位置,等于之前的任何颜色停止的最大的指定位置。